Youtube api: download all videos from channel


Introduction and requirements

In this tutorial, we are going to create a function called download_all_video_in_channel that will download all the videos from a youtube channel id.

For using the code in this tutorial you will require to install requests and get a google API key.

To install requests execute:

pip install requests if(typeof __ez_fad_position != 'undefined'){__ez_fad_position('div-gpt-ad-tutorials_technology-medrectangle-3-0')}; For getting the API key follow this google documentation

Source code to download videos from channel

The next python code will scrape all videos from a channel. The final result will be youtube video urls.

import requests

def download_all_video_in_channel(api_key, channel_id):

base_video_url = 'https://www.youtube.com/watch?v=' base_search_url = 'https://www.googleapis.com/youtube/v3/search?'

first_url = base_search_url+ f'key={api_key}&channelId={channel_id}&part=snippet,id&order=date&maxResults=25'

video_links = [] url = first_url while True: resp = requests.get(url).json()

for i in resp['items']: if i['id']['kind'] == "youtube#video": video_links.append(base_video_url + i['id']['videoId'])

try: next_page_token = resp['nextPageToken'] url = first_url + '&pageToken={}'.format(next_page_token) except: break return video_links

The code uses base_search_url to search for all the videos on a channel. The function has a while True loop that will fetch all the pages of the channel. Since the API could return different objects, before adding the link to the video_links, every result is filtered by kind. The nextPageToken is used to browse in all the pages of the channel.