JDownloader Community - Appwork GmbH
 

Reply
 
Thread Tools Display Modes
  #1  
Old 27.10.2014, 19:27
dbgoku14
Guest
 
Posts: n/a
Default Generowanie bezpośredniego do wideo linku youtube

Witam,
Na wiele nie liczę, ale czy jest jakakolwiek szansa by dowiedzieć się, jak wyciągnąć bezpośredni link do filmu na youtube ? Chciałbym wiedzieć jaki jest na to sposób, oprogramuje to sam. Znam sposób z plikiem get_video_info ale ten sposób nie działa dla każdego wideo, natomiast jDownloader potrafi pobrać każdy film. Czy ktokolwiek wie ? Czy jest jakakolwiek realna szansa, że support jdownloadera pomoże mi ?
Pozdrawiam
Reply With Quote
  #2  
Old 28.10.2014, 17:47
editestowy's Avatar
editestowy editestowy is offline
Polish Supporter
 
Join Date: May 2009
Location: PL
Posts: 3,028
Default

Źródła JD są ogólnie dostępne więc wystarczy prześledzić jak działa dekrypter i wtyczka pobierająca pliki z YT
Reply With Quote
  #3  
Old 29.10.2014, 15:34
dbgoku14
Guest
 
Posts: n/a
Default

Mowa o plikach .class ? Jest możliwe prześledzenie zawartości ?
Reply With Quote
  #4  
Old 30.10.2014, 08:44
editestowy's Avatar
editestowy editestowy is offline
Polish Supporter
 
Join Date: May 2009
Location: PL
Posts: 3,028
Default

Nie, wystarczy jakiś klientem SVN (np. Tortoise SVN) podłączyć się do repozytorium źródeł JD (svn://svn.jdownloader.org/jdownloader) lub też zainstalować całe środowisko developerskie:
http://jdownloader.org/knowledge/wik...nt/get-started
Reply With Quote
  #5  
Old 05.11.2014, 14:18
dbgoku14
Guest
 
Posts: n/a
Default

Dziękuje, nawet nie wiedziałem że jest taka możliwość. Dałbyś radę mi pomóc z tym ? Mam plik youtube.java prawdopodobnie w głównej mierze odpowiedzialny za generowanie linku, ale całość jest napisana naprawdę profesjonalnie, ciężko się w tym połapać. Rzucisz okiem na to ?

Last edited by editestowy; 05.11.2014 at 19:12. Reason: usunąłem kod - nie ma sensu go tu zamieszczać
Reply With Quote
  #6  
Old 05.11.2014, 19:34
editestowy's Avatar
editestowy editestowy is offline
Polish Supporter
 
Join Date: May 2009
Location: PL
Posts: 3,028
Default

Tak naprawdę to potrzebujesz prześledzić jak działa metoda przetwarzająca link YT w dekrypterze - metodą tą jest decryptIt w klasach: TbCm (stary typ linków) lub TbCmV2 (nowy typ linków).
W skrócie:
-- metoda ta tworzy obiekt klasy YoutubeHelper
(YoutubeHelper helper = getCachedHelper();)
i analizując link wyszukuje finalne linki dla źródłowego adresu wykonując metodę:
vc = helper.loadVideo(vid);

I to co cię interesuje znajduje się w tej metodzie - czyli na podstawie określonych wyrażeń regularnych parsowana jest strona i wyszukiwane są wszelkie informacje o linku/linkach (np. warianty video).
Informacje o linku/linkach zawarte są w obiekcie vc, z którego można je "wydobyć" np. vc.values().toArray() - otrzymujemy tablicę dostępnych możliwych wariantów (czyli video/audio/obrazki/napisy) związanych z linkiem bazowym, m.in. dla każdego wariantu także jego url.
Reply With Quote
  #7  
Old 11.02.2016, 12:52
dbgoku14
Guest
 
Posts: n/a
Default

Wracam po czasie, znowu się za to zabrałem, ostatnio brakło czasu i nie dałem rady. Prawie półtorej roku temu. Co do Twojej odpowiedzi (dziękuję za nią) to jesteś pewien? Przeanalizowałem obie klasy (tbCmv2 oraz YouTubeHelper) i nie znalazłem tam algorytmu żadnego. Linki są przeszukiwane pod różnymi kątami, czy wideo jest płatne, zagraniczne, zablokowane itp ale wszelkie wartości które te metody zwracają to coś na zasadzie tego:
Code:
**External links are only visible to Support Staff**
a klasa plugins.components.YoutubeStreamData z kolei zwraca te wartości dalej, ale nie wiem gdzie dalej. Uruchomiłem JD w eclipse, debuggowałem całość i kolejne kroki od szyfrowania linków wyrzucane są na konsolę, jednakże nie mam pojęcia z którego miejsca. Dobrze myślę?
Reply With Quote
  #8  
Old 11.02.2016, 23:14
editestowy's Avatar
editestowy editestowy is offline
Polish Supporter
 
Join Date: May 2009
Location: PL
Posts: 3,028
Default

Tak jak pisałem - cały algorytm wyszukiwania na stronie linków i załadowania ich do obiektu helper jest w metodzie loadVideo klasy YoutubeHelper:
vc = helper.loadVideo(vid);
(vid to obiekt klasy YoutubeClipData przechowujący informacje o klipie)
I chcąc zobaczyć jak strona jest przetwarzana, i jak są wyszukiwane warianty - najlepiej krokowo w debuggerze sobie prześledzić jak powyższa metoda to robi.

Natomiast chcąc znaleźć linki:
Znajdź w kodzie dekryptera linię, gdzie przetwarzany jest zbiór znalezionych obiektów/wariantów.

for (Entry<YoutubeITAG, YoutubeStreamData> es : vc.entrySet()) {
..
..
}

Pojedynczy link do wariantu możesz "wydobyć" w tej pętli dodając np. wyrzucenie na konsolę info o tagu/wariancie i jego adresie url:
System.out.println("tag=" + es.getValue().getItag() + ", url=" + es.getValue().getUrl());
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +2. The time now is 01:13.
Provided By AppWork GmbH | Privacy | Imprint
Parts of the Design are used from Kirsch designed by Andrew & Austin
Powered by vBulletin® Version 3.8.10 Beta 1
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.