[PYTHON] Holen Sie sich YouTube Live-Chat-Felder in Echtzeit mit API

Hinweis

YouTube-Nutzungsbedingungen Verwenden Sie den folgenden Code auf eigenes Risiko.

Holen Sie sich in Echtzeit mit der YouTube-API

Überblick

Vor kurzem gab es eine Geschichte über Spoofing in der YouTube-Chat-Spalte und ein Leck in einer Spalte der Spacha. Als eine der Lösungen habe ich unten geschrieben, wie man das Chat-Feld mithilfe der YouTube-API erhält.

Ausgabe


[nach Benutzername 1 Kanal URL 1]
Kommentar 1
[nach Benutzername 2 Kanal URL 2]
Kommentar 2
[nach Benutzername 3 Kanal URL 3]
Betrag vom Benutzernamen 3: "Kommentar 3"← Spacha sieht so aus

start :  2020-06-07T05:21:49.871000Z ← 1. Mal der erworbenen Chat-Gruppe +9 Stunden in Japan
end   :  2020-06-07T05:22:02.846000Z   ←     "das letzte Mal

fließen

Quellcode

record_chat.py


import time
import requests
import json

#YouTube-API-Schlüssel im Voraus erhalten
YT_API_KEY = '***************************************'




def get_chat_id(yt_url):
    '''
    https://developers.google.com/youtube/v3/docs/videos/list?hl=ja
    '''
    video_id = yt_url.replace('https://www.youtube.com/watch?v=', '')
    print('video_id : ', video_id)

    url    = 'https://www.googleapis.com/youtube/v3/videos'
    params = {'key': YT_API_KEY, 'id': video_id, 'part': 'liveStreamingDetails'}
    data   = requests.get(url, params=params).json()

    liveStreamingDetails = data['items'][0]['liveStreamingDetails']
    if 'activeLiveChatId' in liveStreamingDetails.keys():
        chat_id = liveStreamingDetails['activeLiveChatId']
        print('get_chat_id done!')
    else:
        chat_id = None
        print('NOT live')

    return chat_id




def get_chat(chat_id, pageToken, log_file):
    '''
    https://developers.google.com/youtube/v3/live/docs/liveChatMessages/list
    '''
    url    = 'https://www.googleapis.com/youtube/v3/liveChat/messages'
    params = {'key': YT_API_KEY, 'liveChatId': chat_id, 'part': 'id,snippet,authorDetails'}
    if type(pageToken) == str:
        params['pageToken'] = pageToken

    data   = requests.get(url, params=params).json()

    try:
        for item in data['items']:
            channelId = item['snippet']['authorChannelId']
            msg       = item['snippet']['displayMessage']
            usr       = item['authorDetails']['displayName']
            #supChat   = item['snippet']['superChatDetails']
            #supStic   = item['snippet']['superStickerDetails']
            log_text  = '[by {}  https://www.youtube.com/channel/{}]\n  {}'.format(usr, channelId, msg)
            with open(log_file, 'a') as f:
                print(log_text, file=f)
                print(log_text)
        print('start : ', data['items'][0]['snippet']['publishedAt'])
        print('end   : ', data['items'][-1]['snippet']['publishedAt'])

    except:
        pass

    return data['nextPageToken']




def main(yt_url):
    slp_time        = 10 #sec
    iter_times      = 90 #Mal
    take_time       = slp_time / 60 * iter_times
    print('{}Geplant, um in Minuten zu enden'.format(take_time))
    print('work on {}'.format(yt_url))

    log_file = yt_url.replace('https://www.youtube.com/watch?v=', '') + '.txt'
    with open(log_file, 'a') as f:
        print('{}Notieren Sie das Chatfeld von.'.format(yt_url), file=f)
    chat_id  = get_chat_id(yt_url)

    nextPageToken = None
    for ii in range(iter_times):
        #for jj in [0]:
        try:
            print('\n')
            nextPageToken = get_chat(chat_id, nextPageToken, log_file)
            time.sleep(slp_time)
        except:
            break




if __name__ == '__main__':
    yt_url = input('Input YouTube URL > ')
    main(yt_url)

Recommended Posts

Holen Sie sich YouTube Live-Chat-Felder in Echtzeit mit API
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Versuchen Sie, Videos mit OpenCV in Echtzeit zu konvertieren
Erhalten Sie Kommentare auf Youtube Live mit [Python] und [Pytchat]!
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Holen Sie sich YouTube-Kommentare in Python
[Go language] So erhalten Sie Terminaleingaben in Echtzeit
Holen Sie sich Youtube-Daten mit Python
Informationen erhalten Sie mit zabbix api
Schreiben Sie Diagramme in Echtzeit mit Matplotlib auf dem Jupyter-Notizbuch
Holen Sie sich ein Ranking mit Rakuten API
Zeichnen Sie den optischen Fluss in Echtzeit mit OpenCV (Shi-Tomasi-Methode, Lucas-Kanade-Methode)
Erhalten Sie negative Reaktionszeit mit psychopy.event.getKeys ()
Holen Sie sich Bewertungen mit Python Googlemap API
GraphQL-API mit graphene_django in Django
Beginnen Sie mit Python mit Blender
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Datum und Uhrzeit im angegebenen Format abrufen
Erhalten Sie E-Mails mithilfe der Google Mail-API in Java
Holen Sie sich Google Fit API-Daten in Python
Beginnen wir mit TopCoder in Python (Version 2020)
Holen Sie sich Urlaub mit der Google Kalender-API
[Python] Python-Paketinformationen mit der PyPI-API abrufen
Erhalten Sie Informationen zur virtuellen Währung mit der API coin
Visualisieren Sie Informationen zum Beschleunigungssensor von der Mikrocomputerplatine in Echtzeit mit mbed + Python
Holen Sie sich YouTube Live-Chat-Felder in Echtzeit mit API
[Python] Zeigt die verstrichene Zeit in Stunden, Minuten und Sekunden an (00:00:00)
Ich habe den Chat von YouTube Live angezeigt und versucht zu spielen
So generieren Sie QR-Code und Barcode in Python und lesen ihn normal oder in Echtzeit mit OpenCV