ryancwalsh/stack-exchange-backup-laravel

此包的最新版本(2.0.8)没有提供许可证信息。

我的目标是备份我所有StackExchange网站(Stack Overflow、SuperUser、https://apple.stackexchange.com/、https://askubuntu.com/等)上的所有问题和答案以及其他有价值的内容。

2.0.8 2021-04-21 14:57 UTC

This package is auto-updated.

Last update: 2024-09-20 17:11:54 UTC


README

此包允许您从每个Stack Exchange网站(Stack Overflow、Super User、Server Fault等)导出您最重要的数据(问题、答案、评论、收藏)的JSON文件。

安装

  1. 我认为该项目需要PHP 7.3或更高版本,所以请确保您的系统符合要求。
  2. https://stackapps.com/apps/oauth/register注册以获取客户端ID、客户端密钥和密钥。 (它是免费的、简单的、快速的。)
  3. 创建一个Laravel项目,并确保其正常工作:https://laravel.net.cn/docs/6.0/installation(例如composer create-project --prefer-dist laravel/laravel stackExchangeBackupDemo
  4. 将此包添加到您的Laravel项目中:vagrant@vboxHomestead:~/Code/MyLaravelProject$ composer require ryancwalsh/stack-exchange-backup-laravel:^2.0.6(但使用https://github.com/ryancwalsh/StackExchangeBackupLaravelPHP/releases上的最新版本标签号)。
  5. 运行php artisan vendor:publish,如果它给您一个选择,请选择从这个包中发布。
  6. 编辑您的Laravel项目的.env文件以包含您自己的StackApps值。以下是一个无效示例。
  7. 运行php artisan exportStackExchange。还有这些选项可用
    1. php artisan exportStackExchange --forgetCache是一个可用的选项,用于清除缓存的访问代码值。
    2. php artisan exportStackExchange --code="YOUR_CODE"是一个可用的选项,用于提供您已从StackExchange检索的代码。
    3. php artisan exportStackExchange --S3=false是一个可用的选项,用于跳过上传到Amazon S3。
  8. 按照终端中的说明,您将使用浏览器访问一个URL,该URL将为您提供临时访问令牌以便粘贴到终端中。
  9. 完成!JSON文件将出现在您的/storage/app/StackExchange文件夹中,这些文件的压缩包将出现在S3中。
# These are sample .env values:
STACKAPPS_CLIENT_ID=12227
STACKAPPS_CLIENT_SECRET=ydxGSDFHDF4DtZqCesr)yJIw((
STACKAPPS_KEY=JuWsTgfG2CqjdghkhdgBkQ((
AWS_ACCESS_KEY_ID=AKIAmb3mbn56mn6
AWS_SECRET_ACCESS_KEY=jl234k5jl23k45j23lj5
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=xyz

如果您使用此包,请通知我!

这是我制作的第一个包,我非常好奇是否有人会使用它。如果您尝试使用它,我非常希望您提交一个问题来打招呼(当然,还可以告诉我您的建议)。

如果您想发挥创意...

访问https://api.stackexchange.com/docs阅读文档,您可以修改ExportStackExchangeHelper.php以执行您想要的操作。Stack Exchange API非常出色。

帮助过我的其他资源

Ryan本地的难题。解决方案/破解方法。

“旧笔记”中显示内容的更简单方法。

2024-07-06_135807_ET

  1. 在WSL中,运行cd /mnt/c/code/stackExchangeBackupDemo2 && php artisan exportStackExchange --forgetCache
  2. 访问https://reqbin.com/post-online并登录。
  3. 在左侧面板中,点击“已保存”> stackoverflow。
  4. 将“代码”的值更改为第一步中URL的值。
  5. 点击发送。
  6. 从新的URL复制访问令牌。
  7. 将访问令牌粘贴到 C:\code\stackExchangeBackupDemo2\vendor\ryancwalsh\stack-exchange-backup-laravel\src\ExportStackExchangeHelper.php 文件中的“get”函数(见FIXNOW)。

旧笔记(过时?)

https://stackapps.com/questions/10497/suddenly-getting-couldnt-parse-client-id#comment20685_10497 通过在 reqbin.com/post-online 以 x-www-form-urlencoded 模式而不是 application/json 发布,我能够检索到 access_token。

url: https://stackoverflow.com/oauth/access_token/json

有效载荷:client_id=(来自_laravel.log)__ client_secret=(来自_laravel.log)__ code=(来自浏览器_URL)__ redirect_uri=https://stackexchange.com/oauth/login_success

从结果中获取 access_token。

C:\code\stackExchangeBackupDemo2\vendor\ryancwalsh\stack-exchange-backup-laravel\src\ExportStackExchangeHelper.php 文件中的 public function getAccessTokenJson() 函数的第一行放置如下行代码:return json_encode(['access_token'=> 'Ke4q2tsof5yfPUTf']);

在一个新的VSC窗口中,打开项目中的 C:\code\stack-exchange-backup-laravel\src\ExportStackExchangeHelper.php

请注意,这并非指向 C:\code\stackExchangeBackupDemo2\vendor\ryancwalsh\stack-exchange-backup-laravel\src\ExportStackExchangeHelper.php 的符号链接。