ryancwalsh / stack-exchange-backup-laravel
我的目标是备份我所有StackExchange网站(Stack Overflow、SuperUser、https://apple.stackexchange.com/、https://askubuntu.com/等)上的所有问题和答案以及其他有价值的内容。
Requires
- php: ^7.3
- guzzlehttp/guzzle: ^7.0.1
- laravel/framework: 8.12.*
- laravel/helpers: ^1.1
- league/flysystem-aws-s3-v3: ^1.0
- spatie/guzzle-rate-limiter-middleware: ^1.0
- spatie/laravel-backup: ^6.4
README
此包允许您从每个Stack Exchange网站(Stack Overflow、Super User、Server Fault等)导出您最重要的数据(问题、答案、评论、收藏)的JSON文件。
安装
- 我认为该项目需要PHP 7.3或更高版本,所以请确保您的系统符合要求。
- 在https://stackapps.com/apps/oauth/register注册以获取客户端ID、客户端密钥和密钥。 (它是免费的、简单的、快速的。)
- 创建一个Laravel项目,并确保其正常工作:https://laravel.net.cn/docs/6.0/installation(例如
composer create-project --prefer-dist laravel/laravel stackExchangeBackupDemo) - 将此包添加到您的Laravel项目中:
vagrant@vboxHomestead:~/Code/MyLaravelProject$ composer require ryancwalsh/stack-exchange-backup-laravel:^2.0.6(但使用https://github.com/ryancwalsh/StackExchangeBackupLaravelPHP/releases上的最新版本标签号)。 - 运行
php artisan vendor:publish,如果它给您一个选择,请选择从这个包中发布。 - 编辑您的Laravel项目的
.env文件以包含您自己的StackApps值。以下是一个无效示例。 - 运行
php artisan exportStackExchange。还有这些选项可用php artisan exportStackExchange --forgetCache是一个可用的选项,用于清除缓存的访问代码值。php artisan exportStackExchange --code="YOUR_CODE"是一个可用的选项,用于提供您已从StackExchange检索的代码。php artisan exportStackExchange --S3=false是一个可用的选项,用于跳过上传到Amazon S3。
- 按照终端中的说明,您将使用浏览器访问一个URL,该URL将为您提供临时访问令牌以便粘贴到终端中。
- 完成!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非常出色。
帮助过我的其他资源
- 我使用https://stackedit.io/app创建了此README.md文件。
- https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/
Ryan本地的难题。解决方案/破解方法。
“旧笔记”中显示内容的更简单方法。
2024-07-06_135807_ET
- 在WSL中,运行
cd /mnt/c/code/stackExchangeBackupDemo2 && php artisan exportStackExchange --forgetCache。 - 访问https://reqbin.com/post-online并登录。
- 在左侧面板中,点击“已保存”> stackoverflow。
- 将“代码”的值更改为第一步中URL的值。
- 点击发送。
- 从新的URL复制访问令牌。
- 将访问令牌粘贴到
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 的符号链接。