Подстановка числа в баш скрипте.

Автор zyrHQ, 25 июля 2019, 04:18:48

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

zyrHQ

Привет у меня такая проблема при тестировани кода. код до конца не дописан.
# Расскажу что мне нужно
1. Я скачаить видео с ютуба по датам чтобы не лазить сам сайт. и потом автоматически удалять их спуся 7 дней.
2. по ходу тестов на железо выяснилось что. если добавлять коналы в одну команду. это повышает нагрузку на систему. а именно страдает оперативаня память. По этому я разбила процессы по отдельности.
3. самое простое это загнать все в цикл. чтобы подставлялась цифра и все работало само
Однако при обрате цикла  $URL$i счески работает сам хорошо но он не даставляет сам юрл.по моей логие должно быть так
URL1
....
URL31
URL32
....
URL34
К сожелению это не происходит. могу предположить что когда я вызыиваю $URL баш ищет имено это. но поскульку аргумента такого нет он ничего не выводит  и не подставляет.  как думаете можно это исправить




#!/bin/bash

DIR="/media/USER/sdc/movie/youtube"
# Delete file after 7 days
DEL_OLD_BD="7"
DATE=`date "+%Y%m%d"`
SUB="--write-description --write-auto-sub  --sub-lang ru,en,fr --convert-subs ass --ignore-errors -f 22 "
###
URL35="https://www.youtube.com/user/kamikadzedead/videos"
URL1="https://www.youtube.com/channel/UCzURnGf2ILklej_WHmX6zgw/videos"
URL3="https://www.youtube.com/user/CommanderVideoHq/videos"
URL2="https://www.youtube.com/channel/UCsvsmFQ8eFRx5v6cdmuYBsg/videos"
URL4="https://www.youtube.com/channel/UCLlpUDHE-Yni545RGlt3nhA/videos"
URL5="https://www.youtube.com/user/prohitec/videos"
URL6="https://www.youtube.com/channel/UC-aAG_0NYUetd6gIKYd1S5g/videos"
URL7="https://www.youtube.com/user/mrDobryakovich/videos"
URL8="https://www.youtube.com/user/FograinDaNoob/videos"
URL9="https://www.youtube.com/user/Faleot/videos"
URL10="https://www.youtube.com/channel/UCDUJu_bQH68A4FXij5P_8MQ/videos"
URL11="https://www.youtube.com/channel/UC54SBo5_usXGEoybX1ZVETQ/videos"
URL12="https://www.youtube.com/user/wwwsilverru/videos"
URL13="https://www.youtube.com/user/BlackSilverChannel/videos"
URL14="https://www.youtube.com/channel/UCM7-8EfoIv0T9cCI4FhHbKQ/videos"
URL15="https://www.youtube.com/user/kashiraira/videos"
URL16="https://www.youtube.com/channel/UCshiDkJFZ1SxiNBAE1DlFdA/videos"
URL17="https://www.youtube.com/user/itpediachannel/videos"
URL18="https://www.youtube.com/channel/UCEk_2DKNH9ZIFxuc9pEzWsA/videos"
URL19="https://www.youtube.com/user/BachiloDmitry/videos"
URL20="https://www.youtube.com/channel/UCbTl8Q1kzDS3WUPRfwR8qDg/videos"
URL21="https://www.youtube.com/channel/UCNXmOZGGPtqurNRZkRuD9lA/videos"
URL22="https://www.youtube.com/user/AaronBlaiseArt/videos"
URL23="https://www.youtube.com/user/GirlGamerGaB/videos"
URL24="https://www.youtube.com/channel/UCSF6ewY9LS8GnbphwvnZpUg/videos"
URL25="https://www.youtube.com/user/Akr815/videos"
URL26="https://www.youtube.com/channel/UCQWeDEwQruA_CcyR08bIE9g/videos"
URL27="https://www.youtube.com/user/roydroider/videos"
URL28="https://www.youtube.com/user/7Tiphs/videos"
URL29="https://www.youtube.com/channel/UCxTg9ucpWtrUvOZbIAi4IkA/videos"
URL30="https://www.youtube.com/user/Saberspark/videos"
URL31="https://www.youtube.com/channel/UCET6ynhw0Q-isyyeI2TSXhA/videos"
URL32="https://www.youtube.com/user/StopGameRu/videos"
URL33="https://www.youtube.com/user/BBCRussian/videos"
URL34="https://www.youtube.com/user/ZgiraF/videos"

mkdir -p "$DIR"

find "$DIR" -type f -iname "*.[ma][sp][s4]" -mtime +$DEL_OLD_BD -exec рм -рф {} \; &
find "$DIR" -type f -name "*.description" -mtime +$DEL_OLD_BD -exec рм -рф {} \; &

for ((i=1; i<=35; i++))
do

youtube-dl $SUB -o "$DIR"/'%(uploader)s/%(playlist)s/%(title)s.%(ext)s'  $URL$i  #&>/dev/null

done
echo "Done!"


endru

#1
Правьте вопрос. невозможно в нем разобраться и читать, глаза вываливаются.

Читай про работу с массивами в bash, т.е. такой вариант:
$URL$i работать не будет.

zyrHQ

#2
Проблему решила вот сам код рабочий можите изменять и делать что хотите.
как работает проходит по массиву  и берт видео ролики и скачивает все что есть на канале не старее 2 дней.  спустя 7 дней  все старые видео удалит сам. и закачает новые. 


#!/bin/bash

DIR="/media/USER/sdc/movie/youtube"
# Delete file after 7 days
DEL_OLD_BD="7"
DATE=`date "+%Y%m%d"`

SUB="--write-description --write-auto-sub  --sub-lang ru,en,fr --convert-subs ass --ignore-errors -f 22 --datebefore $DATE --dateafter $(($DATE-2)) "
### channels
URL_ARRAY=(https://www.youtube.com/user/kamikadzedead/videos \
https://www.youtube.com/channel/UCzURnGf2ILklej_WHmX6zgw/videos \
https://www.youtube.com/user/CommanderVideoHq/videos \
https://www.youtube.com/channel/UCsvsmFQ8eFRx5v6cdmuYBsg/videos \
https://www.youtube.com/channel/UCLlpUDHE-Yni545RGlt3nhA/videos \
https://www.youtube.com/user/prohitec/videos \
https://www.youtube.com/channel/UC-aAG_0NYUetd6gIKYd1S5g/videos \
https://www.youtube.com/user/mrDobryakovich/videos \
https://www.youtube.com/user/FograinDaNoob/videos \
https://www.youtube.com/user/Faleot/videos \
https://www.youtube.com/channel/UCDUJu_bQH68A4FXij5P_8MQ/videos \
https://www.youtube.com/channel/UC54SBo5_usXGEoybX1ZVETQ/videos \
https://www.youtube.com/user/wwwsilverru/videos \
https://www.youtube.com/user/BlackSilverChannel/videos \
https://www.youtube.com/channel/UCM7-8EfoIv0T9cCI4FhHbKQ/videos \
https://www.youtube.com/user/kashiraira/videos \
https://www.youtube.com/channel/UCshiDkJFZ1SxiNBAE1DlFdA/videos \
https://www.youtube.com/user/itpediachannel/videos \
https://www.youtube.com/channel/UCEk_2DKNH9ZIFxuc9pEzWsA/videos \
https://www.youtube.com/user/BachiloDmitry/videos \
https://www.youtube.com/channel/UCbTl8Q1kzDS3WUPRfwR8qDg/videos \
https://www.youtube.com/channel/UCNXmOZGGPtqurNRZkRuD9lA/videos \
https://www.youtube.com/user/AaronBlaiseArt/videos \
https://www.youtube.com/user/GirlGamerGaB/videos \
https://www.youtube.com/channel/UCSF6ewY9LS8GnbphwvnZpUg/videos \
https://www.youtube.com/user/Akr815/videos \
https://www.youtube.com/channel/UCQWeDEwQruA_CcyR08bIE9g/videos \
https://www.youtube.com/user/roydroider/videos \
https://www.youtube.com/user/7Tiphs/videos \
https://www.youtube.com/channel/UCxTg9ucpWtrUvOZbIAi4IkA/videos \
https://www.youtube.com/user/Saberspark/videos \
https://www.youtube.com/channel/UCET6ynhw0Q-isyyeI2TSXhA/videos \
https://www.youtube.com/user/StopGameRu/videos \
https://www.youtube.com/user/BBCRussian/videos \
https://www.youtube.com/user/ZgiraF/videos)

mkdir -p "$DIR"

find "$DIR" -type f -iname "*.[ma][sp][s4]" -mtime +$DEL_OLD_BD -exec рм -рф {} \; &
find "$DIR" -type f -name "*.description" -mtime +$DEL_OLD_BD -exec рм -рф {} \; &

for YOUTUBE_URL in ${URL_ARRAY[@]}
do
youtube-dl $SUB -o "$DIR"/'%(uploader)s/%(playlist)s/%(title)s.%(ext)s'  $YOUTUBE_URL  &>/dev/null
done
echo "Done!"


zyrHQ

Цитата: endru от 25 июля 2019, 05:12:20Правьте вопрос. невозможно в нем разобраться и читать, глаза вываливаются.
простие но я так пишу =( ничего с этим поделать не могу правлю как только могу.  :(  но проблему я решила все хорошо  ;) спасибо

endru

а можно еще проще, чтобы постоянно не править скрипт, создать в любом удобном месте простой текстовый файл и  в него уже добавлять ссылки. Можно даже сделать разделители, например точка с запятой, указывать какой это канал, а убирать разделитель можно обычным AWK.
for YOUTUBE_URL in $(cat /path/to/file.txt)
        do
        youtube-dl $SUB -o "$DIR"/'%(uploader)s/%(playlist)s/%(title)s.%(ext)s'  $YOUTUBE_URL  &>/dev/null
        done

zyrHQ

Цитата: endru от 25 июля 2019, 08:37:29
а можно еще проще, чтобы постоянно не править скрипт, создать в любом удобном месте простой текстовый файл и  в него уже добавлять ссылки. Можно даже сделать разделители, например точка с запятой, указывать какой это канал, а убирать разделитель можно обычным AWK.
for YOUTUBE_URL in $(cat /path/to/file.txt)
        do
        youtube-dl $SUB -o "$DIR"/'%(uploader)s/%(playlist)s/%(title)s.%(ext)s'  $YOUTUBE_URL  &>/dev/null
        done

??? простие за как бы это сказать вырожение... но вы сейчас только что сказали что все мои скрипты что я делала все это время.... полоная какашка... боже да это так сильно упростит работу... Мать моя женщина. Спасибо. если все так просто то...  я в шоке .

endru

Цитата: zyrHQ от 25 июля 2019, 06:30:33find "$DIR" -type f -iname "*.[ma][sp][s4]" -mtime +$DEL_OLD_BD -exec рм -рф {} \; &
вместо:
-exec рм -рф {} \;
можно просто дописать
-delete
результат будет тот-же, и чуть быстрее.
find $DIR -type f -iname "*.[ma][sp][s4]" -mtime +$DEL_OLD_BD -delete
find $DIR -type f -name "*.description" -mtime +$DEL_OLD_BD -delete