debian.org / О Debian Где взять Debian Поддержка Уголок разработчика Новости Wiki

Автор Тема: Подстановка числа в баш скрипте.  (Прочитано 354 раз)

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

Оффлайн zyrHQ

  • Новичок форума
  • Topic Author
  • Сообщений: 4
Привет у меня такая проблема при тестировани кода. код до конца не дописан.
# Расскажу что мне нужно
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

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1769
  • Новосибирск
  • Jabber: endru@jabber.ru
Re: Подстановка числа в баш скрипте.
« Ответ #1 : 25 Июль 2019, 05:12:20 »
Правьте вопрос. невозможно в нем разобраться и читать, глаза вываливаются.

Читай про работу с массивами в bash, т.е. такой вариант:
$URL$i работать не будет.
« Последнее редактирование: 25 Июль 2019, 05:19:29 от endru »
 
Пользователи, которые поблагодарили этот пост: Gamliel

Оффлайн zyrHQ

  • Новичок форума
  • Topic Author
  • Сообщений: 4
Re: Подстановка числа в баш скрипте.
« Ответ #2 : 25 Июль 2019, 06:30:33 »
Проблему решила вот сам код рабочий можите изменять и делать что хотите.
как работает проходит по массиву  и берт видео ролики и скачивает все что есть на канале не старее 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!"

« Последнее редактирование: 25 Июль 2019, 06:40:30 от zyrHQ »
 

Оффлайн zyrHQ

  • Новичок форума
  • Topic Author
  • Сообщений: 4
Re: Подстановка числа в баш скрипте.
« Ответ #3 : 25 Июль 2019, 06:32:17 »
Правьте вопрос. невозможно в нем разобраться и читать, глаза вываливаются.
простие но я так пишу =( ничего с этим поделать не могу правлю как только могу.  :(  но проблему я решила все хорошо  ;) спасибо
 

Оффлайн endru

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1769
  • Новосибирск
  • Jabber: endru@jabber.ru
Re: Подстановка числа в баш скрипте.
« Ответ #4 : 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

Оффлайн zyrHQ

  • Новичок форума
  • Topic Author
  • Сообщений: 4
Re: Подстановка числа в баш скрипте.
« Ответ #5 : 25 Июль 2019, 09:17:26 »
а можно еще проще, чтобы постоянно не править скрипт, создать в любом удобном месте простой текстовый файл и  в него уже добавлять ссылки. Можно даже сделать разделители, например точка с запятой, указывать какой это канал, а убирать разделитель можно обычным 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
??? простие за как бы это сказать вырожение... но вы сейчас только что сказали что все мои скрипты что я делала все это время.... полоная какашка... боже да это так сильно упростит работу... Мать моя женщина. Спасибо. если все так просто то...  я в шоке .
 
Пользователи, которые поблагодарили этот пост: dogsleg

Оффлайн endru

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1769
  • Новосибирск
  • Jabber: endru@jabber.ru
Re: Подстановка числа в баш скрипте.
« Ответ #6 : 25 Июль 2019, 11:13:54 »
find "$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

Русскоязычное сообщество Debian GNU/Linux

Re: Подстановка числа в баш скрипте.
« Ответ #6 : 25 Июль 2019, 11:13:54 »


Теги: