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
Mit Python3 die YouTube API v3 nutzen [Debian8]
@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.
@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.
@BlackJack: Also bei PHP sieht das bei mir etwa so aus:
Funktion zum Laden der API:
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:
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?
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);
}
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']
)
);
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?
Zuletzt geändert von Anonymous am Mittwoch 19. April 2017, 15:49, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
Grund: Quelltext in Codebox-Tags gesetzt.
@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.
@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:
Für die diversen Abfragen, gibt es hier Beispiele: https://developers.google.com/youtube/v ... e_snippets
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")
Zuletzt geändert von Anonymous am Mittwoch 19. April 2017, 21:15, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
@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.