Seite 1 von 1
Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Montag 17. April 2017, 11:34
von Spohky
Hallo zusammen,
ich bin neu hier und wünsche euch erst mal schöne Ostern.
Ich möchte gerne auf meinen vServer ein Python-Script laufen lassen, welches z.B. neue YouTube Videos von Kanal XYZ ausliest um diese dann vollautomatisch auf Facebook und Twitter posten zu lassen.
Bisher hat das ganze über PHP Funktioniert, da ich aber meinen bisherigen WebServer auf dem leider kein Python lief, alles auf Python umstellen was das Daten auslesen über die API angeht, wie auch das Posten. (Twitter + Facebook, das wird dann aber eine andere Baustelle....)
Bisher habe ich die PHP YT API v3 genutzt, hat alles super funktioniert, ich musste die API auf dem Server ablegen und 2 Files in einer Funktion einbauen, dann konnte ich mir meine auslese Funktionen zusammenstellen.
Für Python habe ich die Lib schon installiert die benötigt wird, nun verstehe ich das ganze aber leider nicht, da die Beispiele alle auf das einfügen und Co. beziehen, ich will aber nur auslesen, dafür brauche ich dann einen Key für die Berechtigung, den habe ich.
Da Python neu für mich ist und mir ein wenig der Durchblick fehlt, evtl hat von euch jemand Erfahrungen oder kann mir hier weiterhelfen.
Ich bedanke mich mal im voraus für eure Hilfe und Unterstützung. =)
Viele Grüße
Spohky
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 08:55
von dn1s
Hi,
schau dir mal
requests an.
Mit requests kannst du einen GET request mit Header informationen wie z.B. deinem Api Key bauen.
Mfg,
Dominik
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 09:25
von BlackJack
@dn1s: `requests` ist an sich eine gute Bibliothek für HTTP, aber Google bietet ja bereits selbst Bibliotheken um auf seine APIs zuzugreifen, so dass man sich weniger selbst bauen muss.
@Spohky: Die API auf Serverseite ist ja grundsätzlich die gleiche, also was ist den jetzt das *konkrete* Problem? Du musst doch zum Auslesen nur die gleichen YouTube-API-Funktionen verwenden wie unter PHP auch. Mit welchem API-Endpunkt hast Du denn in PHP die Videos eines Kanals abgefragt? Kurzer Blick in die Referenzdokumentation lässt vermuten, das man eine Suche mit den entsprechenden Parametern absetzen muss.
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 10:15
von dn1s
@BlackJack: Stimmt ganz vergessen das Youtube ja google gehört. ^^
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 14:53
von Spohky
@BlackJack: Also bei PHP sieht das bei mir etwa so aus:
Funktion zum Laden der API:
Code: Alles auswählen
public function load_yt_api($developerkey)
{
require_once 'includes/addon/sdk/youtube/src/Google/Client.php';
require_once 'includes/addon/sdk/youtube/src/Google/Service/YouTube.php';
$client = new Google_Client();
$client->setDeveloperKey($developerkey);
$this->youtube = new Google_Service_YouTube($client);
}
Hier lade ich einfach die API Für YouTube die benötigt wird.
Dann kann ich alles über die Variable youtube durchführen.
Nun kann ich über diese Funktion anfragen ob in einem gewissen Zeitraum Videos gepostet wurden:
Code: Alles auswählen
$data = $this->youtube->activities->listActivities(
"snippet,contentDetails",
array(
"channelId" => $row['id'],
"maxResults" => 50,
"publishedAfter" => $this->timestamp->datetime_to_youtube($publishedAfter),
"publishedBefore" => $this->timestamp->datetime_to_youtube($publishedBefore),
"pageToken" => $row['page_token']
)
);
Im Prinzip kann ich mein Skript fast 1 zu 1 übernehmen.
Was ich bisher gemacht habe auf den vServer:
Installation der Lib, manuelle Installation =>
https://developers.google.com/api-clien ... stallation
Und nun inde ich immer nur Beispiele für "OAuth", damit kann ich lesen und schreiben auf meinemm Youtube Kanal, jedoch habe ich auch ein paar Leute die den Social-Poster nutzen möchten, somit müsste das über den "Dev-Key" laufen mit dem man nur Lesen kann, auf allen Kanälen.
Es muss doch irgendwie die Möglichkeit geben, es so "einfach" wie bei PHP zu machen?
Ich sehe den Wald vor lauter Bäumen nicht... =(
Ich gehe davon aus, ich muss die API laden, dann kann ich der API den Key mitteilen und dann nur noch Funktionen um Channels / Videos usw. abfragen zu können, oder liege ich da falsch?
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 15:23
von Sirius3
@Spohky: diese
Beispiele hast Du nicht gefunden???
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 15:50
von Spohky
@Sirius3: Doch, jedoch habe ich da nicht wirklich das gefunden was ich brauche.
Ich möchte von User X folgende Dinge auslesen:
- Streaming aktiv
- Playlist
- Kanal
- Aktivitäten
- Videos
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 16:04
von BlackJack
@Spohky: Dann schau in der Dokumentation zur YouTube-API nach. Da sind die einzelnen Endpunkte von der API, die Du ja auch in PHP benutzt und fast immer sind Beispiele in verschiedenen Programmiersprachen dabei. Da kannst Du dann in der Regel zwischen dem PHP- und dem Python-Beispiel hin und her wechseln und Dir anschauen wie das jeweils aussieht.
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 20:06
von Spohky
@BlackJack: Vielen Dank, nun geht es!! =)
Mein Problem ist gelöst, wie kann ich nun hier zu machen?
Viele Grüße und Danke
Spohky
Für die, die wissen wollen wie es geht, hier ne kurze Info:
Code: Alles auswählen
#!/usr/bin/python
from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.tools import argparser
DEVELOPER_KEY = "REPLACE"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
service = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY)
def channels_list_by_id(service, part, id):
results = service.channels().list(
id=id,
part=part
).execute()
print(results)
channels_list_by_id(service, "snippet,contentDetails,statistics", "Channel-ID")
Für die diversen Abfragen, gibt es hier Beispiele:
https://developers.google.com/youtube/v ... e_snippets
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 21:03
von Spohky
Sorry für den Doppelpost!
Noch ne Frage zu Python im Bezug auf mein Vorhaben.
Kann ich z.B. eine Python File machen die alles macht und diese dann in Dauerschleife laufen lassen?
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 21:34
von darktrym
Nein, alles geht nicht.
Und eine Dauerschleife erreicht man am einfachsten mit der HiFi Funktion Autoreverse.
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 22:04
von Spohky
@darktrym: Okey, also am besten dann immer nur in einem Script die Kanäle aktualisieren, in nem anderen, dann die Videos usw.
Wenn ich so was z.B. permanent durchlaufen lasse, belastet das dann nicht die MySQLDB zu sehr?
Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 22:48
von BlackJack
@Spohky: Ich denke Du hast die Ironie überlesen. Es gibt kein ”Python File” das *alles* macht. Ein Programm, egal in welcher Programmiersprache geschrieben, das *alles* macht, würde wahrscheinlich auch sehr gross sein. Unendlich gross.

Re: Mit Python3 die YouTube API v3 nutzen [Debian8]
Verfasst: Mittwoch 19. April 2017, 23:05
von Spohky
Das Passiert wenn der eine von Bananen redet und der andere von Äpfeln. ^^
Ich muss sagen, Python ist gar nicht so schwer, nur etwas ungewohnt wenn man Jahrelang mit PHP gearbeitet hat. =)