- Backend
- Docker
- Frontend
- Tampermonkey
- Browsers which can install Tampermonkey
$ git clone git@github.com:FlandreDaisuki/Twitter-Media-Downloader.git
$ cd Twitter-Media-Downloader
# Modify .env values
# The most important value is `DOWNLOAD_PATH`
# Please fill it with your host download directory in absolute path
$ mv .env.example .env
$ docker compose up -d
$ docker compose logs twitter-media-downloader
twitter-media-downloader | Server running at http://0.0.0.0:10001/
twitter-media-downloader |
twitter-media-downloader | Usage:
twitter-media-downloader | Download userscript:
twitter-media-downloader | GET http://0.0.0.0:10001/twitter-media-downloader.user.js
twitter-media-downloader |
twitter-media-downloader | Start an async downloading task by twitter video url:
twitter-media-downloader | GET http://0.0.0.0:10001/download?url=https://x.com/{userId}/status/{tweetId}
twitter-media-downloader |
twitter-media-downloader | Video Name:
twitter-media-downloader | {userId}@twitter-{tweetId}.mp4
twitter-media-downloader |
twitter-media-downloader | Destination:
twitter-media-downloader | /download
twitter-media-downloader |
twitter-media-downloader | Versions:
twitter-media-downloader | yt-dlp: 2024.05.27
Copy the userscript url to browser then it will trigger Tampermonkey installation.
If you are familiar with yt-dlp
, you may want to pass other args. You can use --
after /app/server.mjs
.
e.g.
services:
twitter-media-downloader:
image: ghcr.io/flandredaisuki/twitter-media-downloader
container_name: twitter-media-downloader
restart: unless-stopped
ports:
- "${PORT:-10001}:10001"
environment:
- "TZ=${TZ}"
- "LANG=${LANG}"
- "VIDEO_NAMING_PATTERN=${VIDEO_NAMING_PATTERN}"
- "IMAGE_NAMING_PATTERN=${IMAGE_NAMING_PATTERN}"
volumes:
- "${DOWNLOAD_PATH}:/download"
- "/path/to/my/firefox/profile:/firefox-profile:ro"
command: /app/server.mjs -- --cookies-from-browser firefox:/firefox-profile
To reduce image size, I think rewrite server by python3, which is a dependency of yt-dlp
, is a good idea.
The MIT License (MIT)
Copyright (c) 2019-2024 FlandreDaisuki