ig-pixelfed-mirror/README.md

72 lines
2.7 KiB
Markdown
Raw Normal View History

2021-02-09 21:32:11 +00:00
# Instagram -> Pixelfed Mirror in Python (3+)
This Python scripts with a simple HTTP API to use it, can **mirror multiple accounts from Instagram to your Pixelfed** instance.
2021-02-09 21:47:22 +00:00
## Disclaimer
Mirroring Instagram accounts **will copy (clone) the images and videos from Instagram** to your server, thus moving the data sovereignty to you as an Admin.
Always make sure you mirror accounts whos **content is not strictly copyrighted (or branded) and keep the tagging system of the source code** that marks accounts on Pixelfed as Mirrors.
2021-02-09 21:55:59 +00:00
**Users** of your Pixelfed instance have to know **this accounts are not real accounts** as someone on Instagram could create a real Pixelfed account in the future.
2021-02-09 21:47:22 +00:00
## Pre-requisites
2021-02-09 21:32:11 +00:00
- You **need an Instagram account** to make this bot work.
- **A Pixelfed instance** you own. It must be hosted or managed by you (you need shell access for **php artisan commands**)
- **Python 3+ installed** on the same machine as the Pixelfed instance (this is easy, mostly all standard Debian based Linux systems have python3)
2021-02-09 21:55:59 +00:00
- A bit **more disk space** for Pixelfed media storage. (It depends on how many accounts you mirror and how often that accounts post on IG)
2021-02-09 21:32:11 +00:00
- **Patch 1 file** on Pixelfed deployed code (being on docker or not)
## What can you mirror?
- Posts with **images** (multiple images support).
- Posts with **videos** (only 1 video).
- Each **posts captions** (post description) is **represented as splitted comments**.
## What can't you mirror (yet) ?
- **Stories**. (will support that soon)
2021-02-09 21:55:59 +00:00
# Installation
As i said on the Pre-requisites, you will need to **patch the following files on Pixelfed** running code:
This patch is **needed to disable Pixelfed API rate limiting completely** as it might pop-up when using your mirror bot.
We asume your Pixelfed installation is at `/var/www` (if it isn't, just **change the steps to match your installation**)
`/var/www/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php`
Add `return 99999999;` after the line where it checks if the user is authenticated.
```php
/**
* Resolve the number of attempts if the user is authenticated or not.
*
* @param \Illuminate\Http\Request $request
* @param int|string $maxAttempts
* @return int
*/
protected function resolveMaxAttempts($request, $maxAttempts)
{
if (Str::contains($maxAttempts, '|')) {
$maxAttempts = explode('|', $maxAttempts, 2)[$request->user() ? 1 : 0];
}
if (! is_numeric($maxAttempts) && $request->user()) {
return 99999999;
$maxAttempts = $request->user()->{$maxAttempts};
}
return (int) $maxAttempts;
}
```