Closed gu3nter closed 2 years ago
Hmm, das feedback zu dieser API bei Reddit ist etwas hart :-/ :see_no_evil: :
I tried to play around with their API but it's such a mess, full of jumbled tokens for no clear reason and clear obscuring of the data in the responses. Security through obscurity I guess.
Die Annahme ist, dass diese selbstgebaute API (die wahrscheinlich aus den API requests der Youtube Music Webseite zusammengebaut wurde) andere Ergebnisse liefert als die Youtube Data API?
Was ich nicht so ganz verstehe ist, wie man die Suchergebnisse nachher nutzt um die Musik zu erreichen? Baut man aus den Song/Playlist/etc. IDs dann wieder Youtube Video Links? :thinking:
Hast du vielleicht ein Beispiel für content, den man in Youtube Music findet aber nicht im normalen Youtube? Dann kann ich vielleicht besser verstehen wo genau sich die beiden Services trennen.
SEPIA ist der geilste shit ever
:star_struck:
Ob es mit einem Login in Chrome auf dem Pi geht, kann ich leider derzeit nicht testen, da der Browser aktuell immer abstürzt, wenn ich Youtube oder Youtube Music öffne, scheint aber ein generelles Problem zu sein.
Hier ein Beispiel: Bibi Blocksberg Folge 3 gibt es auf Youtube nicht, wird somit leider auch nicht von Sepia gefunden. Auf Youtube Music gibt es alle Folgen.
Hier der Link zur Folge 3: https://music.youtube.com/playlist?list=OLAK5uy_mRFH_VSXNOSSphE4VAx1cNrmjvHQGPj1s&feature=share
oder auch für Youtube premium: https://www.youtube.com/playlist?list=OLAK5uy_mRFH_VSXNOSSphE4VAx1cNrmjvHQGPj1s
Wäre ja mega, falls der interne Player das jetzt schon könnte, aber wie gesagt, das kann ich derzeit leider nicht testen, was auf jeden Fall nicht zu gehen schein, ist, dass Sepia auch die Inhalte von Youtube Music durchsucht. deshalb mein Future request.
Falls ich es hinbekomme, versuche ich mal oben genanntes youtube music api zu testen, falls es gut funktioniert, würde ich ich freuen, wenn du es in Sepia einbinden könntest.
was auf jeden Fall nicht zu gehen schein, ist, dass Sepia auch die Inhalte von Youtube Music durchsucht
Schade, meine Hoffnung war, dass die Youtube Data API eventuell deinen API key als music key erkennt :-/. Irgendwie scheint Google hier noch nicht so richtig "offen" zu sein.
Falls ich es hinbekomme, versuche ich mal oben genanntes youtube music api zu testen, falls es gut funktioniert, würde ich ich freuen, wenn du es in Sepia einbinden könntest.
Ich könnte die Suche natürlich im SEPIA Server integrieren, ich sehe hier nur ein paar Herausforderungen:
Statt die Youtube API auf dem Server zu ändern könnte man allerdings auch ein spezielles Media Player Widget basteln, das mit dem Python Server direkt kommuniziert. Das hat zwar die gleichen Problemchen wie oben beschrieben, lässt sich aber schneller anpassen wenn etwas kaputt geht ^^.
...Wenn sie nicht geblockt sind müsste man sich wahrscheinlich aber mindestens mit dem eigenen Youtube Music account im client anmelden ...
Für diesen Teil habe ich gerade mal etwas implementiert, was lange Zeit nicht richtig geklappt hatte: Direkter Remote Zugriff auf den Client via Desktop Chrome :smiley: . Damit könnte man remote auf den Client gehen und sich mit dem Google Account anmelden in Youtube Music etc.. Um das zu testen müsstest du dir einmal die neue run.sh und setup.sh für den Client runterladen:
Im Setup gibt es dann die neuen Punkte ENABLE/DISABLE remote debugging. Nach dem ENABLE kommt auch eine kleine Anleitung was man danach machen muss. Feedback ob das verständlich ist wäre hilfreich ;-)
top schonmal danke, werde ich heute Abend testen und geben dir Bescheid
habe es nun getestet, jedoch noch keinen remote zugriff nicht zum laufen gebracht.
Meine dones:
switch auf windows pc für remote zugriff: im chrome chrome://inspect/#devices eingegeben und http://[client-IP]:9223 unter den network targets eingegeben ([client-IP] mit der ip des pi´s ersetzt)
jetzt meine frage was muss ich tun, damit ich jetzt den pi "fernsteuerung sehen kann?
edit: habe es jetzt geschafft remote drauf zu kommen.
Wenn ich mich remote bei youtube music einlogge, kann ich über sepia einen bestimmten song (bibi Blocksberg folge 3) abspielen (link von youtube music wurde in den teach options gesetzt). --> es scheint, dass das iframe reibungslos geht.
Wenn jetzt die Suche noch in den youtube music Inhalten gehen würden, wäre alles perfekt
PS: wenn ich den client neustarte wird jedoch der google login verworfen, d.h. ich muss mich anch jedem neustart neu über remote bei youtube music einloggen
Nachtrag zu dem gewünschten Feedback der Anleitung: Prinzipiell ist alles gut verständlich, jedoch hat es bei mir nur funktioniert wenn ich http:// weggelassen habe. Also hier
im chrome chrome://inspect/#devices eingegeben und OHNE http:// [client-IP]:9223 unter den network targets eingeben
Wenn ich mich remote bei youtube music einlogge, kann ich über sepia einen bestimmten song (bibi Blocksberg folge 3) abspielen (link von youtube music wurde in den teach options gesetzt). --> es scheint, dass das iframe reibungslos geht.
Das klingt schon mal gut, danke für den Test :+1:
PS: wenn ich den client neustarte wird jedoch der google login verworfen, d.h. ich muss mich anch jedem neustart neu über remote bei youtube music einloggen
:-( komisch eigentlich, der Client löscht seinen Cache nicht. Ist das tatsächlich mit einen Neustart verbunden oder läuft der Login auch so einfach recht schnell ab? Vielleicht gibts da noch irgendwo diesen "eingeloggt bleiben" Haken? Ich habe leider noch keine Möglichkeit gefunden das zu automatisieren, vielleicht müsste man dazu ein Browser Plugin schreiben :thinking:
im chrome chrome://inspect/#devices eingegeben und OHNE http:// [client-IP]:9223 unter den network targets eingeben
ok das macht Sinn ^^. Ich optimiere mal die Beschreibung :-)
OK dann teste ich das nochmal mit dem Loginverlust. Soll ich dann die youtubelusicapi GitHub Sache testen, falls ich es hin bekomme? Falls es zuverlässig funktioniert, könntest du das dann bitte auch in Sepia integrieren?
Gruß Rene
Wenn die 'ytmusicapi' funktioniert müsste man noch einen Micro-Service drumherum bauen, sonst kann ich die API nicht vom SEPIA Server (oder music-player Widget) ansprechen. Optimalerweise wäre der Micro-Service noch kompatibel mit der Youtube-Data API, dann könnte man ihn direkt als drop-in Ersatz für die integrierte API nutzen (müsste nur in den Server Settings eine URL Option hinzufügen ^^). Es sei denn ich habe übersehen, dass die 'ytmusicapi' schon einen Endpoint bereitstellt für HTTP REST Anfragen. Für die Integration von Python Code hatte ich schon mal diesen Server/Micro-Service Container gebaut: SEPIA Python-Bridge, da könnte man ansetzen.
Habe nun alles ausgiebig getestet: Fazit die ytmusicpit funktioniert reibungslos
Habe aber festgestellt, dass wie schon weiter oben erwähnt, dass der Login nach einem Neustart verloren geht und somit dann auch der cookie für die ytmusicapi nicht mehr funktioniert. Wird der Login verworfen, werden auch keine zuverlässigen Suchergebnisse mehr gefunden, denke mal das war das Problem bei der von dir erwähnten Person von reddit.
--> es wäre super, wenn du die ytmusicapi in Sepia einbinden könntest, bei fragen Suchbeispielen stehe ich gerne zu Verfügung.
Habe nun alles ausgiebig getestet: Fazit die ytmusicpit funktioniert reibungslos
ok, cool :-). Wie hast du das gemacht, über ein Python Script verschiedene Suchanfragen eingegeben und dann aus den Ergebnissen Links gebaut? Soweit ich gesehen habe gibt es da keinen fertigen Server an den man HTTP Requests schicken kann oder? Den müssten wir dann noch drumherum bauen :slightly_smiling_face: , sonst können wir keine Anfragen vom Server oder Client senden :grimacing:
Morgen,
habe es vorerst einfach ganz "leicht" gemacht: Das heißt ich habe noch keine Links gebaut, wollte nur fürs erste herausfinden, ob die Suchanfragen zu den gleichen ergebnissen führen, wie wenn ich das selbst bei youtube musik mache. Folgendes Beispiel:
Suchergebnis das ich selbst auf Youtube Musik gesucht habe für "holly jolly christmas": https://music.youtube.com/watch?v=p0kK3fI_3vo&feature=share
--> p0kK3fI_3vo ist die video id
from ytmusicapi import YTMusic
ytmusic = YTMusic('headers_auth.json')
search_results = ytmusic.search("holly jolly christmas")
print(search_results)
Folgender output wurde generiert:
[{'category': 'Top result', 'resultType': 'song', 'title': 'Holly Jolly Christmas', 'album': {'name': 'Christmas (Deluxe Special Edition)', 'id': 'MPREb_Rv8i9mhXY7J'}, 'feedbackTokens': {'add': 'AB9zfpJjSGX4jeTjBGR9v_JI0wxVsqMlgmEH8rVUi1pe_udLYrLxpHyXAmu4XOES-ts5JDcKQBpA0lbu5kjaVI5JLIL-6nLJFQ', 'remove': 'AB9zfpLZxkF1vrGk7L2mcFMKX-UPSU95gwHNq8OtI7To8YV1Un0RaUChcPBwTgoX2keGnB63fz6s6mcIvFgXLX8X-HlvO4NTOg'}, 'videoId': 'p0kK3fI_3vo', 'duration': '2:00', 'year': None, 'artists': [{'name': 'Michael Bublé', 'id': 'UCJWJd67r42sByfpOe6S__zw'}], 'isExplicit': False, 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/iLnoj1uA4nDdk_K8krbOm2ROUj2tGFhq-t3kFU2jEnDY5pKUYFdp-iaSkyg5XJ0QRyJLxPYvo1w_Ntwc=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/iLnoj1uA4nDdk_K8krbOm2ROUj2tGFhq-t3kFU2jEnDY5pKUYFdp-iaSkyg5XJ0QRyJLxPYvo1w_Ntwc=w120-h120-l90-rj', 'width': 120, 'height': 120}]}, {'category': 'Songs', 'resultType': 'song', 'title': 'A Holly Jolly Christmas (Single Version)', 'album': {'name': 'Have A Holly Jolly Christmas', 'id': 'MPREb_wvyK3q5awSj'}, 'feedbackTokens': {'add': 'AB9zfpKv-_NUUCcHETN4BLu794O3P10scOixVkYzt0dYfViJDWVXBYFxRbIY6O91ckpSwEkA-sbvNl8s5RvrNSTKmL75cOCtfQ', 'remove': 'AB9zfpLwtlifDeOsdZYovL7AqCCLlLcIJKEfDODhOYxZ0vaZhzAK2tJTnn7Ofvn3QxhjJGV2RvpaGc6xW-Xef6-y7rnDqlWC4Q'}, 'videoId': 'P_dI6fVZwd0', 'duration': '2:16', 'year': None, 'artists': [{'name': 'Burl Ives', 'id': 'UCl2j2shAiHLlGu0JSm-4dCQ'}], 'isExplicit': False, 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/Hldm9sUr7OPk4usvhvfF1e2Ayx91J46MxRWwuKcTE69yGTN4oWkseOeQkfyAFzXGW9ct2jhIsMlBh24c=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/Hldm9sUr7OPk4usvhvfF1e2Ayx91J46MxRWwuKcTE69yGTN4oWkseOeQkfyAFzXGW9ct2jhIsMlBh24c=w120-h120-l90-rj', 'width': 120, 'height': 120}]}, {'category': 'Songs', 'resultType': 'song', 'title': 'Holly Jolly Christmas', 'album': {'name': 'Christmas (Deluxe Special Edition)', 'id': 'MPREb_GGth15Ne4Wa'}, 'feedbackTokens': {'add': 'AB9zfpKeqvAqK27czFsQwSujKcLbNdZBHA9e_CuxZXjvKlL8QHUNTvhM4BsBm64yvpVEgjZqRS6oAjd24nk3SmbWCHYzx6QbPQ', 'remove': 'AB9zfpKMNjExo-bGwwCJ_icq3IDZ5Ii6Z9PDJOzSffTo27lr3-aFubgPxrh5JJyfcikaH8PNiLr2rKNKRKT_Y6UqvmbYhXEShg'}, 'videoId': 'o3nMx12r5ic', 'duration': '2:02', 'year': None, 'artists': [{'name': 'Michael Bublé', 'id': 'UCJWJd67r42sByfpOe6S__zw'}], 'isExplicit': False, 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/Nmok94CxIvB6oWJjw8F7Yw9efyUNvV0HSZWHkuYj7Qetptylt47u8nIWo5GOz8pFXIcotzQ0hjJCBmR3=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/Nmok94CxIvB6oWJjw8F7Yw9efyUNvV0HSZWHkuYj7Qetptylt47u8nIWo5GOz8pFXIcotzQ0hjJCBmR3=w120-h120-l90-rj', 'width': 120, 'height': 120}]}, {'category': 'Songs', 'resultType': 'song', 'title': 'Holly Jolly Christmas', 'album': {'name': 'God Rest Ye Merry Gentlemen', 'id': 'MPREb_GZFp41PrmnK'}, 'feedbackTokens': {'add': 'AB9zfpLYIuOcT59acId9qWb_wPjSifYyskaaflR7WUNCS7KtTIp7GW0_odcizyJSvt4E1teFTD-jc44ilLNPCUyooWNVD7FoNg', 'remove': 'AB9zfpJ0ARvIJtJCz3XSA4PigMmgzjgUEeUcjXTvMVZA37j-FLrKpw0Bq9xIIX6leNxjsBQfLbZDRfqzqCsv4F0LqyXujvoStQ'}, 'videoId': 'JIpVktqKP4g', 'duration': '1:10', 'year': None, 'artists': [{'name': 'False Idle', 'id': 'UCT7UssEJYgDW3XK1ekPgpqA'}], 'isExplicit': True, 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/O_dZNrFmlb0KmDN-Ya71MoGIUxjHRBNdoesG1mzwc6jvrI-GV83vw-QnLNhC0yjOTJt-X8e0o9ONXP3Eog=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/O_dZNrFmlb0KmDN-Ya71MoGIUxjHRBNdoesG1mzwc6jvrI-GV83vw-QnLNhC0yjOTJt-X8e0o9ONXP3Eog=w120-h120-l90-rj', 'width': 120, 'height': 120}]}, {'category': 'Videos', 'resultType': 'video', 'title': 'Holly Jolly Christmas', 'views': '28M', 'videoId': 'Dkq3LD-4pmM', 'duration': '2:02', 'year': None, 'artists': [{'name': 'Michael Bublé', 'id': 'UCJWJd67r42sByfpOe6S__zw'}], 'thumbnails': [{'url': 'https://i.ytimg.com/vi/Dkq3LD-4pmM/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mAtzkXtoPwS9zOs1ABThzB7lzv7Q', 'width': 400, 'height': 225}]}, {'category': 'Videos', 'resultType': 'video', 'title': 'Burl Ives - Holly Jolly Christmas (Lyrics)', 'views': '516K', 'videoId': 'nk0eKmiMEFo', 'duration': '2:34', 'year': None, 'artists': [{'name': 'Jesus4Life', 'id': 'UCMHQoiq6PnPWb_gGD6eAQEg'}], 'thumbnails': [{'url': 'https://i.ytimg.com/vi/nk0eKmiMEFo/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nnrs0IezP7F0QFqqxmUkjWVs5ROw', 'width': 400, 'height': 225}]}, {'category': 'Videos', 'resultType': 'video', 'title': 'Holly Jolly Christmas', 'views': '24K', 'videoId': 'nqu1K2Dw9L4', 'duration': '1:46', 'year': None, 'artists': [{'name': 'Meghan Trainor', 'id': 'UC_VCJd8skzwcPktsMLqTz1g'}], 'thumbnails': [{'url': 'https://i.ytimg.com/vi/nqu1K2Dw9L4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nypuwNdijgtd5LWN6dM0w2DWaSjg', 'width': 400, 'height': 225}]}, {'category': 'Community playlists', 'resultType': 'playlist', 'title': 'A Holly Jolly Christmas Topic', 'itemCount': '80', 'author': 'WesTsYde', 'browseId': 'VLPLElD0nLnf41l8zk83po3A690vMy6U_o4L', 'thumbnails': [{'url': 'https://yt3.ggpht.com/fpNnwJCPjOcuS5mTNwVT4Ry2eIeggBHcGgnVzTA7XsoA9Co8F7pEqA5H7lrCErN5GdoEKBbnpgY=s192', 'width': 192, 'height': 192}, {'url': 'https://yt3.ggpht.com/fpNnwJCPjOcuS5mTNwVT4Ry2eIeggBHcGgnVzTA7XsoA9Co8F7pEqA5H7lrCErN5GdoEKBbnpgY=s576', 'width': 576, 'height': 576}, {'url': 'https://yt3.ggpht.com/fpNnwJCPjOcuS5mTNwVT4Ry2eIeggBHcGgnVzTA7XsoA9Co8F7pEqA5H7lrCErN5GdoEKBbnpgY=s1200', 'width': 1200, 'height': 1200}]}, {'category': 'Community playlists', 'resultType': 'playlist', 'title': 'Hollyjolly christmas', 'itemCount': '31', 'author': 'Laura Paola Rodríguez López', 'browseId': 'VLPLl3Vbq-Nhgyrha-dH4VAFh9b3Kp0kKWpS', 'thumbnails': [{'url': 'https://yt3.ggpht.com/SDnE_tuP8U7krQnBvikSb61Y6jvahROrVeEfW-IJZ4lTambJunQInfN3z4mTEquZGT9-Ye5bQQ=s192', 'width': 192, 'height': 192}, {'url': 'https://yt3.ggpht.com/SDnE_tuP8U7krQnBvikSb61Y6jvahROrVeEfW-IJZ4lTambJunQInfN3z4mTEquZGT9-Ye5bQQ=s576', 'width': 576, 'height': 576}, {'url': 'https://yt3.ggpht.com/SDnE_tuP8U7krQnBvikSb61Y6jvahROrVeEfW-IJZ4lTambJunQInfN3z4mTEquZGT9-Ye5bQQ=s1200', 'width': 1200, 'height': 1200}]}, {'category': 'Community playlists', 'resultType': 'playlist', 'title': 'holly jolly christmas', 'itemCount': '35', 'author': 'Sono Sisso', 'browseId': 'VLPL_rAmQkqqIj1Iufj-MRRPS_MRam2goHoP', 'thumbnails': [{'url': 'https://i.ytimg.com/vi/siVbx6EwE9o/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mRNMlDfgus9xbnoecH5TMpWmrhIA', 'width': 400, 'height': 225}, {'url': 'https://i.ytimg.com/vi/siVbx6EwE9o/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3ltl53WpJioQTa9Ow2-EVmUBG0LTQ', 'width': 800, 'height': 450}, {'url': 'https://i.ytimg.com/vi/siVbx6EwE9o/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mIR2QzknFZ475lk1IZgBz-62wgXw', 'width': 853, 'height': 480}]}, {'category': 'Albums', 'resultType': 'album', 'title': 'Holly Jolly Christmas Music!', 'type': 'Album', 'duration': None, 'year': '2017', 'artists': [{'name': 'Christmas Hits', 'id': 'UC67PxIJF9rMwmK9w4hGDxKw'}, {'name': 'Christmas Songs', 'id': 'UC_4Hvm0j5cwNafTdBc8m8cQ'}, {'name': 'Merry Christmas', 'id': 'UCTsZWHIpXrwN4-YjHrwvOeQ'}], 'browseId': 'MPREb_gay5WC9LAmf', 'isExplicit': False, 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/debCqT9n1gtMT7VVgc_znvePDMWfLocGHGfnO_0IQ6C1G7qKeycRmB5Ere9CSQqtk8wfBcBeoi41-AVvRw=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/debCqT9n1gtMT7VVgc_znvePDMWfLocGHGfnO_0IQ6C1G7qKeycRmB5Ere9CSQqtk8wfBcBeoi41-AVvRw=w120-h120-l90-rj', 'width': 120, 'height': 120}, {'url': 'https://lh3.googleusercontent.com/debCqT9n1gtMT7VVgc_znvePDMWfLocGHGfnO_0IQ6C1G7qKeycRmB5Ere9CSQqtk8wfBcBeoi41-AVvRw=w226-h226-l90-rj', 'width': 226, 'height': 226}, {'url': 'https://lh3.googleusercontent.com/debCqT9n1gtMT7VVgc_znvePDMWfLocGHGfnO_0IQ6C1G7qKeycRmB5Ere9CSQqtk8wfBcBeoi41-AVvRw=w544-h544-l90-rj', 'width': 544, 'height': 544}]}, {'category': 'Albums', 'resultType': 'album', 'title': 'Merry Christmas (Have a Holly Jolly Christmas)', 'type': 'Album', 'duration': None, 'year': '2021', 'artists': [{'name': 'Various Artists', 'id': None}], 'browseId': 'MPREb_4F9MWIFLRrX', 'isExplicit': False, 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/VB4w1sdgY92IFpyKc1enhuxVDjrSFY0QySu9BBO4bmiVK9bglOljZr9qfqjjQ5hVIFfbSAZAc9G6Ge6Z=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/VB4w1sdgY92IFpyKc1enhuxVDjrSFY0QySu9BBO4bmiVK9bglOljZr9qfqjjQ5hVIFfbSAZAc9G6Ge6Z=w120-h120-l90-rj', 'width': 120, 'height': 120}, {'url': 'https://lh3.googleusercontent.com/VB4w1sdgY92IFpyKc1enhuxVDjrSFY0QySu9BBO4bmiVK9bglOljZr9qfqjjQ5hVIFfbSAZAc9G6Ge6Z=w226-h226-l90-rj', 'width': 226, 'height': 226}, {'url': 'https://lh3.googleusercontent.com/VB4w1sdgY92IFpyKc1enhuxVDjrSFY0QySu9BBO4bmiVK9bglOljZr9qfqjjQ5hVIFfbSAZAc9G6Ge6Z=w544-h544-l90-rj', 'width': 544, 'height': 544}]}, {'category': 'Albums', 'resultType': 'album', 'title': 'Holly Jolly Christmas', 'type': 'Album', 'duration': None, 'year': '1964', 'artists': [{'name': 'The Quinto Sisters', 'id': 'UCe-7N0UtWLWn55lFYET39zQ'}], 'browseId': 'MPREb_SdeAZNl5PZN', 'isExplicit': False, 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/JAzL2HevZxOHG3WUcg7_oanX19SOnuab0YAGiFhFpd68Tld136xGDnXUZccyuSOJWmhcij-r5WATqSDv0A=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/JAzL2HevZxOHG3WUcg7_oanX19SOnuab0YAGiFhFpd68Tld136xGDnXUZccyuSOJWmhcij-r5WATqSDv0A=w120-h120-l90-rj', 'width': 120, 'height': 120}, {'url': 'https://lh3.googleusercontent.com/JAzL2HevZxOHG3WUcg7_oanX19SOnuab0YAGiFhFpd68Tld136xGDnXUZccyuSOJWmhcij-r5WATqSDv0A=w226-h226-l90-rj', 'width': 226, 'height': 226}, {'url': 'https://lh3.googleusercontent.com/JAzL2HevZxOHG3WUcg7_oanX19SOnuab0YAGiFhFpd68Tld136xGDnXUZccyuSOJWmhcij-r5WATqSDv0A=w544-h544-l90-rj', 'width': 544, 'height': 544}]}, {'category': 'Artists', 'resultType': 'artist', 'artist': 'Burl Ives', 'shuffleId': 'RDAOTj34Z3DaFQ1y_qR4V86rVQ', 'radioId': 'RDEMTj34Z3DaFQ1y_qR4V86rVQ', 'browseId': 'UCl2j2shAiHLlGu0JSm-4dCQ', 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/Qu-DyIAtcJL1ysW88M7LsM3SiEQ7SUlwDLNZMci1tDHHtlhLfkmAldP8bxNihZjBhLkn35mgtkesP-1c=w60-h60-p-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/Qu-DyIAtcJL1ysW88M7LsM3SiEQ7SUlwDLNZMci1tDHHtlhLfkmAldP8bxNihZjBhLkn35mgtkesP-1c=w120-h120-p-l90-rj', 'width': 120, 'height': 120}]}, {'category': 'Artists', 'resultType': 'artist', 'artist': 'Holly Jolly Christmas Carols', 'shuffleId': 'RDAOv_l_-ZyZBx1B5t3GwH-Ucg', 'radioId': 'RDEMv_l_-ZyZBx1B5t3GwH-Ucg', 'browseId': 'UC8lTTKI7XIOA-f3h1mCMvPA', 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/zBxizzH-fyBsoCRDLalegBOym8aVUR5NzWKP3cpG3rZ20ZlH4AMM08Y7NcCd3UHqHfJWIVW4nbKJhIQ=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/zBxizzH-fyBsoCRDLalegBOym8aVUR5NzWKP3cpG3rZ20ZlH4AMM08Y7NcCd3UHqHfJWIVW4nbKJhIQ=w120-h120-l90-rj', 'width': 120, 'height': 120}]}, {'category': 'Artists', 'resultType': 'artist', 'artist': 'Holly Jolly Christmas Ringtone', 'shuffleId': 'RDAOZ2x8kzkMgtklbPcqlFzdzg', 'radioId': 'RDEMZ2x8kzkMgtklbPcqlFzdzg', 'browseId': 'UCywVWKpONAMzpLBQNLl4oFQ', 'thumbnails': [{'url': 'https://lh3.googleusercontent.com/-zrNjwks5RVI3ILw0wPi3M_3iro-VH46VMQSucoPqhwHhzD_4eAQPr9izOUjse4CoU92iT3q8S0tLII=w60-h60-l90-rj', 'width': 60, 'height': 60}, {'url': 'https://lh3.googleusercontent.com/-zrNjwks5RVI3ILw0wPi3M_3iro-VH46VMQSucoPqhwHhzD_4eAQPr9izOUjse4CoU92iT3q8S0tLII=w120-h120-l90-rj', 'width': 120, 'height': 120}]}]
--> Video id vom python script: 'videoId': 'p0kK3fI_3vo',
Das ganze habe ich dann mit ein paar liedern getestet und immer war die "erste" video id, die die ich auch im browser bekommen habe
Denke mit irgendeinem Regex könnte man diese dann extrahieren und einen Link zusammen bauen
Hi,
also ich habe testweise mal einen Microservice drumherum gebaut, der die Ergebnisse in Youtube Data API v3 Format zurück gibt: https://github.com/fquirin/python-ytmusicapi-server
Guck doch mal, ob der bei dir auch läuft :slightly_smiling_face: .
Ich habe es erstmal komplett ohne authentication gemacht, da kriegt man auch schon Ergebnisse. Du kannst ja mal prüfen was passiert wenn man die Zeile ytmusic = YTMusic() # With auth.: YTMusic('headers_auth.json')
ändert ^^.
Wenn das klappt füge ich dem SEPIA Assist Server mal eine Option hinzu, so dass man den API Server selbst definieren kann und dann müsste das als drop-in Ersatz funktionieren :crossed_fingers:
[EDIT] Noch ein Hinweis: Die Ergebnisse sind ziemlich random gerade, eventuell müsste man den Filter noch korrekt einstellen auf Video, Song, o.ä.. Ich weise nicht ob man da mehrere Typen gleichzeitig angeben kann.
Hammer bester Man, vielen Dank werde es die Tage testen
Habe nun alles getestet, funktioniert wunderbar, vielen Dank. Wenn du das jetzt noch in Sepia einbauen könntest wäre das super.
Wa auch noch top wäre wenn man nach eigenen Playlisten suchen könnte und die dann abspielen könnte. Habe gerade die Funktion der ytmusicapi getestet: ytmusic.get_library_playlists()
--> Ergebnis es werden alle id´s und titel der eigenen Playlists zurück gegeben.
Was aktuell noch bissal blöd ist, dass der Login nach jedem Neustart verloren geht, evtl können wir dem Problem auch noch auf die Schliche kommen.
Wenn nicht ist das auch vollkommen in Ordnnung.
Danke für alles
Sorry für die Späte Antwort habe erst vorgestern den pull request gesehen: https://github.com/SEPIA-Framework/sepia-assist-server/commit/f9d051c53583d075046e3c2c271e2a065688bbb1
--> muss noch ein wenig mehr in der Datei anpassen, damit es geht, aber somit funktioniert SEPIA mit der ytmusicapi reibungslos, vielen Dank.
Hier meine weiteren Anpassungen https://github.com/gu3nter/sepia-assist-server/commit/1ce5f085841458873b838525cf29208d23913d0d
Hi,
die "überflüssigen" URL Parameter würde ich drin lassen, die originale YouTube API braucht die (teilweise) und für die custom API sollte es auch nicht stören weil die ignoriert werden bisher. Den leeren Key könnte man noch optimieren, stimmt, oder man schreibt einfach was beliebiges rein wie "test" :-)
Wenn alles glatt läuft mache ich vor Weihnachten wahrscheinlich noch einen offiziellen release, mal gucken :-).
Ui das wäre cool. Ok, wenn die überflüssigen parameter egal sind dann geht ja auch schon so wie von dir erstellt :). Hatte das garnicht getestet, sorry.
Könntest du mir bitte sagen, wie ich https://github.com/fquirin/python-ytmusicapi-server das im autostart ausführen kann?
Benutzt du den Cronjob für SEPIA? Dann könntest du es einfach in die on-reboot.sh
ans Ende schreiben, sowas wie:
cd [my-ytmusicapi-server] && nohup run.sh &> log.out&
Oder das gleiche direkt als Cronjob via cronjob -e
und dann @reboot sleep 80 && cd [my-ytmusicapi-server] && nohup run.sh &> log.out&
.
Das alles ist nicht super elegant, am Besten wäre es einen systemd Service zu erstellen. Das habe ich schon länger vor für SEPIA aber komme doch nie dazu irgendwie :sweat_smile:
Super danke für die Antwort, werde ich dann testen, was für mich am besten ist
Die neuen YouTube Settings sind jetzt verfügbar via SEPIA-Home v2.6.1 :slightly_smiling_face:
Vielen Dank, du bist der Beste
So eine Frage hätte ich dann doch noch, wenn das ok ist :).
Weiter oben hatte ich ja schonmal erwähnt, dass bei mir nach jedem reboot der Login bei Youtube verloren geht Ob Youtube oder Youtube Music, da ist kein unterschied, falls du kein Youtube Mic Bbo hast). Könntest du das bitte bei dir testen, ob dein Login behalten wird nach einem reboot?
Evtl mache ich ja auch etwas flasch, wüsste aber nicht was;)
ich habe gerade mal getestet was passiert wenn ich mich mit dem normalen Google Account bei Youtube einlogge und danach neu starte. Tatsächlich ist der Login dann einfach wieder weg.
Du könntest versuchen das sepia-client/run.sh
Script zu verändern. Unter 'chromedatadir' gibt es die 'exited_cleanly' Zeilen, die würde ich testweise mal rausnehmen.
Wenn das auch nicht hilft könnte man auch das 'user-data-dir' flag entfernen und dann den Browser einmal über den Remote Zugriff einstellen: default_chrome_flags="--user-data-dir=$chromedatadir ...
.
Cool danke für die Tipps. Teste das später Mal und gebe Rückmeldung, ob es geklappt hat
Habe gerade ein Paar Tests mit den von genannten Einstellungen gemacht, jedoch bisher ohne Erfolg.
Werde morgen weitere Tests machen. Eine Frage muss ich nach jedem change der run.sh den chromium Ornder löschen?
Eine Frage muss ich nach jedem change der run.sh den chromium Ornder löschen?
Eigentlich nicht. Wenn du ihn löschst musst du dich danach aber auf jeden Fall neu einloggen, da werden die ganzen User-Settings gespeichert. Wenn du den 'user-data-dir' Flag entfernst sollte der Ordner gar nicht mehr benutzt werden.
Laut Google geht der automatische Login mit dem chromium-browser wohl nicht mehr https://askubuntu.com/questions/1322559/sync-chromium-with-a-google-account-does-not-work-any-more-solutions Könnte man für den Sepia Client den Chrome Browser oder einen anderen verwenden? Falls ja wie ;)
Soweit ich den Link verstehe bezieht sich das nur auf die "sync API" also den Teil der deinen Account mit anderen Browsern synchronisieren würde. Das sollte auf den lokalen Account eigentlich keine Auswirkungen haben.
Diesen Flag zu entfernen hatte nichts gebracht? --user-data-dir=$chromedatadir
Was mich eigentlich verwirrt ist, dass der SEPIA Login ja gespeichert bleibt, das heißt Cache und Browser Storage werden nicht gelöscht.
Könnte man für den Sepia Client den Chrome Browser oder einen anderen verwenden?
Grundsätzlich kannst du jeden Browser nutzen, wenn er denn für das OS verfügbar ist. Beim Raspberry Pi gibt es glaube ich keinen Chrome mehr, zumindest nicht offiziell, nur Chromium. Firefox müsste verfügbar sein (sudo apt install firefox-esr
), habe ich bisher aber gemieden, weil er noch mehr RAM benötigt und keine native WebSpeechAPI Implementierung hat. Die ganze Konfiguration, sprich die Flags fürs Startscript müsste man noch rausfinden ;-)
Konnte das Problem lösen, evtl. auch für YouTube Logins relevant, falls sich dort jemand einloggen möchte:
nun sollte der google login nach einem Neustart erhalten bleiben
PS: musste nichts an der Run.sh verändern :)
danke für deine Mühe @fquirin
Nice :sunglasses: . Ich frage mich ob es dafür einen Browser Flag gibt :thinking:
I have no idea how i could get this working so fast. But im pretty sure, this is because of the awesome documentaion-work done by @fquirin
Here i created a dockerized version of your YTM microservice which seems to be working in my case: https://hub.docker.com/repository/docker/shur3d/ytmusicapi_microservice
Can someone now give me a hint
Sorry you guys are much more advanced than me and i did not really understand every aspect of your discussion ...
EDIT: I did see the "API keys" section in the documentation https://github.com/SEPIA-Framework/sepia-docs/wiki/API-keys
But i think YTM is not fully integrated yet?
Here a short "how to" how i got it working.
A quick tip: maybe try it with your normal browser first before using the DIY client in remote. It should be a bit easier to get started and to debug problems ;-)
@gu3nter
14. done YT Music shall work now in combinaton with sepia
I now guess, that the correct setting in my client is:
And then i should only request something?
Does not work for me. "Sorry but could not find anything to play"
Default musc app: Embedded Player
This should be "YouTube Widget" or you can simply say "play XY on Youtube".
OK, that is still a problem for me.
It works to request something like "Play the Song Carry On My Wayward Son"
What then happens is:
As example this is where the link on the right side of the found title points to https://www.youtube.com/embed/tz6u9suVNlY
Even if i open this in the browser its not accesssible Seems that the embed-part is not working?
And in General: What i want to achieve is
Is this even possible? There is no big use for me if i can not access MY Music and MY Playlists from YouTube Music
Play the Song Carry On My Wayward Son
Funny, I had this song in mind as well this morning :smiley:
I quickly tried it in my desktop browser test version, in general it seems to work (I simply used the URL but it opens the same player widget):
Is this even possible? There is no big use for me if i can not access MY Music and MY Playlists from YouTube Music
As far as I understand @gu3nter is doing exactly that.
OK i have no idea, why there is no connection .... docker? ports stuff? But the request comes from within docker ....
I quickly tried it in my desktop browser test version, in general it seems to work (I simply used the URL but it opens the same player widget):
As far as I understand @gu3nter is doing exactly that.
OK ... i have no idea what to do I already got an youtube api token via the google cloud site but i dont know if it is working or not
Can you press F12 in Vivaldi to check the dev console for errors? I thought it might be an SSL/HTTPS issue but I've tried again in Firefox and with insecure origins and the video was still working vor me :thinking: Does the video open in Youtube if you press the button on the top right of the card (open in new tab/external) or the text in the center?
I havent tried playing Playlists, i think this is not possivle witch the current Microservice, because it is searching for Songs not Playlists from my point of view. I havent used YouTube music or YouTube the last time, i will try i thease days and let you know if i have the same problem as you at the moment
Tried it right now, frist try same behavior like shu-red told. Rebooted sepia Server, after that the song played, dont know the reason why i Had top reboot, but this solved the issue.
PS: as far as i know, every content which ist found in YouTube music can be played via YouTube premium, so no need to play only the yt music as music
Can you press F12 in Vivaldi to check the dev console for errors? I thought it might be an SSL/HTTPS issue but I've tried again in Firefox and with insecure origins and the video was still working vor me thinking Does the video open in Youtube if you press the button on the top right of the card (open in new tab/external) or the text in the center?
Yes for each request the errors get more and more for this issue:
Tube premium, so no need to play only the yt music as music
Yes, but i would like do consequently only stream music in high quality. Thats why you can deactivate in the native YTM-player to stream videos if you just want to listen to good quality music.
What im trying to get here is a "as-good-as-possbile"-replacement for my current google home speaker And one of my main use-cases is for sure: Listening to Music through YT Music
So it would also be absolutely enough for me to stream this via the Embedded Player and being able to use the Sepia-native controls for media
Because a cookie’s SameSite attribute was not set or is invalid, it defaults to SameSite=Lax, which prevents the cookie ...
This is an "expected" error, because of the embedding and settings Youtube is not allowed to store cookies. I get this on all browsers but it shouldn't stop the video from working :thinking: . Maybe there are some other browsers settings messing with the video:
Just for testing could you try a different browser? Chrome, Firefox, Edge, Chromium maybe?
Hmh,
In Vivaldi:
In Chromium
In my network
Then i got something working: Sitting here in Germany i tried "Nena - 99 Luftballons" --> It worked, even if it only worked after refreshing it directly in the browser url
Nontheless --> This is now the only song working for me XD
Can there be some sort of geoblocking stuff? I dont get it anymore ... But 99% of the /embed/ urls are not working for me ...
Same from my cellphone ...I really need to think about if there is something in my home network going wrong ...
It also does not work if opening the url https://www.youtube.com/embed/tz6u9suVNlY directly via browser ... In Chromium: Same Result
That really seems like an issue not related to SEPIA :grimacing:
Nontheless --> This is now the only song working for me XD
:laughing: ok, weird, I'm in Germany as well and can play all of your previous URLs :thinking: . You are not using any VPN or something? Usually if a Youtube video doesn't work because of your location it says "not available in your region".
Hallo habe mir vor kurzen YouTube Premium inklusive YouTube music geholt. Jetzt meine Frage: So weit ich verstanden habe gibt es keine offizielle YouTube music Api seitens Google, was schade ist da YouTube music erheblich mehr Inhalte als YouTube hat.
Habe mich nach einer möglichen Lösung umgesehen und folgendes GitHub Projekt gefunden, was aus meiner Meinung nach die fehlende Api lösen könnte
https://github.com/sigma67/ytmusicapi
Hier müsste dann aber auch ein embeded Player für gecodet werden, was ich leider nicht kann :( Dieser Player müsste nach meinem Verständnis dann wie die Api Lösung die Cookie Übergabe regeln können. So viel zu meiner Halbwissens Theorie, ob das technisch möglich ist weiß ich leider nicht genau.
So jetzt meine eigentlich Bitte, ist es möglich YouTube music mit dem oben genannten GitHub Projekt zu realisieren? Falls ja würde ich mich sehr darüber freuen, SEPIA ist der geilste shit ever ;)