Youtube durchsuchen nach LInks

Du hast eine Idee für ein Projekt?
Antworten
lowendgamer
User
Beiträge: 3
Registriert: Freitag 27. Oktober 2017, 16:15

Hallo zusammen,

ich plane einen Audiomusikplayer mit Sprachsteuerung für mein Auto zu programmieren. Dabei habe zunächst vor, dass als normales Programm auf meinem Linux Mint 18.2 laufen zu lassen.
Zunächst habe ich mithilfe von des Moduls SpeechRecognition mir meine Suchanfrage anzeigen lassen --> success

Anschließend möchte ich mir mithilfe des HTML Codes von YT in Verbindung mit meiner Suchanfrage die Suchergebnisse anzeigen lassen.

:D https://www.youtube.com/results?search_query=' :D + den Begriff (z.b Songname)

Danach kann ich einfach mit VLC bzw. cvlc --no-video mir den Link aus Audio wiedergeben lassen.


NUN ZU MEINEM PROBLEM:

Ich kann mir mithilfe des HTML Codes und dessen Auswertung mit BeautifulSoup keine LInks ausgeben lassen. Habt ihr eine Idee was ich machen könnte, dass ich das bewerkstelligen kann?

Viele Grüße und vielen Dank im Voraus!
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

Moin,

gibt es einen guten Grund, warum du die Youtube-HTML-Seite parsen möchtest? Im Prinzip ist das möglich, aber Google bietet eine API an, um die Daten direkt abrufen zu können. Hier ist das für die Suchabfrage dokumentiert. Mit Beispielcode in Python.

Ganz simpel kann man natürlich auch direkt den `GET`-Request absetzen, ohne die API-Client-Bibliothek zu benutzen. Generell ist für sowas die `requests`-Bibliothek besser geeignet (sprich einfacher zu benutzen), als `urllib` aus der Standardbibliothek. Das könnte dann beispielsweise so aussehen (ungetestet), um Videos mit dem Stichwort „Python“ zu suchen:

Code: Alles auswählen

import requests


def main():
    response = requests.get(
        "https://www.googleapis.com/youtube/v3/search/",
        params={
            "part": "id",
            "q": "Python",
            "type": "video",
        }
    )
    print(response.json())


if __name__ == "__main__":
    main()
lowendgamer
User
Beiträge: 3
Registriert: Freitag 27. Oktober 2017, 16:15

Vielen Dank für die schnelle Antwort! Werde es gleich ausprobieren :D

edit:

Nun beim Ausführen des Skripts überschreitet er das tägliche Limit von der Google API.

Code: Alles auswählen

[code]{'error': {'code': 403, 'message': 'Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.', 'errors': [{'reason': 'dailyLimitExceededUnreg', 'message': 'Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.', 'domain': 'usageLimits', 'extendedHelp': 'https://code.google.com/apis/console'}]}}
[/code]

wende mich nun mal der API zu per Google Seite
lowendgamer
User
Beiträge: 3
Registriert: Freitag 27. Oktober 2017, 16:15

Danke habe die Variante probiert, hat aber nicht funktioniert. Bin nun für weitere Vorschläge offen.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Was genau hat nicht funktioniert? Was hast du konkret versucht? Wie hat sich der Fehler / das Nicht-Funktionieren geäußert?
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

lowendgamer hat geschrieben: Nun beim Ausführen des Skripts überschreitet er das tägliche Limit von der Google API.
Ich glaube dass das nicht ganz richtig ist, viel mehr fehlt ihm beim Request ein zur Nutzung der Youtube API benötigter Key. Dieser berechtigt dann zur Verwendung der Ressourcen durch die API. Wie man an diesen developer key gelangt steht in den Google Youtube API docs.
When we say computer, we mean the electronic computer.
Antworten