Von YouTube Channel-ID zur YouTube Videoliste

YouTube-Kanäle analysieren, indem man Video-IDs extrahiert, die Daten kombiniert und visualisiert, um wertvolle Einblicke in die Videoaktivitäten der Benutzer zu gewinnen.

YouTube Channel-ID identifizieren

Um die Channel-ID des YouTube-Kanals der Bundeszentrale für politische Bildung (bpb) zu erhalten, folge diesen Schritten:

  1. Öffne YouTube: Gehe auf die YouTube-Website (https://www.youtube.com).

  2. Suche nach dem Kanal: Gib in der Suchleiste “Bundeszentrale für politische Bildung” ein und drücke Enter.

  3. Wähle den Kanal aus: Klicke auf den Kanalnamen “Bundeszentrale für politische Bildung” in den Suchergebnissen, um zur Kanalseite zu gelangen.

  4. Kanalinformationen: Klicke auf mehr Informationen und wähle Kanal teilen um die Kanal-ID zu erhalten.

  5. Alternative Methode über den Quellcode:

    • Rechtsklicke auf die Kanalseite und wähle “Seitenquelltext anzeigen” oder drücke Strg+U.
    • Suche im Quelltext nach externalId. Du kannst dies tun, indem du Strg+F drückst und externalId eingibst.
    • Die Channel-ID wird in der Nähe von externalId angezeigt, z.B. "externalId":"UCxyz1234567890".

Jetzt hast du die Channel-ID des YouTube-Kanals der Bundeszentrale für politische Bildung.

channel_ids = {
    "Bundeszentrale für politische Bildung":"UCKE_un0UNf7F_gYc_C_Yndw",
    "Berliner Landeszentrale für politische Bildung":"UCZVHCB1vBRI1vO38uXZnpDw",
    "Brandenburgische Landeszentrale für politische Bildung":"UCmNrZHH7T_JAvTc7Tn6g7dA",
    "Landeszentrale für politische Bildung NRW":"UCIBkUJOhqg4Bs7hTyuDTm-A",
    "Landeszentrale für politische Bildung Baden-Württemberg":"UCST3n--AgFPCq6CXoKG3QRA",
    "Landeszentrale für politische Bildung Sachsen-Anhalt":"UC4HyLNY8q7TpNP1Gp_L_2qg",
    "Landeszentrale für politische Bildung Thüringen":"UCX_D7xAzR5F38aXz8dGbRjg",
}
# Channel-IDs in ein Pandas DataFrame umwandeln
df = pd.DataFrame(list(channel_ids.items()), columns=['Kanal', 'ID'])

df

Funktion zur Video-ID-Ermittlung

In diesem Abschnitt definieren wir eine Funktion, um alle Videos von einem YouTube-Kanal zu erhalten.

# prompt: write a python function to get all videos from a for the input of a youtube channel id and return the list of video ids. only prepare the function. install any packages and import libraries. dont require an api key. use scrapetube

!pip install scrapetube

from scrapetube import get_channel
import pandas as pd

def get_video_ids(channel_id):
    video_ids = []
    try:
        for video in get_channel(channel_id):
            video_ids.append(video['videoId'])
    except Exception as e:
        print(f"An error occurred: {e}")
    return video_ids

Video-IDs für jeden Kanal abrufen

In diesem Abschnitt rufen wir die Video-IDs für jeden Kanal ab.

# prompt: for each channel id retrieve the list of video ids using the get_video_ids function and save them to a list "video_id"

video_id = [get_video_ids(channel_id) for channel_id in channel_ids.values()]
# Spalte 'Videos' zum DataFrame hinzufügen
df['Videos'] = video_id

df.head()

Entfalten der Video-ID-Spalte

In diesem Abschnitt erweitern wir die Video-ID-Spalte, sodass jede Zeile nur eine Video-ID enthält.

# prompt: please explode the video_id column so that each row has only one video_id. please show only the explode command.

df = df.explode('Videos')

Visualisierung der Videoanzahl

In diesem Abschnitt visualisieren wir die Anzahl der Videos pro Benutzername.

# prompt: please visualize the value counts. x axis user_name and y axis number of videos

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Assuming the provided code has been executed and df is available

# Calculate video counts per user
video_counts = df['Kanal'].value_counts()

# Create the plot
plt.figure(figsize=(12, 6))  # Adjust figure size as needed
sns.barplot(x=video_counts.index, y=video_counts.values)
plt.xlabel("Kanal")
plt.ylabel("Zahl der Videos")
plt.title("Zahl der Videos per Kanal")
plt.xticks(rotation=45, ha="right")  # Rotate x-axis labels for readability
plt.tight_layout() # Adjust layout to prevent labels from overlapping
plt.show()

Speichern des kombinierten DataFrames

In diesem Abschnitt speichern wir den kombinierten DataFrame als komprimierte CSV-Datei.

# prompt: save the comvbined df to a compressed csv

df.to_csv('df.csv.gz', compression='gzip', index=False)

Fazit

Dieses Notebook zeigt, wie man YouTube-Kanäle analysiert, indem man Video-IDs extrahiert, die Daten kombiniert und visualisiert, um wertvolle Einblicke in die Videoaktivitäten der Benutzer zu gewinnen.