diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8173c6 --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +# youtube-cdl +*Command line tool based on youtube-dl to easily download selected channels from your subscriptions.* + +![Screenshot](screenshot.png) + +This tool is very handy if you want to hoard a lot of videos, but not all of them. + +## Setup: + +1. Clone repo & install dependencies: +```bash +git clone https://github.com/anatolykopyl/youtube-cdl.git +cd youtube-cdl +pip install -r requirements.txt +``` +2. Create or select a project in the [API Console](https://console.developers.google.com/). +Complete the following tasks in the API Console for your project: + + 1. In the [library panel](https://console.developers.google.com/apis/library), + search for the YouTube Data API v3. Click into the listing for that API and make + sure the API is enabled for your project. + + 2. In the [credentials panel](https://console.developers.google.com/apis/credentials), + create two credentials: + + * **Create an API key.** You will use the API key to make API requests that + do not require user authorization. For example, you do not need user + authorization to retrieve information about a public YouTube channel. + * **Create an OAuth client ID.** + + This will need you to configure your + consent screen: + + * Only "App name", "User support email" and "Developer contact email" fields are required. + * On "Test users" step add yourself (your email address) + + After you've set up your consent screen go back to the "Credentials" tab + and press "Create credentials". + + Set the application type to Desktop App. + + Download the JSON file that contains your OAuth 2.0 credentials. The file + has a name like client_secret_CLIENTID.json, where CLIENTID is the client ID + for your project. + +3. Rename the downloaded file to `client_secrets.json` and put it in the project root. + +4. Run the script: +```bash +python main.py +``` + +## Usage: + +* Run the script and go through your subscriptions one by one: +```bash +python main.py +``` + +* Download all the videos from all channels you're subscribed to: +```bash +python main.py -a +``` + +* Download into a specified directory: +```bash +python main.py -o path/to/dir +``` + +When you go through all of your subscriptions and mark all of them as `y/n` your selections +will be saved in `download_list.json`. + +If for some reason you stopped the script, you can +continue downloading without going through all of your subscriptions again by running +`python main -i download_list.json`. + +Or if you made a mistake while going through the channels you can just edit `download_list.json` +and rerun with it passed as an argument. diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..32604ac Binary files /dev/null and b/screenshot.png differ