Bulk import YouTube channels videos into PeerTube channels and playlists
Go to file
Samuel Ortion 9eb3e9ca09 Fix service 2022-07-06 08:14:17 +02:00
dist Fix service 2022-07-06 08:14:17 +02:00
src Updated already uploaeded check 2021-07-02 17:42:10 +02:00
.gitignore Add systemd services 2022-07-06 07:45:20 +02:00
LICENSE You2Peer v1 2022-07-06 07:24:47 +02:00
README.md Fix service 2022-07-06 08:14:17 +02:00
config.json.sample You2Peer v1 2022-07-06 07:24:47 +02:00



Python script that mirrors YouTube Channels or playlist on a PeerTube instance


  • youtube-dl (both on machine running this script, and on peertube host)
  • python3 requests
  • cURL (to retrieve credentials first time)
  • jq


git clone https://forge.chapril.org/UncleSamulus/you2peer.git
cd you2peer


Copy config file sample

cp config.json.sample config.json

Get PeerTube config: (Populate config.json with json response values..)

# Get client tokens
curl https://peertube.example.com/api/v1/oauth-clients/local

# Get user token
curl -X POST \
 -d "client_id=zip6rwzni6hplvtw3dp9t02hnkfugpzu&client_secret=AjWiOapPltI6EnsWQwlFarRtLh4u8tDt&grant_type=password&response_type=code&username=your_user&password=your_password" \

First create target channels and playlists (using an admin account) and then Get channels id, and playlists id using api in navigator (to be added in config.json):

Then you can run the script on a regular basis (each day for instance), the previously added vidéos are specified in ./data/channel.playlist.previous.json, to not to uploady vidéo again.

python3 ./src/mirror.py

If you run the script on another machine, make sure to keep the *.previous.json file in ./data, to upload only the new videos.


Instead of running this script regularly, you could setup a systemd timer to launch the script daily (for instance).

cp ./dist/you2peer.service /etc/systemd/system/you2peer.service
cp ./dist/you2peer.timer /etc/systemd/system/you2peer.timer
sudo systemctl daemon-reload
sudo systemctl enable --now you2peer.timer


  • Samuel ORTION

Others are welcome !


  • GNU GPL v3 or later (see LICENSE)