Na specjalną prośbę userscript który ułatwia pobieranie archiwalnych audycji z TOK FM
tokfm.user.js
Działa to tak, że pod każdą audycją pokazuje się polecenie (wget ...) jakie należy wydać aby zapisać plik na dysku.
Niestety przeglądarka nie pozwala na ustawianie dowolnych nagłówków zapytania z poziomu javascriptu więc nie dało rady dodać tam bezpośredniego linka, trzeba się posłużyć wget-em.
Po ostatnich zmianach na stronie aby dostać polecenie do pobrania audycji trzeba kliknąć na „więcej »”
Aktualizacja 22.01.2017 - poprawiona obsługa abonamentów/audycji premium
Przepraszam ale co dokładnie trzeba zrobić z:
OdpowiedzUsuń"wget ... .mp3"?
Nie wiesz co to jest wget?
UsuńTakie podstawy:
http://pl.wikipedia.org/wiki/Wget
http://osworld.pl/wget-nie-tylko-dla-poczatkujacych/
A skrypt mówi przecież co dokładnie trzeba zrobić - wystarczy kopiuj wklej z przeglądarki do terminala.
Już sobie poradziłem, najwyraźniej wget z pakietu GnuWin wymaga cudzysłowu podwójnego. Dzięki Marku!
OdpowiedzUsuńTo nie powinno mieć znaczenia dla wgeta bo cudzysłowy są tylko dla powłoki aby wiedziała, że dany ciąg znaków to jest jeden argument, ale jeśli ktokolwiek miał by mieć z tym problem to już zamieniłem cudzysłowy wypisywane przez skrypt na podwójne.
Usuńjak to uruchomic pod windowsem
OdpowiedzUsuńMusisz zainstalować wgeta, bo pod windowsem wget sam się nie zainstaluje.
UsuńA jak już będziesz miał zainstalowanego wgeta to wystarczy skopiować to co napisał skrypt.
zinastalowałem wgeta na windowsie, daje komendę programowi, pokazuje sie okienko, plik się pobiera. problem mam taki - że nie wiem gdzie wget zapisuje ten plik...
UsuńPobiera się tam gdzie wpisujesz polecenie.
UsuńZobacz co jest na początku linii przy wpisywaniu polecenia.
Aby zapisać w innym miejscu zmień bieżący katalog za pomocą polecenia cd
Na przykład:
cd \
spowoduje, że potem będzie zapisywał na samej górze w katalogu głównym.
Podobnego na pewno nie. Strona polskiego radia korzysta z rtmp - do pobierania danych udostępnionych na tym protokole służy rtmpdump. Bez rtmpdump się nie pobierze a z drugiej strony samo rtmpdump ma już wszytko co potrzeba i nie widzę jak mógł bym pomóc jakimś skryptem. Opisywałem już na blogu jak to działa.
OdpowiedzUsuńPod windowsem gdzie korzystanie z takich narzędzi było by bardzo utrudnione są programy (przynajmniej z 10 różnych) będące połączeniem przeglądarki internetowej i rtmpdumpa które przechwytują wszystkie odtwarzane w nim strumienie jak leci. Coś takiego można by zrobić tylko po co skoro jest już wiele gotowych programów?
W kodzie strony jest taki adres - chociaż używany jest tylko jako ID i odtwarzacz z niego nie korzysta. W sumie można by to wykorzystać i zrobić aby ten link był klikalny na playliście. Tylko czy tego zaraz nie wyłączą?
OdpowiedzUsuńWygląda na losowy ciąg znaków generowany w momencie wgrywania zdjęcia na serwer (stały - nie zmienia się, a odnośnik do zdjęcia statycznie zapisany w kodzie strony).
OdpowiedzUsuńCzyli nic nie da się z tym zrobić? Jest jakiś inny sposób na rozpoznanie adresu do oryginalnego zdjęcia?
OdpowiedzUsuńmam ściągnąć i odpalić skrypt gdy otwarta jest strona tok ft?Jeśli tak to nie działa.
OdpowiedzUsuńW firefoksie trzeba dodać ten skrypt do greasemonkey
UsuńW operze umieścić w katalogu ze skryptami użytkownika
Po wejściu na stronę tok.fm wykona się automatycznie.
Dzieki - dziala.
OdpowiedzUsuńBrylant! :)
OdpowiedzUsuńZacząłem korzystać z przeglądarki Vivaldi. Tam, jak i w innch chromach, jest dodatek Tempermonkey i za nic nie da się dodać tego skryptu. Coś sie da z tym zrobić?
OdpowiedzUsuńPonieważ już druga osoba pyta o chroma/vivaldi zainstalowałem aby sprawdzić.
UsuńAby coś tam dodać trzeba skrypt przykleić przez schowek bo bezpośrednio ze strony nie potrafi wczytać skryptu.
Niestety okazało się, że ma własny format skryptów z niekompatybilny z userscriptami greasemonkey i operą.
To dziwne bo kiedyś stare wersje chroma obsługiwały userscripty nawet bez żadnych dodatków (traktowały każdy userscript jako dodatek) i wtedy skrypty z greasemonkey i opery działały.
Niezbyt mi się podoba pisanie 2 wersji każdego skryptu, dlatego pokombinuję czy nie da się czegoś zrobić aby w chromie przywrócić jego dawną funkcjonalność
Już mam sposób. Nie należy korzystać z tampermonkey.
UsuńPodaję instrukcję jest identyczna w chromie i vivaldi (sprawdziłem w obu przeglądarkach skrypt działa)
1 Uruchom przeglądarkę z parametrami:
--enable-easy-off-store-extension-install --enable-user-scripts
2 Otwórz zakładkę z rozszerzeniami (extensions)
3 Przeciągnij plik ze skryptem na zakładkę z rozszerzeniami.
Każdy skrypt będzie traktowany jako osobny dodatek.
Jak uruchomić przeglądarkę, tak jak to opisujesz w punkcie pierwszym?
Usuń"1 Uruchom przeglądarkę z parametrami:
--enable-easy-off-store-extension-install --enable-user-scripts"
A jak uruchamiasz przeglądarkę?
UsuńJeśli poprzez wpisanie google-chrome w konsoli to napisz zamiast tego
google-chrome --enable-easy-off-store-extension-install --enable-user-scripts
Jeśli masz skrót na pulpicie to edytuj go i dopisz na końcu polecenia to
--enable-easy-off-store-extension-install --enable-user-scripts
Mamy wrzesień 2016 a ten skrypt wciąż działa jak złoto. Kudos dla @Marek!
OdpowiedzUsuńNiestety przedmówca przechwalił.
OdpowiedzUsuńSkrypt od dzisiaj nie działa już tak jakby się chciało.
Dostępna jest tylko ostatnia audycja do ściągnięcia za pomocą tego skryptu.
W przypadku starszych autycji link (wget...) się nie generuje. :-(
Bardzo proszę autora o naprawienie.
Skrypt nadal działa z wszystkimi audycjami tylko wygląda to nieco inaczej.
UsuńTeraz trzeba kliknąć na link "więcej" znajdujący się po prawej stronie nad odtwarzaczem każdej audycji.
Otworzy to tą wybraną audycję w nowym oknie i tam będzie polecenie do wpisania.
Zgadza się. Skrypt działa. Sprawdzałem czy nie ma czasem linku po kliknięciu "więcej", ale chyba za krótko czekałem na wygenerowanie linku.
OdpowiedzUsuńW każdym razie, po kliknięciu na "więcej", link odpowiedni się generuje.
DZIAŁA!!!
Dzięki wielkie za support.
Uruchomiłem skrypt, ale dla każdego linku kieruje do pliku 1.mp3 i dostaję błąd 404. Czy ja coś robię nie tak? Może korzystam z jakiejś nieaktualnej wersji skryptu?
OdpowiedzUsuńAdam
Daj adres jakiejś strony z audycją dla której coś się źle generuje.
UsuńSkrypy nie działa na audycje, które są dostępne tylko jak ma się wykupiony abonament. (np http://audycje.tokfm.pl/podcast/Owsiak-jest-zbyt-wyrazisty-politycznie-Piotr-Gursztyn-w-dyskusji-publicystow/45390#)
UsuńZ tym to chyba nie da się nic zrobić, prawda?
O ile tylko da się wyciągnąć ID tego pliku to pewnie by się dało.
UsuńA jednak działa, być może ten problem dotyczy tylko niektórych audycji.
OdpowiedzUsuńAdam
Pytanie do instalacji w Chromie -- skrypt instaluje się, działa bardzo ładnie ale tylko do momentu zamknięcia przeglądarki. Po ponownym uruchomieniu wyskakuje komunikat, że chrome zablokował nieznany dodatek. Na liście dodatków tokfm.user.js jest wyłączony i jedyne co można z nim zrobić to usunąć. Chrome uruchamiam ze wspomnianymi wcześniej flagami. Wersja przeglądarki to 54.0.2840.99 (jeśli to ma jakieś znaczenie). Help! :)
OdpowiedzUsuńgenialne narzędzie, dzięki za stworzenie. szczęście, że tu trafiłem. lubię słuchać EKG, a ostatnio wprowadzili abonament Premium na tę audycję.
OdpowiedzUsuńGenialny skrypt. Dzięki. Naprawdę dobra robota. Miałem przez chwilę wersję płatną tok.fm, ale program do odsłuchiwania jest tak tandetny, że zrezygnowałem z niego i abonamentu. Teraz pobrałem sobie wszystkie odcinki homo science i zrobiłem z niego audiobooka o długości 5 dni, 19 godziń i 19 minut.
OdpowiedzUsuńHej Alex, podzielisz się audycją?
UsuńDzień dobry,
OdpowiedzUsuńniestety nie radzę sobię z wget'em w Windows.
Po wpisaniu kodu np: wget --post-data="pre=load" --header="X-Tuba:00/00/04/60/38.mp3" --header="X-Tuba-Load:58AC32C2.C364.A921.890C.C663." --header="X-Tuba-Token:A0.47FA.5EEA.56B3.971D." http://storage.tuba.fm/load_podcast/46038.mp3
dostaję komunikat o błędzie:Invoke-WebRequest : A positional parameter cannot be found that accepts argument '--header=X-Tuba:00/00/04/60/38.mp3'.
At line:1 char:1
+ wget --post-data="pre=load" --header="X-Tuba:00/00/04/60/38.mp3" --he ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Z góry dziękuję za pomoc.
A gdzie próbujesz to wpisywać?
UsuńKomunikaty wyglądają tak jak jakiś powershell, nie używaj tego to niepotrzebne do działania wgetowi a tylko próbuje jakoś interpretować parametry dla wgeta i głupieje przez to.
Wklej polecenie w zwykłe cmd.
A jak z jakiegoś powodu musisz używać powershella to weź całość w pojedynczy cudzysłów i dopisz na początku iex czyli aby zawołać wgeta z powershella trzeba napisać coś takiego:
iex 'wget --post-data="pre=load" --header="X-Tuba:00/00/04/60/38.mp3" --header="X-Tuba-Load:58AC32C2.C364.A921.890C.C663." --header="X-Tuba-Token:A0.47FA.5EEA.56B3.971D." http://storage.tuba.fm/load_podcast/46038.mp3'
Wydaje mi się, że z tym iex i dodatkowym cudzysłowem powinno pójść ale nie mam na czym przetestować.
A i pamiętaj o ścieżkach, pod windowsem wget nie zawsze instaluje się tam gdzie path więc albo uruchamiasz to uruchamiasz z katalogu w którym jest wget albo ustawiasz path do miejsca gdzie znajduje się wget.exe albo przenieść wget.exe do miejsca gdzie już jest ustawiony path np do C:\Windows
Bardzo dziękuję. Po tych poradach poradziłem sobie.
UsuńRzeczywiście próbowałem wpisywać to w Powershellu.
Dziękuję również o radzie z dodaniem ścieżki.
Dopiero zaczynam z tymi "archaicznymi" sposobami
obsługiwania się komputerem jak cmd:).
Teraz wszystko działa idealnie.
Wszystko działało świetnie do wczoraj. Dziś po wklejeniu do WGET'a polecenia ze skryptu wychodzi :
OdpowiedzUsuńc:\wget>wget --post-data="pre=load" --header="X-Tuba:00/00/04/62/25.mp3" --header="X-Tuba-Load:58CAF82A.AC61.F9E4.33D3.DE2A." --header="X-Tuba-Token:7F.78A8.A141.C188.3778." http://storage.tuba.fm/load_podcast/46225.mp3
--2017-03-16 21:40:45-- http://storage.tuba.fm/load_podcast/46225.mp3
Resolving storage.tuba.fm (storage.tuba.fm)... 178.33.226.213, 178.33.227.18, 5.39.69.85, ...
Connecting to storage.tuba.fm (storage.tuba.fm)|178.33.226.213|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-03-16 21:40:45 ERROR 404: Not Found.
I to dla dowolnej audycji. Coś się zmieniło? Błąd?
Pozdrawiam,
Marcin
Podejrzewam, że to celowa zmiana na stronie aby skrypt przestał działać.
UsuńTydzień wcześniej dostałem maila z prośbą o usunięcie skryptu i komentarzy pod nim. Nie była to zbyt grzeczna prośba, a gdy zapytałem o co chodzi i dlaczego miał bym coś usuwać nie dostałem żadnej odpowiedzi.
W sumie to teraz jest nawet prościej niż kiedyś - dało by się linkować do pliku bezpośrednio w przeglądarce bez konieczności wołania wgeta.
Ale wiedząc, że oni wiedzą o blogu i najwyraźniej zmieniają stronę celowo to niezbyt mi się chce bawić w berka i zmieniać skrypt tylko po to aby za chwilę ktoś zmodyfikował stronę.
Jeśli ktoś potrzebuje pobrać plik może skorzystać z Tamper data lub podobnego dodatku (trzeba tylko przechwycić żądanie przed jego wysłaniem bo linki jednorazowe), to działa zawsze.
Może wkurzyło ich pobieraie treści premium? Czy nie chciałbyś spróbować na próbę zmodyfikować skrypt, by pobieral chociaż te nonpremium? Może to im wystarczy...
UsuńA tak z ciekawości: tym Tamper Data da się zobaczyć każdy link, czy tylko nonpremium? Bo w sumie nonpremium, skoro da się odsłuchać, to i da się łatwo zapisać...
UsuńTo do czego masz dostęp do słuchania. Jeśli możesz słuchać premium (masz wykupiony abonament) to też zapiszesz. Jeśli nie masz gdzieś dostępu to się nie przyda.
UsuńCześć,
UsuńA jak tego używać? Jakiś link z pomocą dla laików?
Z góry dzięki..
Marc
Potwierdzam (baaardzo lubię ten skrypt):
OdpowiedzUsuń$ wget --post-data="pre=load" --header="X-Tuba:00/00/04/74/50.mp3" --header="X-Tuba-Load:58CB9DAE.A3D6.793C.CB5B.7F0B." --header="X-Tuba-Token:33.989F.5407.2A1C.CD35." http://storage.tuba.fm/load_podcast/47450.mp3
--2017-03-17 09:32:47-- http://storage.tuba.fm/load_podcast/47450.mp3
Resolving storage.tuba.fm (storage.tuba.fm)... 178.33.227.18, 5.39.69.85, 5.39.69.234, ...
Connecting to storage.tuba.fm (storage.tuba.fm)|178.33.227.18|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-03-17 09:32:47 ERROR 404: Not Found.
Mogę potwierdzić:
OdpowiedzUsuń1. wyskakuje błąd identyczny jak powyżej (404 Not Found);
2. działał do wczoraj świetnie, dziś nie działa nawet na audycji ściągniętej z sukcesem poprzednio;
3. podobnie jak przedmówca, również uwielbiam ten skrypt.
To i ja pochwalę skrypt - jest genialny! I owszem, aktualnie nie działa.
OdpowiedzUsuńMam to samo :(
OdpowiedzUsuńTakie spostrzeżenie:
OdpowiedzUsuń1. na stronie z ogólnym spisem podcastów można odsłuchać niektóre audycje (darmowe), czyli linki do plików mp3 są i działają. Problem z tym, że na tej stronie nie pojawiają się pod poszczególnymi podcastami komendy wgeta.
2. aby te komendy zobaczyć, trzeba kliknąć 'więcej' przy konkretnym podcaście, wtedy wczytuje się następna strona z pojedynczym playerem i tam te komendy dla wgeta się już pojawiają. Niestety tam nie udało mi się odsłuchać już ani jednej darmowej audycji - zupełnie jakby linki do plików były rzeczywiście jakieś pomylone.
Konkluzja: być może to nie skrypt przestał działać, tylko po kliknięciu 'więćej' przy konkretnym podcaście dostajemy stronę z pojedynczym playerem, ale ze złym linkiem, skoro nawet darmowej audycji nie można tam odsłuchać...
Pomysł (nie wiem na ile realny): może da się powrócić do pierwotnej idei działania skryptu - to znaczy, żeby komendy wgeta pojawiały się pod każdym podcastem na stronie z ogólnym spisem audycji...
cześć Marku, możesz sprawdzić. do czwartku skrypt działał poprawnie.
OdpowiedzUsuń"HTTP request sent, awaiting response... 404 Not Found
2017-03-20 15:09:22 ERROR 404: Not Found."
adres http://audycje.tokfm.pl/podcast/Historia-pewnej-ustawy-z-lapowka-w-tle-Goscmi-byli-Joanna-Solska-Michal-Broniatowski-i-Pawel-Soltys/47453
OdpowiedzUsuńno dobrze, ale gdzie ten skrypt? Klikam w tokfm.user.js i wracam tutaj… to gdzie on?
OdpowiedzUsuńjest jakieś rozwiązanie? Cały czas
OdpowiedzUsuń"HTTP request sent, awaiting response... 404 Not Found
2017-03-20 15:09:22 ERROR 404: Not Found."
Not Found - u mnie też :/
OdpowiedzUsuńCzy mógłbym prosić o jakiś kontakt na priv do Pana? (może mail)
OdpowiedzUsuńMoże się jakos dogadamy w sprawie skryptu ?
Ten skrypt nie działa już od 4 lat.
UsuńTam nie było niczego ciekawego, adres pliku do pobrania to był numer audycji co 2 cyfry rozdzielony znakiem /, a żeby pobrać plik trzeba było w nagłówku podać sumę kontrolą md5 policzoną z nazwy pliku i daty.
Tak wyglądała zasadnicza część tego skryptu:
var linki=document.getElementsByTagName('li');
for (i=0;i<linki.length;i+=1)
if (linki[i].hasAttribute('class'))
if (linki[i].getAttribute('class') == 'entry')
if (linki[i].innerHTML.indexOf('data-id="') > 0)
{
file_id=linki[i].innerHTML.substr(linki[i].innerHTML.indexOf('data-id="')+9,10);
file_id=file_id.substr(0,file_id.indexOf('"'));
tmpid=parseInt(file_id);
if (tmpid == 1)
{
urlid = document.location.href.split("/");
file_id=urlid[urlid.length-1];
tmpid=parseInt(file_id);
}
a=tmpid%100;
tmpid = Math.floor(tmpid/100);
b=tmpid%100;
tmpid = Math.floor(tmpid/100);
c=tmpid%100;
tmpid = Math.floor(tmpid/100);
d=tmpid%100;
e = Math.floor(tmpid/100);
file_name=e.pad()+'/'+d.pad()+'/'+c.pad()+'/'+b.pad()+'/'+a.pad()+'.mp3';
d = new Date();
var n = d.getTime();
n=Math.floor(n/1000);
n=n.toString(16).toUpperCase();
mdp=MD5("MwbJdy3jUC2xChua/" + file_name + n);
load=n + "." + sub4(mdp,3) + "." + sub4(mdp,2) + "." + sub4(mdp,4) + "." + sub4(mdp,5) + ".";
token=Math.round(Math.random() * 255).toString(16).toUpperCase() + "." + sub4(mdp,0) + "." + sub4(mdp,1) + "." + sub4(mdp,7) + "." + sub4(mdp,6) + ".";
linki[i].innerHTML = linki[i].innerHTML + 'wget --post-data="pre=load" --header="X-Tuba:' + file_name + '" --header="X-Tuba-Load:' + load + '" --header="X-Tuba-Token:' + token +'" http://storage.tuba.fm/load_podcast/' + file_id + '.mp3';
linki[i].setAttribute('class', 'downloadable');
Ale potem zmienił się serwer z którego pobierany były pliki a żeby mieć do niego dostęp trzeba było się normalnie autoryzować więc pisanie kolejnego skryptu nie miało już sensu.
Teraz rozumiem.
OdpowiedzUsuńSerdecznie dziękuję za odpowiedź.
Nie mniej jednak...szkoda.
Ech, w dzisiejszym świecie nie ma nic za darmo. Takie czasy.....
witam, jest gdzies moze archiwum audycji z danego dnia tak jak dla RNS na simx?
OdpowiedzUsuńTutaj, ale nie ma wszystkich: https://myradioonline.pl/tok-fm/archiv#other-radios
UsuńKochani miałam bardzo stary skrypt na vod.tvp.pl do wczoraj działał.Strona na vod od dziś całkowicie się zmieniła i skrypt niestety nie działa.....Czy ma ktoś jakiś nowy ? proszę o info i pomoc pozdrawiam
OdpowiedzUsuń