README.md 1.3 KB

YouTube Info Fetch

Given a list of Video IDs, fetch them and store them to a SQLite3 DB cache for subsequent fetches.

Store them by authorized user and with a timestamp, so they can be fetched with a max age.

Setup

A YouTube API project with client info stored in .data/yt-client-secret.json, and optionally channel config stured in .data/session_{channel_id}.json where channel_id is configured in youtube_info_fetch.py as AUTH_CHANNEL_ID.

A template of the format for .data/session_{channel_id}.json config can be found in session_sample.json. It it's not present then it uses app level access, which is sufficient.

It doesn't handle login or refresh token, which I think an earlier dev practice covered. The credentials is the flow.credentials from google_auth_oauthlib.flow.Flow.from_client_secrets_file after fetch_token is called.

Usage

Run python youtube_info_fetch.py after setting video_ids and optionally AUTH_CHANNEL_ID at the top of the file.

Add more video_ids between runs to see cache behavior.

Data is stored in .data/youtube.db and can be inspected with any SQLite3 library.

Dev Practice

This is a dev practice that touches on these themes:

  • SQLite3
  • Caching
  • YouTube API
  • Layered Code: Model

It's about the 5th practice I've done where I've broken the code into a "model" layer.