Автор Тема: [BASH] While яде първия знак, на вас случвало ли се е?  (Прочетена 5912 пъти)

remotexx

  • Напреднали
  • *****
  • Публикации: 1080
    • Профил
Така...

Не ми става ясно, какъв документ while -r l; чете и откъде се взима ( как му е посочен )

Поне от кратката версия не можа ли да се ориентираш - махнал съм всичко излишно - след края на while ... do .. done командата продължава още и има пренасочване на вход от файл и се вижда откъде ги взема - от входа (който му е пренасочен да се изчете от файла)
Код
GeSHi (Bash):
  1. while read -r l;
  2. do
  3. echo "$l e super";
  4. done < oti2

сега стана ли ти ясно къде отива т.е. се пренасочва файлът  oti2

може би на един ред ще е по-ясно
Код
GeSHi (Bash):
  1. while read -r l; do echo "$l e super"; done < oti2


П.П. Гого не позлвам(е) мобилната версия щото па там има проблем със събмитването - не работи
..инак само за четене става, ама пък линка е много кофти (не запомнящ се, не намиращ се/трудно намиращ се по сайта) - не можаха ли да го направят като хората - m.lugbg.org или lugbg.org/m/.... или по последната мода от User-Agent да се ориентира и там.. каквото му е поискал браузъра т.е. моята Опера винаги му казва - Виж ся пич - аз съм мобилен браузър, обаче сайта му казва, ай като си толко оторен мобилен пич -на ти ся декстоп версията, оправяй са...
« Последна редакция: Mar 29, 2020, 02:15 от remotexx »
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 884
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Гого, усетих се за създаването на файлове и другите неща (даже 1во трябваше да си ъпдейтна версията на youtube-dl, че там е игра на котка и мишка с тубата и за това не ми работеше скрипта). Също като ми гръмна 2рия линк го махнах, но така и не можах да намеря какво ти реже името. Миналата вечер пробвах всичко , но така и не сработи. Самия read, като премахнеш всички твои сътворения по средата си работи , както Ремо е показал.
Мога да ти предложа да спреш, да си играеш със скрипта и да ползваш опциите на самата програма:

Цитат
youtube-dl -f '\''worstvideo[ext=mp4]+worstaudio[ext=m4a]/worst[ext=mp4]/worst'\''' -a oti

Това можеш да си го въртиш колкото искаш (синтаксиса е интуитивен). Сменяй си формата и качеството, както искаш. Може да пробваш и опциите които 4096bit ти даде.

Ето и резултата:

Цитат
makeme:$ youtube-dl -f '\''worstvideo[ext=mp4]+worstaudio[ext=m4a]/worst[ext=mp4]/worst'\''' -a oti
[youtube] udGtY2bmTxs: Downloading webpage
[download] Destination: Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.f160.mp4
[download] 100% of 808.96KiB in 00:00
[download] Destination: Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.f140.m4a
[download] 100% of 2.82MiB in 00:00
[ffmpeg] Merging formats into "Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.mp4"
Deleting original file Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.f160.mp4 (pass -k to keep)
Deleting original file Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.f140.m4a (pass -k to keep)
[youtube] tjUBP9m3M5E: Downloading webpage
[download] Destination: EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.f160.mp4
[download] 100% of 1.93MiB in 00:00
[download] Destination: EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.f140.m4a
[download] 100% of 4.48MiB in 00:00
[ffmpeg] Merging formats into "EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.mp4"
Deleting original file EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.f160.mp4 (pass -k to keep)
Deleting original file EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.f140.m4a (pass -k to keep)
makeme:$ ll
total 11M
drwxrwxr-x  2 makeme makeme 4,0K мар 29 06:52  .
drwxrwxr-x 17 makeme makeme 4,0K мар 27 23:21  ..
-rw-rw-r--  1 makeme makeme 6,5M мар 18 14:54 'EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.mp4'
-rwxrwxr-x  1 makeme makeme    0 мар 29 02:39  for
-rw-rw-r--  1 makeme makeme  265 мар 29 02:46  for2
-rwxrwxr-x  1 makeme makeme 1,9K мар 28 07:06  gogo_script
-rwxrwxr-x  1 makeme makeme  433 мар 28 07:09  gogo_script_read
-rw-rw-r--  1 makeme makeme   20 мар 28 07:04  ito
-rw-rw-r--  1 makeme makeme   88 мар 28 00:37  oti
-rw-rw-r--  1 makeme makeme   24 мар 28 00:37  oti2
-rw-rw-r--  1 makeme makeme 3,7M мар 22 12:12 'Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.mp4'
*Ужасно качество, ма ти май това искаш :)

Също така имай предвид, че заявката  youtube-dl --get-id -a oti сама по себе си с 2 линка вътре хаби 200к + . При положение че трафикът ти е кофти, не го хаби излишно. Просто слагаш прекалено много овърхед, при наличието на малък ресурс, при положение, че програмата има всичко вградено.

Все пак относно рязането, моето мнение е същото като на Ремо. Някъде при прехвърлянето на променливите и спаменето на процеси и програми се яде, но трудно ще се хване. Иначе read си работи. Като го тествах скрипта, по спомен пробвах и IFS= но не стана при мен.

ПП: Ако искаш най простия синтаксис :

Цитат
makeme:$ youtube-dl -f worst -a oti
[youtube] udGtY2bmTxs: Downloading webpage
[download] Destination: Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.mp4
[download] 100% of 9.34MiB in 00:00
[youtube] tjUBP9m3M5E: Downloading webpage
[download] Destination: EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.mp4
[download] 100% of 16.87MiB in 00:01
makeme:$ ll
total 27M
drwxrwxr-x  2 makeme makeme 4,0K мар 29 02:31  .
drwxrwxr-x 17 makeme makeme 4,0K мар 27 23:21  ..
-rw-rw-r--  1 makeme makeme  17M мар 18 14:55 'EMILIANO - Bolnitsa _ ЕМИЛИАНО - Болница-tjUBP9m3M5E.mp4'
-rw-rw-r--  1 makeme makeme  265 мар 28 07:35  for2
-rwxrwxr-x  1 makeme makeme 1,9K мар 28 07:06  gogo_script
-rwxrwxr-x  1 makeme makeme  433 мар 28 07:09  gogo_script_read
-rw-rw-r--  1 makeme makeme   20 мар 28 07:04  ito
-rw-rw-r--  1 makeme makeme   88 мар 28 00:37  oti
-rw-rw-r--  1 makeme makeme   24 мар 28 00:37  oti2
-rw-rw-r--  1 makeme makeme 9,4M мар 22 12:12 'Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.mp4'
makeme:$

Дори оти2 не ти трябва ;)

ПП2: Сега се сетих че ти искаше да си гъвкав и да можеш да добавяш неща във файловете, пък скрипта да лупи. Та ето ти го на скрипт:

Код
GeSHi (Bash):
  1. #/bin/bash
  2. while true; do
  3.        youtube-dl -i -f '\''worstvideo[ext=mp4]+worstaudio[ext=m4a]/worst[ext=mp4]/worst'\''' -a oti
  4.        sleep 2
  5. done

Така ще си лупи и ще си проверявя. В момента в който добавиш линк (echo "https://www.youtube.com/watch?v=aaTRHqErehk" >> oti) ще почне да го сваля  (след sleep секунди де :) ). -i ще продължава ако има счупени линкове (проверката , дето Ремо ти предложи)

ПП3: Надявам се да прочетеш всичко това, и да кажеш дали ти е свършило работа :)
« Последна редакция: Mar 29, 2020, 08:58 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

4096bits

  • Напреднали
  • *****
  • Публикации: 3624
    • Профил
Така...

Не ми става ясно, какъв документ while -r l; чете и откъде се взима ( как му е посочен )

Поне от кратката версия не можа ли да се ориентираш - махнал съм всичко излишно - след края на while ... do .. done командата продължава още и има пренасочване на вход от файл и се вижда откъде ги взема - от входа (който му е пренасочен да се изчете от файла)
Код
GeSHi (Bash):
  1. while read -r l;
  2. do
  3. echo "$l e super";
  4. done < oti2

сега стана ли ти ясно къде отива т.е. се пренасочва файлът  oti2

може би на един ред ще е по-ясно
Код
GeSHi (Bash):
  1. while read -r l; do echo "$l e super"; done < oti2


;D
Сега стана ясно. Не очаквах да е на дъното на цикъла
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6034
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Мейк, безкрайно ти благодаря, че си направил всичко това за мен!!!

Но, вчера, докато разяснявах на 4096, какво прави този код (и го направих некадърно), му написах следното:


4096, тъпото е, че това, което правя, y-dl го прави и сам. Мейк чудесно го е разбрал. Вземам наличния поток аудио с най-малък размер и същото за видеото. След това ги съединявам. Самия y-dl има такава възможност с --merge-output-format mkv. И отново го прави с ffmpeg. Но го прави единствено при подадени изрично параметрите, които Мейк е дал в мнението си.

Аз лично изобщо не съм убеден, че разработчиците y-dl наистина биха го направили при най-малките размери. При най-големите да. Например те знаят ли за съществуването на форматите 597, 599 и 600? Появиха се за малко този месец и пак изчезнаха. А тези формати почти заместват 3gp и почти могат да се ползват в реално време. Те знаят ли за 139, който е много рядко срещан и е само след като нещо е било предадено поточно до момента, когато тубата не реши да го прекодира? А той понякога е счупен. Но е по-кратък от 249. И изобщо 249 ли биха изтеглили или огромния 140? Защото 140 е m4a, а 249 e webm (в действителност opus, но името лъже). 249 е 50 КБ/с, а 140 е 128 КБ/с, което го прави троен по размер.

Освен това, в предни мнения казвах, че y-dl никога не са пробвали нещото си при бавни връзки или поне не са ги симулирали с шейпър. Y-dl увисва и спира да има признаци на живот на всеки няколко минути...

Бях сигурен, че щом разработчиците на програмата изобщо не са я изпробвали на бавни връзки, че няма начин да се погрижат за нуждите на хората, които са с такива. И твоят експеримент го доказва.

Ето, какво казва Ydl за тези двете песни:

Код
GeSHi (Bash):
  1. youtube-dl -F udGtY2bmTxs tjUBP9m3M5E
  2. [youtube] udGtY2bmTxs: Downloading webpage
  3. [info] Available formats for udGtY2bmTxs:
  4. format code  extension  resolution note
  5. 599          m4a        audio only tiny   32k , mp4a.40.5 (22050Hz), 687.77KiB
  6. 600          webm       audio only tiny   37k , opus  (48000Hz), 774.91KiB
  7. 249          webm       audio only tiny   55k , opus @ 50k (48000Hz), 1.11MiB
  8. 250          webm       audio only tiny   72k , opus @ 70k (48000Hz), 1.47MiB
  9. 140          m4a        audio only tiny  130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 2.82MiB
  10. 251          webm       audio only tiny  145k , opus @160k (48000Hz), 2.92MiB
  11. 597          mp4        82x144     144p   13k , avc1.4d400a, 13fps, video only, 262.47KiB
  12. 598          webm       144x256    144p   37k , vp9, 13fps, video only, 673.58KiB
  13. 160          mp4        82x144     144p   38k , avc1.4d500b, 25fps, video only, 808.96KiB
  14. 133          mp4        136x240    144p   81k , avc1.4d400c, 25fps, video only, 1.70MiB
  15. 278          webm       144x256    144p   97k , webm container, vp9, 25fps, video only, 2.04MiB
  16. 134          mp4        202x360    240p  201k , avc1.4d400d, 25fps, video only, 4.22MiB
  17. 242          webm       240x426    240p  224k , vp9, 25fps, video only, 4.61MiB
  18. 135          mp4        270x480    240p  369k , avc1.4d4015, 25fps, video only, 7.77MiB
  19. 243          webm       360x640    360p  413k , vp9, 25fps, video only, 8.41MiB
  20. 136          mp4        406x720    360p  736k , avc1.4d401e, 25fps, video only, 15.21MiB
  21. 244          webm       480x854    480p  765k , vp9, 25fps, video only, 15.16MiB
  22. 137          mp4        608x1080   480p 1377k , avc1.64001f, 25fps, video only, 27.10MiB
  23. 247          webm       720x1280   720p 1528k , vp9, 25fps, video only, 29.13MiB
  24. 248          webm       1080x1920  1080p 2682k , vp9, 25fps, video only, 51.56MiB
  25. 18           mp4        202x360    240p  428k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 9.34MiB (best)
  26. [youtube] tjUBP9m3M5E: Downloading webpage
  27. [info] Available formats for tjUBP9m3M5E:
  28. format code  extension  resolution note
  29. 600          webm       audio only tiny   41k , opus  (48000Hz), 1.19MiB
  30. 249          webm       audio only tiny   59k , opus @ 50k (48000Hz), 1.75MiB
  31. 250          webm       audio only tiny   77k , opus @ 70k (48000Hz), 2.31MiB
  32. 140          m4a        audio only tiny  132k , m4a_dash container, mp4a.40.2@128k (44100Hz), 4.48MiB
  33. 251          webm       audio only tiny  152k , opus @160k (48000Hz), 4.52MiB
  34. 160          mp4        256x144    144p   93k , avc1.4d400c, 25fps, video only, 1.93MiB
  35. 278          webm       256x144    144p   97k , webm container, vp9, 25fps, video only, 3.11MiB
  36. 133          mp4        426x240    240p  207k , avc1.4d4015, 25fps, video only, 4.05MiB
  37. 242          webm       426x240    240p  223k , vp9, 25fps, video only, 5.69MiB
  38. 243          webm       640x360    360p  410k , vp9, 25fps, video only, 10.24MiB
  39. 134          mp4        640x360    360p  442k , avc1.4d401e, 25fps, video only, 7.49MiB
  40. 135          mp4        854x480    480p  713k , avc1.4d401e, 25fps, video only, 13.88MiB
  41. 244          webm       854x480    480p  758k , vp9, 25fps, video only, 17.25MiB
  42. 136          mp4        1280x720   720p 1060k , avc1.4d401f, 25fps, video only, 24.99MiB
  43. 247          webm       1280x720   720p 1515k , vp9, 25fps, video only, 32.05MiB
  44. 248          webm       1920x1080  1080p 2646k , vp9, 25fps, video only, 55.58MiB
  45. 137          mp4        1920x1080  1080p 4224k , avc1.640028, 25fps, video only, 62.79MiB
  46. 271          webm       2560x1440  1440p 7886k , vp9, 25fps, video only, 126.18MiB
  47. 313          webm       3840x2160  2160p 17275k , vp9, 25fps, video only, 347.38MiB
  48. 18           mp4        640x360    360p  487k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 16.87MiB (best)
  49.  

Ако тези избори отговаряха на името си, щяха да ми изтеглят 600 и 597, като за първата имаме дори още по-идеалния 599. Това са най-малките по размер формати. И щеше да е прекрасно, защото щеше да стане за време почти равно на дължината на клипчетата.

Вместо това ми тегли ужасяващия 140, който само той се тегли за двойно повече време от продъжителността на клипа. Двойно е само в случаите на добро разположение на планетите. Тая година видяхме, че е зле. Забележи, че в моя списък, отвратителния 140 седи на възможно най-последното място и е в списъка само като резервен вариант. Ако пък съвсем нищо няма, дай ми него. 160 е горе-долу. Почти никъде няма почти нищо по-добро. В редките случаи, като тегля картинка, почти винаги е наличен само той.

Така, че, ако трябваше да избирам да ползвам псевдо възможностите на Ydl да удовлетворява нуждите на хора с бавни връзки или на ръка да проверя наличните формати, да изтегля, каквото има, не забравям на всеки няколко минути да прекратявам процеса и да го пускам пак, да сглобя на ръка заявката към ffmpeg, то категорично избирам второто, защото ще стане далеч по-бързо.

Казваш, че качеството е отвратително? Добро е. Много е добро даже. Явно никога не си виждал 3gp.

п.п. Трябва да взема да ги изслушам тези двете песни, като съм ги дал за пример. Но имам проблем. Константин Трендафилов не може да пее и рядко го изтрайвам. Още, когато изкара „Кекс“ се чудих, този човек, защо пропя? Да не би да е щото малко преди това стана гадже на оная дебела, отвратителна кифла?! А пък този Емилио не съм го чувал, но името подозрително ми прилича на чалгар. Не мога да си насиля слуха с това. Азис става, има глас и идиотски песни. Ама всичко останало е брак.
« Последна редакция: Mar 29, 2020, 08:47 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6034
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Между другото, ако няма да запазвам клипчето (което правя рядко), дори не опирам до ffmpeg. Това е така, защото, mpv е достатъчно умен, ако види в същия каталог а mp4 нещо със същото заглавие, но разширение m4a да ги пусне паралелно. Е ако съм изтеглил webm, го преименувам на m4a. Разработчика на mpv няма как да се съобразява с факта, че от Гългъл злоупотребяват с имената на разширенията. То по тази причина в Юникс изобщо няма разширения.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

makeme

  • Напреднали
  • *****
  • Публикации: 884
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Гого, мился че пак не схвана командата :) Това, което цитира го прочетох и за това ти дадох лесен и сложен (гъвкав) вариант на командата. Това е гъвкавия и ти го дадох зада го разбереш и да си го моднеш според своите нужди (моите са други :) )

Цитат
Цитат
youtube-dl -f '\''worstvideo[ext=mp4]+worstaudio[ext=m4a]/worst[ext=mp4]/worst'\''' -a oti

Това можеш да си го въртиш колкото искаш (синтаксиса е интуитивен).


което е 140 :) Смени го на webm и ще стане това, което искаш. Отделно ако го няма, ще свали следващото, Отделно ако формата накрая не може да стане mp4, ще ти го конвертира в това което може (матрьошка обикновено). По добра автоматизация не виждам :)

ПП: Същото важи и за видеото

ПП2: Мисля че това е което ти трябва точно:

Цитат
youtube-dl -i -f '\''worstvideo+worstaudio/worst'\''' -a oti
Цитат
[youtube] udGtY2bmTxs: Downloading webpage
[download] Destination: Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.f597.mp4
[download] 100% of 262.47KiB in 00:00
[download] Destination: Papi Hans - Стой си вкъщи [Official Video]-udGtY2bmTxs.f599.m4a

Това е най-кофтито което има и ще го свали и ще го събере във каквото може. 597 и 599 както го искаше :) замени го само в луупа и си готов. Сигурен съм че няма да намериш по-кофти :D
« Последна редакция: Mar 29, 2020, 09:38 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6034
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Нави ме. Ще направя изпитания с последното. Най-вероятно ще сработи.

Но все пак, забележи, че не работи точно както трябва. Там дето му подаде да търси за m4a, в списъка имаше m4a с три пъти по-малък размер. Но явно, когато не му казваш изрично, какво да търси, успява някак.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

makeme

  • Напреднали
  • *****
  • Публикации: 884
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Нави ме. Ще направя изпитания с последното. Най-вероятно ще сработи.

Но все пак, забележи, че не работи точно както трябва. Там дето му подаде да търси за m4a, в списъка имаше m4a с три пъти по-малък размер. Но явно, когато не му казваш изрично, какво да търси, успява някак.
Имай предвид че при мен 597 и 599 вече ги няма. Да не помислиш че се е скапала командата :)

Цитат
$ /home/makeme/.local/bin/youtube-dl -F udGtY2bmTxs
[youtube] udGtY2bmTxs: Downloading webpage
[info] Available formats for udGtY2bmTxs:
format code  extension  resolution note
249          webm       audio only tiny   55k , opus @ 50k (48000Hz), 1.11MiB
250          webm       audio only tiny   72k , opus @ 70k (48000Hz), 1.47MiB
140          m4a        audio only tiny  130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 2.82MiB
251          webm       audio only tiny  145k , opus @160k (48000Hz), 2.92MiB
160          mp4        82x144     144p   38k , avc1.4d500b, 25fps, video only, 808.96KiB
133          mp4        136x240    144p   81k , avc1.4d400c, 25fps, video only, 1.70MiB
278          webm       144x256    144p   97k , webm container, vp9, 25fps, video only, 2.04MiB
134          mp4        202x360    240p  201k , avc1.4d400d, 25fps, video only, 4.22MiB
242          webm       240x426    240p  224k , vp9, 25fps, video only, 4.61MiB
135          mp4        270x480    240p  369k , avc1.4d4015, 25fps, video only, 7.77MiB
243          webm       360x640    360p  413k , vp9, 25fps, video only, 8.41MiB
136          mp4        406x720    360p  736k , avc1.4d401e, 25fps, video only, 15.21MiB
244          webm       480x854    480p  765k , vp9, 25fps, video only, 15.16MiB
137          mp4        608x1080   480p 1377k , avc1.64001f, 25fps, video only, 27.10MiB
247          webm       720x1280   720p 1528k , vp9, 25fps, video only, 29.13MiB
248          webm       1080x1920  1080p 2682k , vp9, 25fps, video only, 51.56MiB
18           mp4        202x360    240p  428k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 9.34MiB (best)

Иначе за м4а имай предвид че другите опции го карат да търси какво може да събере в мп4. Някъде горе беше писал че го предпочиташ и за това е тая голямата команда дето ти дадох. Това разбира се противоречи с логиката за най-малкото и тн.

ПП: Принципно при теб може да ти трябва и само worstvideo+worstaudio, но мисля че така, ако липсват, няма да ти свали нищо. За това и ма worst после за да свали най кофтито което може. Кавичките и другите знаци без слаша между опциите също мисля че можеш да разкараш. Те са ми от алиасите (аз така си слагам командите с опции).
« Последна редакция: Mar 29, 2020, 10:34 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6034
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Предпочитам го защото обикновено, най-малкия по размер звук ми идва в webm (249), рядко има нещо по-добро. А така или иначе vp8 е по-голям от mpeg 4 при еднакви други условия, та още по-рядко има webm, по-добър от 160. А ако и двете ще са в webm, то ще трябва да си играя с вградените възможности за именуване, защото по подразбиране би свалило едното, а на другото да твърди, че е вече свалено. Та затова. Иначе винаги гоня размер. По-добър размер, по-скорошно слушане (или евентуално гледане).
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

4096bits

  • Напреднали
  • *****
  • Публикации: 3624
    • Профил
Тъй, долното нещо не използва oti2 въпреки, че все пак го създава и прави проверка, ако съществува, да не се случва нищо.
Вместо това дърпа от Youtube данните за всяко видео от линковете в oti в JSON формат посредством youtube-dl и използва тези данни така:
Взима заглавието на видеото ( без разширението ), за всяко аудио и видео, формата и размера на файл, определя кой файл за всяко видео и аудио е най-малък и най-голям ( за всеки случай и второто ) и събира всичко това за всеки линк в oti накуп в някакаква структура.

След това сваля форматите на най-малките видео+аудио.

Всичко това е моя интерпретация на това, което разбрах, че искаш - както разбрах, възможно най-малък трафик. Ако искаш точно определен файлов формат да свалиш, може да се промени.

Засега работи. Хубаво е, че единият трите линка към Youtube, които даде като пример за oti, вече не е наличен, та промених някои неща.
Тествай и кажи, дали е наред.

Така и не разбрах малко по-надолу, как правиш имената. Щото не стигнах до там, но ще променя и това. Също и датата на новите mkv.

Искам само да разбера, дали работи при теб.

Код:
#!/usr/bin/env python3
#
#

from collections import namedtuple
import concurrent.futures as cf
from glob import glob
import json
import os
from pathlib import Path
import subprocess as sp
import sys
import time


def get_dw_link(oti_path):
    with open(oti_path) as oti:
        for line in oti:
            # Просто проверява, ако реда започва като линк за гледане на видео от Youtube
            # и игнорира всичко останало
            if line.startswith('https://www.youtube.com/watch?v='):
                yield line.split()[0]
               

def get_data(url):
    try:
        # Тук може да се сложи timeout като аргумент в секунди
        # Може да бъде и израз 10*60 става 10 минути. Или пък 10*60+15
       
        # Сваля данни за видеото в JSON формат
        resp = sp.run(f'youtube-dl -j {url}'.split(), capture_output=True) # timeout=timeout
       
        if resp.returncode == 0:
            data = json.loads(resp.stdout)
           
            video_data = {'video_id': data['display_id'],
                        'filename': Path(data['_filename']).stem,
                        'audio': dict(),
                        'video': dict()}
           
            audio = []
            video = []
            for media in data['formats']:
                _format = namedtuple('Format', ['format', 'filesize',])

                if media['filesize'] and 'audio only' in media['format']:
                    audio.append(_format(media['format_id'], media['filesize']))
                elif media['filesize']:
                    video.append(_format(media['format_id'], media['filesize']))
               
            audio.sort(key=lambda data: data.filesize)
            video.sort(key=lambda data: data.filesize)
           
            video_data['audio'] = audio
            video_data['video'] = video
           
            video_data['audio_min'] = min(audio, key=lambda data: data.filesize)
            video_data['video_min'] = min(video, key=lambda data: data.filesize)
           
            return video_data
       
        else:
            msg = f'\nGetting video data FAILED! Skipped: "{url}". Return code: {resp.returncode}\n'
           
            for line in resp.stderr.decode().split('\n'):
                if line.startswith('ERROR: '):
                    msg = f'{msg}{line}\n'
           
            msgs.append(msg)
           
    except sp.TimeoutExpired:
        print(f'\nTimeout! Subprocess: {" ".join(resp.args)}. Skipped!\n')
       
                                     
def get_ids():
    all_data = []
   
    with open('oti2', 'w') as oti2:
        with cf.ThreadPoolExecutor() as executor:
            videos_data = [executor.submit(get_data, url) for url in get_dw_link('oti')]
           
            for result in cf.as_completed(videos_data):
                data = result.result()
               
                if data:
                    all_data.append(data)
                    oti2.write(f'{data["video_id"]}\n')
     
    return all_data


###
# Премахваме файла, ако преди това скрипта е прекъснал и не го е премахнал сам
msgs = []

if os.path.exists('oti2'):
    os.remove('oti2')

mt_oti = os.stat('oti').st_mtime # Съхраняваме mtime на oti

# Ако не съществува или mtime му е различен от този на oti
if not os.path.exists('oti2') or os.stat('oti2').st_mtime != mt_oti:
    videos = get_ids()
       
    at_oti2 = os.stat('oti2').st_atime
   
    # За да се промени mtime на файла трябва да се зададат и двете atime и mtime. Не питай защо. Не зная.
    os.utime('oti2', (at_oti2, mt_oti))

# Сваляне на видеата от списъка в oti
for video in videos:
    # Търсим, ако има файл, който завършва на {id}.mkv
    pattern = f'*{video["video_id"]}.mkv'
   
    if glob(pattern):
        pass
        # print(f'ID: {{video["video_id"]} - Matroska OK!')
   
    else:
        command = f'youtube-dl -f {video["video_min"].format}+{video["audio_min"].format} -c {video["video_id"]}'.split()
       
        while not glob(pattern):
            try:
                proc = sp.run(command, check=True) # timeout=timeout
                print(f'\n')
           
                time.sleep(2) # Това по принцип не е необходимо
                 
            except sp.CalledProcessError:
               
                if proc.returncode < 0:
                    sys.exit(f'Subprocess stoped by a signal!')
                else:
                    continue
               

os.remove('oti2')

for msg in msgs:
    print(msg)     
« Последна редакция: Mar 30, 2020, 02:40 от 4096bits »
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6034
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Благодаря! Ще го пробвам. Едни изпълнения от снощи взеха да убиват надеждите ми, че ще е възможно да тегля в бъдеще време. Снощи си свалях някакви неща за слушане, като оставих едно дълго (близо час) да се сваля докато спя. На сутринта имах точно 6,7% от него.

Но си има предистория. Споменавал съм за един хубав формат под номер 139. Той се появява само, когато е имало поточно предаване и стои наличен, докато тубата не реши да прекодира нещото. При популярно видеа и канали го прави в рамките на не повече от час или два, а за не толкова посещаваните, някога във времето, като е възможно и никога. Попадал съм на такива след години. Например може да се види в канала на вестник „Банкеръ“.

Също споменах, че този месец се появиха едни формати 597, 599 и 600. Те ту се появяват, ту изчезват. Много са добри, защото карат с 15 кадъра в секунда за видео и около 30 КХц за аудио. Това ги прави почти идеални за мобилна връзка, където един умен клиент би могъл да ги ползва почти в реално време за предаване.

Снощи връзката ми спадна от 7 КБ, на около 3. Това не е нещо ново. Става почти всяка вечер. Предполагам вечер клетките са по-натоварени и затова ми пуска по-малко връзка. След два-три часа се оправя. Това обаче не ми позволява да гледам по време на сваляне, като дам няколко минути аванс, защото при 50 КБ/с (249), времето за сваляне става почти двойно.

Но аз съм подготвен за такива ситуации и си имам свалени неща за слушане. Подкасти, влогове, такива неща. Но забелязах друго. От Гългъл са започнали смяна на алгоритмите. Когато достъпиш 249 след около пет минути ти праща за малко 600. След още няколко минути го скрива. Това на практика означава, че цикленето се затормозява. Започва един формат, сменя го, връща се на стария. Това все още се преживява, защото са различни (единия е ogg, другия m4a).

И стигаме до случката от снощи. Това, което оставих да се тегли за през нощта (защото е близо час продължителност) имаше наличен само 140. Не е често, но тази гадна ситуация съществува. Но все пак за една нощ щеше да успее. Обаче се е случило същото. Някъде на разсъмване, за малко е подал хубав формат (най-вероятно 600, съдейки по отличния размер). И двете са в m4a. M4a поради някаква причина се тегли на части. Прилича на теглене на списък за изпълнение (m3u8). Това е много гнусна интерпретация на понятието „списък за изпълнение“, но за съжаление съществува широко извън тубата. В резултат на това е изтрило изтегленото от последните часове и е започнало на ново. След няколко врътки, хубавия формат се е скрил и е дошъл отново 140. И упражнението се е повторило.

Какво предполагам, че се случва? Гългъл провеждат изпитания за нов мобилен клиент. Той, когато надуши, че връзката му е слаба, ще прескача на тези по-добри варианти, за да продължи да свири. После ще се връща към ужасния 140. Така ще прескача, колкото е необходимо. Засега само по веднъж се включва. Снощи изтеглих десетина клипчета за слушане днес и навсякъде беше по веднъж.

Обаче предположението ми е, че в бъдеще няма да е само по веднъж, защото веднъ не върши работа за просвирване в реално време. А те не гонят мен, гонят МИЛИАРД и кусур индийци. Така цикличното сваляне ще стане невъзможно, защото прехвърлянето между форматите непрекъснато ще изтрива вече сваленото.

Разбира се новия клиент ще е за Андроид. Не вярвам да го има за ГНУ/Линукс. И да го има, не бих го ползвал. Не желая да предоставям информация на Гългъл, кой съм и от какво точно се интересувам.

Засега съм открил, че Гългъл все още е доста глупав и при ползване на един и същ компютър от няколко човека не успява да разпознае предпочитанията им. Радвам се за което. Така ги приема за един човек с широки интереси, които рядко се съвместяват. Това определено бърка алгоритмите му и съм щастлив.

п.п. Мейк твърдеше, че качеството е отвратително, но това не е така. Звука не може да бъде отличен от нормално ухо. Музикант сигурно би видял разликата, но не би ползвал тубата. Пък и аз не я ползвам за музика. Картината не е пикселизирана, просто има загуба на детайли. Това е като да гледаш без очила. Разбираш, какво гледаш, просто не всяка подробност виждаш. Но е напълно достатъчно, когато има връзка между звука и картината (което е съвсем, съвсем рядко) да разбереш това, което не би разбрал само от слушане. А дори в този случай е малко.


Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6034
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Една странична случка. Вчера си направих труда да проверя, защо песен в тройката на набиращите популярност е изчезнала. Оказа се, че цитирам някоя си Мария Найденова, песента на „кака Дени“ е свалена за авторски права. Явно „кака Дени“ не си е платила. Същата „кака Дени“ е най-известна с това, че в извънредно тъпата песен „Майко, майко“ на Boreau, има посветен ред на нея. В него се казва:

Цитат
„Като съм звезда, не мога да ходя с рейса“
– Гле~й с~я, не съм пълен с въздух като Lay's-a.

За нямащите деца уточнявам, че Lay's е марка чипс. Чипса е изключително чупливо нещо и за да може да се пренася в по-големи количества (например кашон), то пакетите се пълнят до две трети от обема си с въздух. Това има страничен, рекламен ефект, защото пакетите изглеждат по-големи. И в реалния живот е така. Като си поемеш много въздух, се изпъчваш хубавичко да те видят, но така обикновено става видна и простотията ти.

За пак с хората без деца в пубертета уточнявам, че „кака Дени“ е певица (силно казано). Тя е звезда от Youtube на младото поколение, опитваща се да повтори успеха на Криско, 100 кила и др., като например последните трима спечелили Бай Брадър. Не успя да прескочи от Youtube в телевизията и успеха ѝ позавехна след няколко „песни“. В последните две години ми изпадна от поглед, но вчера разгледах канала ѝ. Очевидно е решила да се пробва на друго поприще. Има песен с Галин (този е чалгаджия, имащ дуети с всякакви скандални личности като Сузанита), а свалената песен от името личи, че е кавър на турска.
« Последна редакция: Mar 30, 2020, 16:14 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Acho

  • Напреднали
  • *****
  • Публикации: 3525
  • Distribution: Slackware, MikroTik - сървърно
  • Window Manager: console only
    • Профил
    • WWW
Еми те чалгиите са така, работата е "ако стане" "ако мине". Ако на някой се хареса песента - ОК. Ако не се хареса - "би маа му" и песен. Следваща ще се прави.
Активен

CPU - Intel Quad-Core Q8400, 2.66 GHz; Fan - Intel Box; MB - Intel G41M-T2; RAM - DDR2-800, Kingston HyperX, 2X2048 MB; VC - onboard, Intel G41 Express Chipset; HDD - SeaGate, 160 GB, SATAII; SB - Realtek HD Audio; DVD-RW - TSSTcorp DVD-RW; LAN - Realtek PCI-E GBE Controller; PSU - Fortron 350 Watt.

makeme

  • Напреднали
  • *****
  • Публикации: 884
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Гого, на гугъл в момента не може да се разчита на консистентност, понеже имат проблем с трафика. Не знам дали следиш, но от началото на кризата в европа, а сега гледам и световно правят промени
https://abcnews.go.com/Technology/netflix-youtube-throttle-streaming-quality-europe-coronavirus-forces/story?id=69754458
Знам че няма да отвориш линка, но накратко - всички компании имат проблеми с  трафика и правят промени (ограничават качеството и тнт).
*Първоначално преомените важяха само за европа
« Последна редакция: Mar 30, 2020, 22:57 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6034
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Ми не. Абц ми се отвори без проблем. Онова на Ремо не ми се отваряше, защото съм с изключен js и бисквитки, иронично поради трафик и да не ги подпомагам допълнително в шпионажа. Но това си се отвори без проблем. Бяха достигнали до мен няколко новини за проблеми с трафика, но в тях се говореше крайните клиенти. Били потребявали много повече, а мрежите били стари. Но не знаех, че и доставчиците на съдържание изпитват трудности. Последно чух, че Тръмп се обърнал към Netflix принудително да ограничат качеството.

Вчера правих изпитания на worstvideo+worstaudio/worst. Ами, както и предполагах, разработчиците на Ydl не са се справили, кой знае, колко добре. Да кажем в три четвърти от случаите се справя, но по принцип алгоритъма не е добър.

Например, там където има 278 и 160, винаги избира 278. Това е vp9, другото е mpeg4. Ами то винаги се е знаело (и аз го знам от преди да ми пука за трафика), че vp8/9 са по-големи по размер при равни други условия. Гългъл също го знаят и за целта са понижили битовия поток от 113 на 97 та горе-долу да са съпоставими. Ама пак е грубо 20% по-голям. Няма как да докараш VP с подобно качество да е на подобен размер, колкото и да си Гългъл.

Забележи, че това е вярно абсолютно навсякъде. Например за размерите дето теб те интересуват (1080p) са свалили битовия поток почти наполовина.

Така, че това worstvideo просто не върши работа. Смешното е, че научих нещо от него. Има някакъв нов формат (или поне не съм му обърнал внимание) 378. Той е мъничко по-голям от 160, но все пак по-голям. При време три минути добавя половин да речем. Нещо такова.

Интересното е, че това е AV1. Естествено Ydl си казва, я какъв приятен формат, само с 15% Е по-голям от mp4, дай да прекарам човека и да го сваля, като няма нищо по-голямо. Понеже изпитанията провеждам с кратки клипчета по минута, две (най-кратките, които намирам), това никак не ми се отрази видимо във времето.

Обаче проблема следваше след това. В стария Дебиан това няма, с какво да се отвори. То хубаво мога да дам на mpv --no-video, ама що съм го теглил? В новия Дебиан Бъстър има някаква библиотечка libaom0  (от паяжината разбрах доста лоша), която се инсталира без проблем, но mpv отказва да я ползва. Нещо повече дори vlc от Deb-multimedia явно е достатъчно стара версия, че не поддържа AV1. За не следящите сагата AV1 уточнявам, че VLC развиват собствена библиотека за AV1.

Та така. Ydl е отлична програма, но опре ли до нуждите на хора с бавни връзки, са си оставили ръцете. Не ги обвинявам. Те просто никога не са имали същия проблем, за да го решават.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
bash срипт за местене на файлове
Общ форум
nov_chovek 3 946 Последна публикация Oct 27, 2009, 16:17
от radoulov
Bash - взимане на няколко реда от средата на текст файл
Общ форум
PhrozenCrew 7 1283 Последна публикация Dec 04, 2009, 15:35
от radoulov
bash проблемче
Общ форум
asp 3 1015 Последна публикация Jun 21, 2010, 19:13
от asp
Питанка за bash скрипт
Общ форум
p1k0 9 1294 Последна публикация Sep 05, 2010, 02:47
от neter
bash + php
Общ форум
mrowcp 5 975 Последна публикация Sep 06, 2010, 17:23
от neter