У меня есть небольшая проблема, и я надеюсь, что кто-то может мне помочь. В принципе, у меня есть сценарий, который загружает миниатюры с Youtube, он работает нормально, но теперь я хочу, чтобы он был более продвинутым и имел возможность указывать URL-адрес списка воспроизведения (система для выбора уже сделана) и получить html-страницу плейлист, затем найдите все строки, содержащие/наблюдайте? v = (URL-адрес видео), а затем вытащите все, кроме идентификатора видео (серия символов после v =).Получите все строки с определенной строкой
Теперь у меня работает система загрузки, я просто не могу найти способ сделать строки с/watch? V =.
Вот мой код с загрузкой веб-страницы и найти части линии
read -p "Enter the url of the playlist : " link #Ask for url
content=$(curl $link --silent) #Downloads the webpage
contentxt="$basedir/playlist_page.txt" #Creates a file to store the webpage
echo $content > "$contentxt" #Saves the webpage into the file
url=$(grep -F "/watch?v=" $contentxt) #Find a line with the /watch?v=
echo $url #Displays that line containing the url to be used later
Спасибо!
Хорошо работает, но выдает тот же идентификатор дважды, это нормально? Кроме того, если бы я использовал эти данные, как бы получить его и поместить в переменную, может быть, массив или что-то еще? – PandawanFr
Что касается вывода одного и того же идентификатора дважды, это произойдет, если один и тот же идентификатор присутствует в источнике. Вы можете '... | сортировать | uniq' удалить дубликаты. – bgoldst
Хорошо, думаю, я знаю, почему он дважды вводит идентификаторы, потому что есть href, когда вы нажимаете на ссылку, но также на миниатюру. Поэтому я попытаюсь найти способ удаления дубликатов. Поэтому, чтобы поместить переменную, я должен сделать это 'variable = $ (curl --silent http: //jsfiddle.net/udfmq9jv/ | grep -F '/ watch? V =' | sed -E!. */watch \? v = ([a-zA-Z0-9 _-] *). *! \ 1! ';) ' – PandawanFr