приостановить youtube -dl при отключении сети и возобновить работу при повторном подключении

На самом деле это довольно просто объяснить, :вы не установили компонент PyQt5 QtWebEngine.

(В Fedora 28...)

$ sudo dnf install python3-qt5-webengine
Dependencies resolved.
================================================================================
 Package                    Arch        Version              Repository    Size
================================================================================
Installing:
 python3-qt5-webengine      x86_64      5.10.1-4.fc28        updates      113 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 113 k
Installed size: 449 k
Is this ok [y/N]:

Тогда, как и сейчас, пакет PyQt5 не был монолитным. Некоторые компоненты разбиты на подпакеты.

$ sudo dnf list python3-qt5-\*
Installed Packages
python3-qt5-base.x86_64                    5.10.1-4.fc28                @updates
python3-qt5-devel.x86_64                   5.10.1-4.fc28                @updates
python3-qt5-webengine.x86_64               5.10.1-4.fc28                @updates
python3-qt5-webkit.x86_64                  5.10.1-4.fc28                @updates
5
21.01.2021, 19:41
2 ответа

пожалуйста, используйте код ниже YoutubeDown.bash

#!/bin/bash
if [[ $2 == 0 ]]
then
  if [[ ! -a youtubePlayListNames ]] 
  then
    youtube-dl --get-filename -o '%(title)s' $1  --restrict-filenames | awk 'BEGIN{OFS=",";}{print NR,$0}' > youtubePlayListNames
  fi
  for q in $(cat youtubePlayListNames)
  do
    row=$(echo $q | awk -F',' '{print $1}')
    fName=$(echo "$q" | awk -F',' '{print $2}')
    [[ $(find. -name *$fName* | wc -l) -eq 1 ]] && continue || break
  done
  youtube-dl --playlist-start $row -o '%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' $1 --restrict-filenames
elif [[ $2 == 1 ]]
then
  youtube-dl -o '%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' $1 --restrict-filenames
fi

Я использовал как показано ниже:

  • первый разYoutubeDown.bash https://youtubeURL 0
  • после этого и когда загрузка закончилась, я передал 1 в качестве второго параметра, чтобы убедиться, что все загружено Я изменил свой код, поскольку предыдущий, к сожалению, не работал. Я тестировал его и работал хорошо.
1
18.03.2021, 22:39

Вот кое-что, что я написал сейчас, что запускаю каждую строку batch-file.txtи запускаю на ней youtube -dl.
Если нет соединения с веб-сайтом, который вы пытаетесь загрузить с него, он будет зацикливаться до тех пор, пока соединение не будет восстановлено (, вам, вероятно, следует добавить для него некоторый тайм-аут, поскольку он не остановится.)
Я использовал curlс ожидаемым кодом состояния 200, поскольку, если это не сработает, вы, вероятно, не сможете загрузить.

Содержание batch-file.txtтакое же, как и раньше.

Запуск скрипта:

download.sh./batch-file.txt {download_web_site_url}
# Example:
download.sh./batch-file.txt google.com`
#!/bin/bash
# B"H

# Insted of using youtube-dl batch-file option read the file using bash.
URLS=$1 # "batch-file.txt"
# Pass the URL for site you trying to download from.
SITE_URL=$2

# This function check if url is returning 200 status code.
check_site_connection()
{
    # curl to 'your_site_url' with -I option for only the respons info only
    # pipe the respons tp awk with 'NR < 2' so only the first line with the status code is printed.
    # Return up if respons is 200.
    if [[ $(curl -Is $SITE_URL | awk 'NR < 2 {print $2}') == "200" ]];
    then
        echo up;
    else
        echo down;
    fi
}

# read the batch-file.
while IFS= read -r line
do
    # for each line in batch-file loop until conection to site is up with 2 seconds delay.
    while [[ $(check_site_connection) == "down" ]]
    do
        echo "waiting for internet conection"
        sleep 2
    done
    # run youtube-dl where line is the url to dowmload.
   ./youtube-dl "$line"
done < "$URLS"

Редактировать:

Только что нашел это в README.md и протестировал его работу.
Это на случай, если каждая строка представляет собой список воспроизведения, а не отдельное видео.

youtube-dl --download-archive archive.txt URL_TO_PLAYLIST

Это будет загружать только новые видео при каждом запуске, поэтому, если вы добавите --download-archive archive.txtк сценарию выше в ./youtube-dl --download-archive archive.txt "$line"Поэтому, если он начнется снова, он пройдет по всему плейлисту, но загрузка начнется только с того места, где она остановилась.

1
18.03.2021, 22:39

Теги

Похожие вопросы