Java получить все ссылки из Youtube Playlist - PullRequest
0 голосов
/ 19 сентября 2018

С помощью следующего скрипта Powershell я могу извлечь все ссылки из плейлиста с Youtube:

$Playlist = ((Invoke-WebRequest -Uri "https://www.youtube.com/watch? 
v=dyJdLalc7TA&list=PLNmsVeXQZj7q0ao69AIogD94oBgp3E9Zs").Links | Where {$_.class -match "playlist-video"}).href

ForEach ($Video in $Playlist) {
 $s ="https://www.youtube.com" + $Video
 $s =$s.Substring(0, $s.IndexOf('&'))
  Write-Output ($s)
 }

Мне нужно это для java Youtubeplayer, поэтому я попробовал это с jsoup:

Document document = Jsoup.connect("https://www.youtube.com/watch? 
v=dyJdLalc7TA&list=PLNmsVeXQZj7q0ao69AIogD94oBgp3E9Zs").get();

        //Get links from document object. 
        Elements links = document.select("a[href]");


        for (Element link : links) {
            System.out.println("Link: " + link.attr("href"));               
            System.out.println("");
        }

Но я не могу извлечь правильные ссылки с ним.У кого-нибудь есть идеи, как это сделать с Java и без использования API YouTube?Любая помощь будет очень признательна.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Я нашел решение не очень хорошее, но сейчас оно работает.Я вызываю скрипт powershell для обработчика процессов и возвращаю ссылки на Java-программу.

0 голосов
/ 19 сентября 2018

Я делал подобные проекты в прошлом.

Каждая ссылка в списке воспроизведения YouTube находится в элементе, называемом ytd-playlist-video-renderer.Я предлагаю вам поискать этот элемент, затем элемент <a>, а затем тег href, используя substring("").

String source = getSource();
ArrayList<String> links = new ArrayList<String>();

while(source.contains("ytd-playlist-video-renderer")){

    source = source.substring(source.indexOf("ytd-playlist-video-renderer"));
    source = source.substring(source.indexOf("<a"));
    source = source.substring(source.indexOf("href="));
    links.add(1, source.indexOf);

}

. Это вызывает функцию getSource() для получения исходного кода html, а затемизвлекает ссылки из него.(Не проверял это так, я просто молюсь, чтобы это сработало)

Вот несколько связанных проектов GitHub, которые я сделал.Не стесняйтесь проверить фактически протестированный код: KarmaGrapher , который извлекает Карму из Reddit Post и помещает ее в CSV-файл, и этот очень старый мой проект: TagHack , которыйизвлекает теги YouTube из исходного кода.(Код находится в Zip-файле. Я выкладываюсь так сильно)

...