Download videos using youtube-dl and upload to the Internet Archive with metadata.
tubeupuses youtube-dl to download a Youtube video (or any other provider supported by youtube-dlc), and then uploads it with all metadata to the Internet Archive using the python module internetarchive.
It was designed by the Bibliotheca Anonoma to archive entire Youtube accounts and playlists to the Internet Archive.
This script strongly recommends Linux or some sort of POSIX system (such as Mac OS X).
Alternativly you should be able to get away with using Windows Terminal / WSL2.
ffmpeg, depending on what your distro prefers. Also install pip3 and git. The script prefers ffmpeg if found but will work with just libav. To install ffmpeg in ubuntu have the Universe repository enabled.
sudo apt-get install libav-tools ffmpeg python3-pip git && sudo apt remove youtube-dl
sudo -H python3.8 -m pip install -U pip tubeup
Perodically upgrade tubeup and it's dependencies by running:
sudo -H python3.8 -m pip install -U tubeup youtube-dl internetarchive
If you don't already have an Internet Archive account, register for one to give the script upload privileges.
Configure internetarchive with your Internet Archive account.
You will be prompted for your login credentials for the Internet Archive account you use.
Once configured to upload, you're ready to go.
tubeup - Download a video with Youtube-dlc, then upload to Internet Archive, passing all metadata.
Usage: tubeup ... [--username ] [--password ] [--metadata=...] [--proxy ] [--quiet] [--debug] [--use-download-archive] [--output ] tubeup -h | --help tubeup --version
Arguments: Youtube-dlc compatible URL to download. Check Youtube-dlc documentation for a list of compatible websites. --metadata= Custom metadata to add to the archive.org item.
Options: -h --help Show this screen. --proxy Use a proxy while uploading. --username Provide a username, for sites like Nico Nico Douga. --password Provide a password, for sites like Nico Nico Douga. --use-download-archive Record the video url to the download archive. This will download only videos not listed in the archive file. Record the IDs of all downloaded videos in it. --quiet Just print errors. --debug Print all logs to stdout. --output Youtube-dlc output template.
You can specify custom metadata with the
--metadataflag. For example, this script will upload your video to the Community Video collection by default. You can specify a different collection with the
Any arbitrary metadta can be added to the item, with a few exceptions. You can learn more about archive.org metadata here.
Archive.org users can upload to to four open collections:
Note that care should be taken when uploading entire channels. Read the appropraite section in this guide for creating collections, and contact the collections staff if you're uploading a channel or multiple channels on one subject (gaming or horticulture for example), they'll create a collection for you or merge any uploaded items based on the Youtube uploader name that are already up into a new collection.
Dumping entire channels into Community Video is abusive and may get your account locked. Talk to the admins first before doing large uploads it's better to ask for guidence or help first than run afowl with the rules.
If you do not own a collection you will need to be added as an admin for that collection if you want to upload to it Talk to the collection owner or staff if you need assistance with this.
As apart of the metadata collection process, youtube-dl (a dependency of Tubeup) prints out the full file location of the video file as well as the external IP address of the machine mirroring the video.
This is apart of the metadata process by youtube-dl. That one string is apart of the JSON metadata uploaded to Archive.org and is availble to the public. It is located in each items
If you do not feel comfortable with this, send a pull request that reliably removes both IPv6/6 addresses and the filepath, or do not use Tubeup.
internetarchivelibrary calls, cleansing item output, subtitles collection, and numerous small improvements over time.
Copyright (C) 2020 Bibliotheca Anonoma
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.