Nie wiem jak sprawdzić czy na poniższym kanale yt jest nowy film dla wybranej playlisty- link poniżej.
Jak to sprawdzę, to chcę pobrać film - z tym sobie poradzę.
Nie wiem jak sprawdzić czy na poniższym kanale yt jest nowy film dla wybranej playlisty- link poniżej.
Jak to sprawdzę, to chcę pobrać film - z tym sobie poradzę.
Subskrybuj?
@sensu: chcę aby to sprawdzanie było automatyczne (planuję użyć CRONa), nie chcę się logować ani subskrybować o ile to możliwe.
Skrypt który sprawdzi, że jest nowy filmik ma zwrócić link do niego.
Skoro “normalne” rozwiązania cię nie satysfakcjonują to Youtube udostępnia API - https://developers.google.com/youtube/v3/docs/search/list
Możesz zrobić aplikację, która z niego korzysta i odpalać przez CRONa.
Oczywiście musisz użyć jakiegoś innego języka / narzędzia. W czystym Bashu nie połączysz się z web serwisem.
Możesz pokombinować.
Nie znam się na Youtube, ale najprostszym rozwiązaniem, dostępnym z basha, jest użycie cp (lub mv) dla poprzednio ściągniętego pliku (o nowej nazwie), pobranie interesującej strony przez curl do pliku o nowej nazwie, wywołanie cmp, i w zależności od wyniku cmp, wywołanie wall lub czegoś podobnego.
Jak zdobyć informacje, że plik się pojawił oraz zdobyć jego link?
Polecenie wget powinno pobrać plik.
Oj ludzie ludzie. Kombinujecie jak “koń pod górkę”, a rozwiązanie jest na wyciągnięcie ręki.
#!/bin/bash
#URL playlisty YOUTUBE
URL="https://www.youtube.com/watch?v=99JAI24Zd24&feature=youtu.be&list=PLOYHgt8dIdoymv-Wzvs8M-OsKFD31VTVZ"
if [ -f ~/kanal_YT.tmp ]; then
ILE_LAST=$(cat ~/kanal_YT.tmp)
ILE=$(youtube-dl -s --get-filename $URL | wc -l)
if [ "$ILE" -gt "$ILE_LAST" ]; then
notify-send "Powiadomienie" "Wykryto nowy filmik na kanale Youtube !" -t 10000
echo $ILE > ~/kanal_YT.tmp
NEW_VIDEO_ID=$(youtube-dl -s --playlist-items $ILE --get-id $URL)
if zenity --question --text="Otworzyć nowe wideo YT: https://www.youtube.com/watch?v=$NEW_VIDEO_ID"; then xdg-open "https://www.youtube.com/watch?v=$NEW_VIDEO_ID"; fi
else
exit 0
fi
else
youtube-dl -s --get-filename $URL | wc -l > ~/kanal_YT.tmp
fi
chmod +x notify-yt.sh
DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus ~/notify-yt.sh
Oczywiście zakładam, że skrypt jest w katalogu home użytkownika.
Liczbę “1000” zamień na ID swojego użytkownika: id -u $USER
(pewnie też będziesz miał 1000)
Display też sprawdź czy się zgadza: echo $DISPLAY
- jeżeli nie to podmień.
Skrypt zlicza ilość filmików na podanym kanale YT i zapisuje do pliku.
Przy następnym wywołaniu sprawdza, czy ilość jest większa, jeżeli tak to pokazuje powiadomienie i zapamiętuje nową ilość w pliku. Jeżeli nie ma nowych plików to nic nie robi.
EDIT: zaktualizowałem - teraz też wyświetlane jest pytanie o to, czy otworzyć nowy filmi, ale wymagana jest paczka “zenity”, a także ewentualne zastąpienie xdg-open alternatywą dla danego środowiska graficznego.
Dzięki @Domker.
Chcę aby skrypt konwertował do mp3 oraz avi i zapisywał w katalogu ~/yt/.
Powyższy skrypt zgłasza błąd jak poniżej.
*./yt.sh: line 12: notify-send: command not found
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Jakbyś czytał od punktu pierwszego to by działało.
Doinstaluj notify-send.
Racja.
Dzięki @Domker.
Mam błąd podczas instalacji.
E: Unable to locate package notify-send
1.Czy notify-send nie wyświetla dymków powiadomień w trybie graficznym? Nie używam tego nie środowiska lecz tylko konsoli. W zasadzie nie potrzebuje powiadomień, wystarczy automatyczne wykonanie zadania poniżej po stwierdzeniu że jest nowe nagranie.
https://www.youtube.com/user/MiroslawZelent/videos
lub
https://www.youtube.com/channel/UCzn6vAfspIcagLax1fck_jw/videos
chodzi o playlistę zły komentarz napisałem.
Tak notify-send pokazuje dymki z powiadomieniami.
Jeżeli nie chcesz to wywal ze skryptu.
Dla mp3 (i mp4 video):
youtube-dl -k --format mp4 --extract-audio --audio-format mp3 "https://www.youtube.com/watch?v=$NEW_VIDEO_ID"
AVI oO?
Nie lepiej MP4 standardowo? Wtedy obyłoby się bez żadnej konwersji. W każdym razie mp4 (mpeg4) jest obsługiwany przez większość urządzeń.
Powyższą linijkę skryptu dodaj przed pytaniem lub po pytaniu zenity.
Możesz oczywiście na wzór pytania od otwarcie nowego wideo zrobić pytanko o pobranie/konwersję.
EDIT: do określenia lokalizacji zapisu możesz użyć parametru, albo po prostu przed poleceniem przejdź do odpowiedniego katalogu: cd ~/yt
Jeżeli chcesz mieć podgląd na postęp pobierania itp. to dodaj na końcu za _ID" znak spacja i &
Wtedy poleceniem jobs
wyświetlisz zadnia ja fg NUMER_ZADANIA
podglądniesz jaki jest postęp.
Zanim weźmiesz się za modyfikacje skryptów bash najpierw poczytaj sobie kursy w internecie i naucz się porządnie składni i przede wszystkim odczytywania błędów.
To tylko taka drobna rada, bo to co dopisałeś nie ma w ogóle sensu
#!/bin/bash
#URL playlisty YOUTUBE
URL="https://www.youtube.com/watch?v=99JAI24Zd24&feature=youtu.be&list=PLOYHgt8dIdoymv-Wzvs8M-OsKFD31VTVZ"
if [ -f ~/kanal_YT.tmp ]; then
ILE_LAST=$(cat ~/kanal_YT.tmp)
ILE=$(youtube-dl -s --get-filename $URL | wc -l)
if [ "$ILE" -gt "$ILE_LAST" ]; then
echo $ILE > ~/kanal_YT.tmp
NEW_VIDEO_ID=$(youtube-dl -s --playlist-items $ILE --get-id $URL)
if zenity --question --text="Otworzyć nowe wideo YT: https://www.youtube.com/watch?v=$NEW_VIDEO_ID"; then xdg-open "https://www.youtube.com/watch?v=$NEW_VIDEO_ID"; fi
[ ! -d ~/yt ] && mkdir ~/yt
if zenity --question --text="Zapisać nowe wideo do plików mp4 (video) i mp3 (audio)?"; then cd ~/yt && youtube-dl -k --format mp4 --extract-audio --audio-format mp3 "https://www.youtube.com/watch?v=$NEW_VIDEO_ID"; fi
else
exit 0
fi
else
youtube-dl -s --get-filename $URL | wc -l > ~/kanal_YT.tmp
fi