Youtube playlistből az időrenben utolsóként feltöltött video lejátszási linkje
2021-05-02T10:13:04+02:00
2021-05-03T09:07:24+02:00
2022-08-12T02:25:30+02:00
tivisu
Sziasztok,
Youtube playlistből kellene kiolvasnom az aktuális (utoljára feltöltött) videót.
Nézegettem a Google Youtube API-t de igazából nem értettem a módját, és nem teláltam olyan megoldást, amit meg is értettem volna. Annyit láttam, hogy talán kellene a csatorna ID-száma is, viszont jó lenne, ha az nem kellene, hanem csak a playlist - persze, ha erre van megoldás.
Lényegében az adatbázisba csak a playlistet vinném be, és az utolag feltöltött videót olvasná be az oldalra.

Egy példa:

https://www.youtube.com/playlist?list=PLW8l7rX2YaXkaSI8GGbmqPjOEmfzd2hz3

Ebből meg szeretném kapni a "watch" linket.

https://www.youtube.com/watch?v=LyzziLETNUw
Előre is kösznöm segítségeteket,
T
Mutasd a teljes hozzászólást!
API nélkül is működik, de nem ajánlom:

<?php $file = file_get_contents ( 'https://www.youtube.com/playlist?list=PLW8l7rX2YaXkaSI8GGbmqPjOEmfzd2hz3' ); preg_match ( '/{"videoId":"(?<v>.*?)"/', $file, $foo ); print 'https://www.youtube.com/watch?v=' . $foo [ 'v' ]; ?>
Mutasd a teljes hozzászólást!

  • Én nem a YouTube API-jával szoktam az ilyesmit csinálni, hanem van egy nagyon jó kis youtube-dl nevű parancssoros program. Ezen a módon elindítva:

    youtube-dl --dump-json https://www.youtube.com/watch?list=PLxnRKDVhX8u_tB4Yctp90XogHsyZMax20 > out.json
    Kapsz egy olyan out.json nevű fájlt, aminek minden sora egy-egy JSON dokumentum (videónként). És benne van a bűvös property, amit keresel:

    { "webpage_url": "https://www.youtube.com/watch?v=To5wq2G4DRU", "upload_date": "20210206", ... }
    Ezek alapján a programodban már ki tudod keresni upload_date alapján a legfrissebb videót. Sajnos nem percre pontos, így egy nap, ha több videó kerül feltöltésre, akkor pontatlan lehet. Ettől függetlenül close enough.
    Mutasd a teljes hozzászólást!
  • Nos, utánanéztem a youtube-dl-nek és látom, hogy ehhez installálni kéne. Az a gond, hogy a szerverre sajnos nem tudok installálni, mivel azt a szolgáltató nem "engedi", vagyis valami más megoldást kéne találnom... plusz python... :(
    Itthon az Ubuntun kipróbáltam, és valóban szépen kilistázza a videókat.
    Mutasd a teljes hozzászólást!
  • API nélkül is működik, de nem ajánlom:

    <?php $file = file_get_contents ( 'https://www.youtube.com/playlist?list=PLW8l7rX2YaXkaSI8GGbmqPjOEmfzd2hz3' ); preg_match ( '/{"videoId":"(?<v>.*?)"/', $file, $foo ); print 'https://www.youtube.com/watch?v=' . $foo [ 'v' ]; ?>
    Mutasd a teljes hozzászólást!
  • Miért nem ajánlod?
    Mutasd a teljes hozzászólást!
  • Azért mert bármikor változhat a YouTube forráskódja és akkor lehet, hogy ez már nem fog működni. Szóval ez csak egy ideiglenes, gyors megoldás. Az API-t ajánlanám, de azt nem ismerem, illetve időm sincs ismerkedni vele. Inkább várj, hátha segít valaki.

    $file = file_get_contents ( 'https://www.youtube.com/playlist?list=PLW8l7rX2YaXkaSI8GGbmqPjOEmfzd2hz3' ); if ( preg_match ( '/{"videoId":"(?<v>.*?)"/', $file, $foo ) ) { print 'https://www.youtube.com/watch?v=' . $foo [ 'v' ]; } else { print 'Hiba.'; }
    Mutasd a teljes hozzászólást!
  • Köszönöm a válaszod, viszont akkor ehhez még csak egy kérdés, hogy ebben a scriptben mi az, amit változtatni kell, ha változik a Youtube-on a forráskód?
    Mutasd a teljes hozzászólást!
  • Ha az URL nem fog változni és a file_get_contents függvény is elég lesz így, akkor:

    {"videoId":"(?<v>.*?)"
    Mutasd a teljes hozzászólást!
  • Köszönöm, amikor lesz időm, akkor foglalkozom az API-val is... Remélem nem lesz rá egyelőre szükségem.

    Köszönöm H.Lilla-nak is.


    Üdv,
    T
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd