GithubHelp home page GithubHelp logo

slickag / internetarchive-youtube Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alyetama/internetarchive-youtube

0.0 0.0 0.0 90 KB

๐Ÿš€ GitHub Action and CLI tool to archive YouTube channels by uploading the channel's videos to archive.org

Home Page: https://alyetama.github.io/internetarchive-youtube

Shell 0.53% Python 99.47%

internetarchive-youtube's Introduction

Internetarchive-YouTube

Poetry-build Supported Python versions PEP8

๐Ÿš€ GitHub Action and CLI tool to archive YouTube channels by automatically uploading an entire YouTube channel to archive.org in few clicks.

๐Ÿ“Œ Global Requirements

๐Ÿ”ง Usage


โšก๏ธ GitHub Action: Getting Started

Using internetarchive-youtube as a GitHub Action instructions
  1. Fork this repository.

  2. Enable the workflows in your fork.

  1. Create a backend database (or JSON bin).
  2. Add your Archive.org credentials to the repository's Actions secrets:
  • ARCHIVE_USER_EMAIL
  • ARCHIVE_PASSWORD
  1. Add a list of the channels you want to archive as a CHANNELS secret to the repository's Actions secrets:

The CHANNELS secret should be formatted like this example:

CHANNEL_NAME: CHANNEL_URL
FOO: FOO_CHANNEL_URL
FOOBAR: FOOBAR_CHANNEL_URL
SOME_CHANNEL: SOME_CHANNEL_URL

Don't add any quotes around the name or the URL, and make sure to keep one space between the colon and the URL.

  1. Add the database secret(s) to the repository's Actions secrets:

If you picked option 1 (MongoDB), add this secret:

  • MONGODB_CONNECTION_STRING The value of the secret is the database conneciton string.

If you picked option 2 (JSON bin), add this additional secret:

  • JSONBIN_KEY
    The value of this secret is the MASTER KEY token you copied from JSONbin.
  1. Run the workflow under Actions manually, or wait for it to run automatically every 6 hours.

That's it!

๐Ÿง‘โ€๐Ÿ’ป CLI: Getting Started

Using internetarchive-youtube as a CLI tool instructions

Requirements:

โฌ‡๏ธ Installation:

pip install internetarchive-youtube

# Install and login to internetarchive
pip install internetarchive
ia configure

๐Ÿ—ƒ๏ธ Backend database:

export MONGODB_CONNECTION_STRING=mongodb://username:password@host:port

# or add it to your shell configuration file:
echo "MONGODB_CONNECTION_STRING=$MONGODB_CONNECTION_STRING" >> "$HOME/.$(basename $SHELL)rc"
source "$HOME/.$(basename $SHELL)rc"
  • If you choose JSONBin, export the master key as an environment variable:
export JSONBIN_KEY=xxxxxxxxxxxxxxxxx

# or add it to your shell configuration file:
echo "JSONBIN_KEY=$JSONBIN_KEY" >> "$HOME/.$(basename $SHELL)rc"
source "$HOME/.$(basename $SHELL)rc"

โŒจ๏ธ Usage:

usage: ia-yt [-h] [-p PRIORITIZE] [-s SKIP_LIST] [-f] [-t TIMEOUT] [-n] [-a] [-c CHANNELS_FILE] [-S] [-C]

optional arguments:
  -h, --help            show this help message and exit
  -p PRIORITIZE, --prioritize PRIORITIZE
                        Comma-separated list of channel names to prioritize
                        when processing videos
  -s SKIP_LIST, --skip-list SKIP_LIST
                        Comma-separated list of channel names to skip
  -f, --force-refresh   Refresh the database after every video (Can slow down
                        the workflow significantly, but is useful when running
                        multiple concurrent jobs)
  -t TIMEOUT, --timeout TIMEOUT
                        Kill the job after n hours (default: 5.5)
  -n, --no-logs         Don't print any log messages
  -a, --add-channel     Add a channel interactively to the list of channels to
                        archive
  -c CHANNELS_FILE, --channels-file CHANNELS_FILE
                        Path to the channels list file to use if the
                        environment variable `CHANNELS` is not set (default:
                        ~/.yt_channels.txt)
  -S, --show-channels   Show the list of channels in the channels file
  -C, --create-collection
                        Creates/appends to the backend database from the
                        channels list

๐Ÿ—๏ธ Creating A Backend Database

Creating A Backend Database instructions
  • Option 1: MongoDB (recommended).
  • Option 2: JSON bin (if you want a quick start).
    • Sign up to JSONBin here.
    • Click on VIEW MASTER KEY, then copy the key.

๐Ÿ“ Notes

  • Information about the MONGODB_CONNECTION_STRING can be found here.
  • Jobs can run for a maximum of 6 hours, so if you're archiving a large channel, the job might die, but it will resume in a new job when it's scheduled to run.
  • Instead of raw text, you can pass a file path or a file URL with a list of channels formatted as CHANNEL_NAME: CHANNEL_URL or in JSON format {"CHANNEL_NAME": "CHANNEL_URL"}.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.