Interaktion mit Youtube

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

funkmaster5000

Betreff: Interaktion mit Youtube

BeitragMi, März 23, 2016 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Community,

habt ihr vielleicht eine Idee, wie ich über Blitz mit Youtube kommunizieren kann? Blitz bietet (bot?) mit seinen Bordmitteln alles, was man benötigt. Man konnte mit Youtube eine Verbindung aufbauen und über WriteLine die Befehle an die Youtube API schicken. Hat vielleicht jemand Erfahrung, wie ich mit der aktuellen (v3) API Videoinformationen von einem Video auslesen kann? Das klappt nämlich nicht mehr so ganz (Fehler: "400 Bad Request!")

In der früheren Version (API v2) war das übrigens ziemlich einfach:

Code: [AUSKLAPPEN]

Local tcp = OpenTCPStream("www.youtube.com", 80)
If Not tcp Then Print "Fehlgeschlagen": WaitKey : End
Print "Verbunden! Sende Anfrage..."
WriteLine tcp, "GET https://gdata.youtube.com/feeds/api/videos/DeineBeliebigeVideoID?v=2"
WriteLine tcp, Chr$(10)
If Eof(tcp) Then Print "Fehlgeschlagen.": WaitKey: End
Print "Anfrage gesendet! Warte auf Antwort..."
While Not Eof(tcp)
   Print ReadLine$( tcp )
   Print "Bytes verfügbar:" + ReadAvail(tcp)
Wend
If Eof(tcp) = 1 Then
   Print "Erfolgreich!"
Else
   Print "Fehler!"
EndIf
CloseTCPStream tcp
WaitKey()
End


Dann haben unsere lieben Freunde von Google Youtube gekauft...und meine Anwendung funktioniert nicht mehr.
Kennt sich jemand mit der aktuellen API und den Anforderungen aus und hat damit vielleicht schon einmal gearbeitet? Wie komme ich jetzt an die Daten Confused

Danke im Voraus!

Xeres

Moderator

BeitragMi, März 23, 2016 1:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Du öffnest einen Stream zu www.youtube.com auf Port 80 und fragst dann nach einer Ressource die auf einer anderen Subdomain liegt, über ein Protokoll das Port 443 verwendet. Sicher, dass du den SSL-Handshake nicht noch implementieren müsstest, um eine Antwort zu erhalten?
Um per HTTPS zu Kommunizieren gibt es doch sicher besser geeignete Sprachen... Ansonsten Dokumentation lesen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

funkmaster5000

BeitragMi, März 23, 2016 1:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort. Wie gesagt, unter der alten API hat das funktioniert. Schätze mal, dass die Anfrage serverseitig noch verarbeitet wurde? Kann auch sein, dass in den Anfangsjahren noch nicht mit SSL gearbeitet wurde? Das weiß ich nicht mehr, ich habe einen aktuellen Link genommen und der sieht im Vergleich zu den Links von den Anfängen wirklich ganz anders aus.

EDIT:
Noch gebe ich Blitz zu Gunsten von Java usw. nicht auf Very Happy
Es gibt noch eine aktive Funktion, um Youtube Informationen in einem Token herunterzuladen. Das Ganze sieht dann so aus, kann aber mit String Funktionen weiterverarbeitet werden, da jeweils nach einem "&" die Informationen zu trennen sind:
Code: [AUSKLAPPEN]
apply_fade_on_midrolls=True&thumbnail_url=https%3A%2F%2Fi.ytimg.com%2Fvi%2FW4SgfURQyc8%2Fdefault.jpg&(...usw...)


Da es sich um https Links handelt, konnte ich über Blitzplus mit HtmlViewGo den entsprechenden Link öffnen (um nicht SSL in Blitz noch abbilden zu müssen) und erhalte auch ein Download Fenster für die entsprechende Token Datei. Kann ich den Download noch irgendwie automatisieren? Sagen wir, ich kenne die Youtube-ID, gebe sie in B+ über ein Textfeld ein und dann soll er sich automatisch die Token-Datei herunterladen und nach der Video ID benennen, damit ich sie weiter verarbeiten kann.

Code: [AUSKLAPPEN]
window = CreateWindow("YT Info", 0, 0, 400, 400, 0, 1)
x = ClientWidth(window)
y = ClientHeight(window)
htmlview = CreateHtmlView(10, 10, x - 20, y - 20, window)
HtmlViewGo htmlview, "https://www.youtube.com/get_video_info?video_id=DEINEVIDEOID"

Eingeproggt

BeitragMi, März 23, 2016 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
HTTPS-Verbindungen in BB haben mir auch viel Sorgen bereitet. Wenn es unbedingt nötig war / ist, würd ich cURL empfehlen. Kann man per Kommandozeile aus BB heraus aufrufen.
Finde nur leider nicht mehr den Befehl... Eine direkte Ausführung (also die Befehle die man unter Windows in cmd ausführt) ist vielleicht nur mit der WinAPI möglich... Als Alternative könnte man zur Not auch eine *.bat Datei schreiben (Also die Befehle in eine Datei schreiben mit WriteLine) und die dann mit ExecFile ausführen.

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

funkmaster5000

BeitragMi, März 23, 2016 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow klasse Tool, danke dir! Der Befehl ist:
Code: [AUSKLAPPEN]
curl -o PFAD/DATEINAME.DATEIEINDUNG WEBRESSOURCE

Die Datei wird dann in dem Verzeichnis gespeichert.

Aufruf innerhalb von Blitz geht per Execfile. Im Moment verliert das Hauptprogramm noch den Fokus, aber ich glaube, im Graphics Mode ist das nicht mehr der Fall.

Thunder

BeitragMi, März 23, 2016 12:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein libcurl wrapper für BB könnte dich interessieren. Ich habe die libcurl mit ein paar extra funktionen so kompiliert,
dass man sie relativ leicht in BlitzBasic verwenden kann:
https://www.blitzforum.de/foru...hp?t=40406

Bisher hat noch niemand darauf reagiert Confused
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

funkmaster5000

BeitragSo, Apr 17, 2016 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Hinweis, sieht wirklich interessant aus. Mir war libcurl bislang völlig unbekannt. Ich könnte mir vorstellen, dass es noch weiteren Usern so geht und dass deswegen die erhofften Reaktionen ein wenig ausbleiben. Wenn ich es in meinem Projekt verwenden kann, schreibe ich was in die Credits Wink

Thunder

BeitragSo, Apr 17, 2016 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das ist einfach die Library, die curl selber nutzt um was zu tun. curl selber ist eine Art text interface Layer um die libcurl und den kannst du dir ersparen, wenn du die DLL direkt nutzt.
libcurl direkt verwenden (in C/C++) ist echt komisch... also es hat seine Eigenheiten und ich habe versucht mit dem BB Layer, was einfaches zu produzieren. Wenn du es verwenden kannst und Verbesserungsvorschläge hast, würde ich sie gerne hören (auch wenn ich das Binding nicht aktiv entwickle).

Weil ich das nicht im Userlibs-Forum explizit schrieb (aber es ist eine Bedingung des Forums): Die Änderungen, die ich an der libcurl gemacht und hier online gestellt habe, sind public domain. D.h. du musst mich nicht nennen oder so, ich fände es auch schöner, wenn man (lib)curl referenziert und nicht mich, weil ich nicht die ganze Arbeit dahinter gemacht habe.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group