This project is based on the original code of the inteoryx / twitter-video-dl project, which allows users to download X(Twitter) App videos as MP4 files using Python, FFmpeg and URLs without the need for API keys. I forked this project for use in iOS Shortcuts application.
One video per post | Mixing images and videos in one post(*1) | Mixing images and videos in a thread(*1) |
---|---|---|
Original Post Link(Media) | Original Post Link(Media) | Original Post Link(Media) |
(*1): If the "save_option"
of the "image"
key defined in settings.json is true
, the video and image are saved; if false
, only the video is saved.
Note
- Use the ffmpeg command to save GIF files.
- GIF files are converted from MP4 files; if you do not need to save GIF files, set "convert_gif_flag": false
in settings.json
.
- For shortcuts, the a-Shell application used supports ffmpeg, so installation is not necessary.
- The actual version information displayed below may vary from one system to another; but if a message such as ffmpeg: command not found appears instead of the version information, FFmpeg is not properly installed.
In order to execute the code, FFmpeg must be installed and accessible via the $PATH environment variable.
There are a variety of ways to install FFmpeg, such as the official download links, or using your package manager of choice (e.g. sudo apt install ffmpeg on Debian/Ubuntu, brew install ffmpeg on OS X, etc.).
Regardless of how FFmpeg is installed, you can check if your environment path is set correctly by running the ffmpeg command from the terminal, in which case the version information should appear, as in the following example (truncated for brevity):
ffmpeg
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Note
- Currently only Japanese language support is available.
- It has been tested on iPhone and iPad, but not on Mac.
- Please note that the shortcuts used are different for iPhone, iPad and Mac.
Important
Be sure to review the notes, limitations, and comments in the comments when performing shortcuts.
- Download Shortcuts and a-Shell from the AppStore
- Add Shortcut to save Twitter videos
- twitter-video-dl-sc setup (iCloud Link)
- twitter-video-dl-sc (iCloud Link)
- Run the twitter-video-dl-sc setup setup shortcut
- DL git command from a-Shell-commands
- git clone twitter-video-dl-for-sc
- Run the twitter-video-dl-sc from a Twitter share (See demo video)
- If you do not specify an output file name, the file name is after the user _ id in the URL.
- Replace '/' with '-' in the file name and new line ith '_'.
Only differences from the procedure for iPhone and iPad are described.
-
Add Shortcut to save Twitter videos
- twitter-video-dl-sc setup (iCloud Link)
- twitter-video-dl-sc-for-mac-browser (iCloud Link)
-
When executing the shortcut, start the video-posted post in the browser that you start on your Mac, and then execute twitter-video-dl-sc-for-mac-browser from the tab Sharing. If it saves successfully, the destination will be displayed. (See demo video)
Warning
Browsers that have been tested are chrome and brave.
Note
Please check See demo video
- extensions > load unpackaged extensions > Local Package twitter-video-dl-send
- Start the server (
poetry run python twitter-video-dl-server.py
) - Open the X(Twitter) web page where the video was posted.
- Specify the filename and URL (not required) in the extension and run the process of saving the video
- If there are no errors, the video will be saved in the output folder
- Clone the repo and pip install -r requirements.txt (just the requests library)
- See a video on twitter that you want to save.
- Invoke the script, e.g.:
# File name specified
python twitter-video-dl-for-sc.py https://twitter.com/i/status/1650804112987136000 output_file_name
# Without file name
python twitter-video-dl-for-sc.py https://twitter.com/i/status/1650804112987136000 ""
Done, now you should have an mp4 file of the highest bitrate version of that video available.
From time to time, every week or so, Twitter will add some new request parameters that they expect from callers asking for their content. Twitter refers to these as "features" or "variables". The twitter-video-dl script will try to detect when a new feature or variable has been added and automatically accommodate the new element. This is not foolproof though. It's possible the script will fail with an error message. If it does, please open an issue (or send a PR).
I have tested this with the 10 video files listed in test_videos.txt and it seems to work. Highly possible there are other variants out there that this won't work for. If you encounter such, please submit an issue and include the URL that doesn't work. If the script doesn't work double check you have the URL right.
twitter-video-dl-for-sc uses ffmpeg for saving videos. Therefore, we provide a test environment for twitter-video-dl-for-sc in addition to the test cases for twitter-video-dl.
If you get an error with the specified URL, please register an issue. If you want to test individually, you can test in advance by adding the URL of the post where the video was posted to test_data.toml.
Note
- The test environment depends on pytest, which is added as part of the dev environment dependency files with the poetry install
command.
- You can run the test command in poetry run pytest --html=pytest-html/report.html
.