DEV Community

Cover image for Developing a YouTube Subscription Analysis Application with Python
Klemens
Klemens

Posted on • Updated on

Developing a YouTube Subscription Analysis Application with Python

YouTube has grown into a vast platform where users follow various channels, each representing different topics and interests. Managing these subscriptions and understanding what content you are mostly engaged with can be overwhelming. In this article, we'll walk through the creation of a Python application that analyzes a user's subscriptions and visualizes the distribution of topics.

Step 1: Authenticate with the YouTube API

First, we need to authenticate with the YouTube Data API v3 to access information about a user's subscriptions.

Install the Google Client Library

pip install --upgrade google-auth-oauthlib google-auth-httplib2 google-api-python-client
Enter fullscreen mode Exit fullscreen mode

Authenticate and Save Credentials

import os
import pickle
import google_auth_oauthlib.flow
import googleapiclient.discovery

scopes = ["https://www.googleapis.com/auth/youtube.force-ssl"]

def get_authenticated_service():
    credentials_path = "credentials.pickle"
    if os.path.exists(credentials_path):
        with open(credentials_path, "rb") as f:
            credentials = pickle.load(f)
    else:
        flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
            "client_secret.json", scopes)
        credentials = flow.run_console()
        with open(credentials_path, "wb") as f:
            pickle.dump(credentials, f)

    youtube = googleapiclient.discovery.build("youtube", "v3", credentials=credentials)
    return youtube
Enter fullscreen mode Exit fullscreen mode

Make sure to download the client_secret.json file from your Google Cloud Console.

Step 2: Retrieve Subscriptions and Analyze Topics

After authentication, we can retrieve subscriptions and count the topics using a defaultdict.

Getting Subscriptions and Topics

from collections import defaultdict

def get_subscriptions(youtube):
    subscriptions = []
    next_page_token = None
    topic_count = defaultdict(int)

    while True:
        response = youtube.subscriptions().list(
            part="snippet",
            mine=True,
            maxResults=50,
            pageToken=next_page_token
        ).execute()

        subscriptions += response["items"]
        next_page_token = response.get("nextPageToken")

        if next_page_token is None:
            break

    for subscription in subscriptions:
        snippet = subscription["snippet"]
        channelId = snippet["resourceId"]["channelId"]
        response = youtube.channels().list(
            part="topicDetails",
            id=channelId
        ).execute()

        items = response.get("items", [])
        if items:
            topicDetails = items[0].get("topicDetails", {})
            topicCategories = topicDetails.get("topicCategories", [])
        else:
            topicCategories = []

        for topic in topicCategories:
            topic_count[topic] += 1

    return topic_count
Enter fullscreen mode Exit fullscreen mode

Step 3: Visualize the Data with Matplotlib

Finally, we visualize the counted topics using Matplotlib.

Plotting the Topics

import matplotlib.pyplot as plt

def plot_topics(topic_count):
    topics, counts = zip(*topic_count.items())
    plt.bar(topics, counts)
    plt.xlabel('Topics')
    plt.ylabel('Counts')
    plt.title('Distribution of Topics in YouTube Subscriptions')
    plt.xticks(rotation='vertical')
    plt.show()
Enter fullscreen mode Exit fullscreen mode

Running the Full Code

if __name__ == "__main__":
    youtube = get_authenticated_service()
    topic_count = get_subscriptions(youtube)
    plot_topics(topic_count)
Enter fullscreen mode Exit fullscreen mode

Conclusion

We've created an application that authenticates with the YouTube API, analyzes subscriptions, and visualizes the distribution of topics. This is an excellent starting point for anyone interested in YouTube data analysis.

You can find the full code in the GitHub repository

GitHub logo kwisser / youtube-subscription-analyzer

YouTube Subscriptions Analyzer is a Python script that authenticates with the YouTube API, fetches a user's subscriptions, and visualizes the distribution of topics in a pie chart.

YouTube Subscriptions Analyzer

YouTube Subscriptions Analyzer is a Python script that authenticates with the YouTube API, fetches a user's subscriptions, and visualizes the distribution of topics in a pie chart.

Features

  • Retrieves a user's YouTube subscriptions
  • Aggregates topics across all subscriptions
  • Visualizes the distribution of topics in a pie chart

Screenshot of the app

Requirements

  • Python 3.6 or higher
  • Google API credentials
  • Libraries: google-auth-oauthlib, googleapiclient, matplotlib

Setup

  1. Clone the Repository:

    git clone https://github.com/kwisser/YoutubeSubscriptions.git
    cd youtube-subscriptions-analyzer
    
  2. Install Dependencies:

    pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client matplotlib
    Enter fullscreen mode Exit fullscreen mode
  3. Set up Google API credentials:

    • Visit the Google Developer Console.
    • Create a project and set up the YouTube API v3 credentials.
    • Download the client_secret.json file and place it in the project's root directory.

Usage

Run the script with:

python main.py
Enter fullscreen mode Exit fullscreen mode

Follow the on-screen instructions to authenticate with your Google account. The script will fetch your YouTube subscriptions and generate a pie chart.

Contributing

If you'd like to…

.

Top comments (0)