Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
часть 1 | часть 2 | часть 3 | часть 4 | часть 5
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору > Автоматизация администрирования
Microsoft Windows > Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
> Описание Cmd.exe > Command shell overview
> Using batch files > Using batch parameters > Using filters > Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37439 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Записывать их из .bat файла - не слишком хорошая идея.

Ладно. Пусть .com отпадают. Есть у вас на примете аналог choice.exe с нужным функционалом?
 
Если не получится корректно писать его из .bat (без перевода строки с помощью set, а не echo), то можно поместить его код в конец .bat и при запуске "отрезать хвост" в отдельный файл. Можно ли штатными средствами каким-либо образом разрезать файл?
 
 

Цитата:
как только плейлист был бы найден, процесс перебора остальных прокси должен завершиться

Вопрос в том, как вы определите, что найденный плейлист - тот самый? Цикл банально будет возвращать вам только первую найденную строку:
 

Код:
@Echo Off
set /p url=url:
For /f %%A in (Proxy.txt) do For /f %%A in ('streamlink.exe --http-proxy %%A --https-proxy %%A --stream-url %url%') do Set "PlayList=%%A" & Goto EndFor
:EndFor

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 19:39 23-01-2021 | Исправлено: A27, 20:16 23-01-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
notinthewoods
Этот streamlink.exe errorlevel возвращает?  
Если да, то можно  проверять его и выходить в случае успеха из цикла
 
Или так: if not "%%A"=="" (OK) else (NOT OK)

Всего записей: 408 | Зарегистр. 12-09-2017 | Отправлено: 22:51 23-01-2021 | Исправлено: Fenrizz, 23:17 23-01-2021
notinthewoods

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz, A27
Блин, всё не так просто оказывается(
Во-первых:
A27

Цитата:
Вопрос в том, как вы определите, что найденный плейлист - тот самый? Цикл банально будет возвращать вам только первую найденную строку

Найденный плейлист будет тот самый. Потому что в переменной url задается адрес конкретной страницы стрима и там будет единственный плейлист в формате m3u8 для текущего сеанса работы камеры стримера. Если камера будет отключена, то после включения адрес плейлиста будет другой.
 
Во-вторых. Сейчас ситуация такая. Цикл начинает работу, делается попытка соединения через прокси из первой строки файла proxy.txt. Если соединение успешное, то плейлист будет получен и отправлен дальше - пойдет запись. Всё ок.
Однако, если прокси из первой строки окажется нерабочим, то дальше отправляется переменная %playlist% с пустым значением - записи нет, процесс завершается, включается таймаут, по окончании которого цикл начинает работу по новой и снова влетает на первую бесполезную строку в proxy.txt. Замкнутый круг(
Вот схема батника (без прочей косметики). Кстати, полностью рабочая, если в файле proxy.txt первая строка содержит хороший прокси (или в списке только одна строка с хорошим прокси):

Цитата:
@echo off
set /p url=url:
:new_cycle
for /f "delims=" %%a in (proxy.txt) do for /f "delims=" %%a in ('streamlink.exe --http-proxy %%a --https-proxy %%a --stream-url %url%') do set "playlist=%%a" & goto endfor
:endfor
streamlink.exe %playlist% best
timeout 30
goto new_cycle

 
Задача вновь обновляется( Нужно да, if...else. Алгоритм мне представляется таким:
1. Строка прокси проверена - соединение успешное - плейлист получен - перебор прокси закончен - плейлист отправлен дальше по назначению.
2. Строка прокси проверена - нет соединения (плейлист пустой) - запрет на передачу пустого плейлиста дальше - переход к следующей строке прокси в списке.

Всего записей: 123 | Зарегистр. 31-01-2015 | Отправлено: 23:37 23-01-2021
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
notinthewoods,

Цитата:
Блин, всё не так просто оказывается(

Стало бы проще, если бы было видно хоть часть содержимого proxy.txt.
 

Цитата:
2. Строка прокси проверена - нет соединения (плейлист пустой)

Если при отсутствии соединения с выбранным прокси streamlink.exe возвращает пустую строку, то делайте как написал Fenrizz:
 

Код:
@Echo Off
set /p url=url:
For /f %%A in (Proxy.txt) do For /f %%A in ('streamlink.exe --http-proxy %%A --https-proxy %%A --stream-url %url%') do If not "%%A"=="" streamlink.exe %%A best & Exit/b

 
Это при условии, что полученный "непустой" плейлист в дальнейшем не станет "пустым", а для поиска следующего батник будет запускаться снова.
 

Цитата:
timeout 30

Таймаут зачем?
 
P.S. Если и этого не достаточно, то изложите в задаче полностью, чего вы хотите, чтобы каждый раз не дописывать батник по одной букве.

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 04:38 24-01-2021 | Исправлено: A27, 04:39 24-01-2021
Egor2020

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я на данный момент использую Windows 7 Ultimate SP1 (x64). Я создал батник для запуска программы с параметрами (используется утилита winapiexec.exe из сборника консольных Win32-утилит, взятого из шапки данной темы):

Код:
@echo off
winapiexec.exe k@WinExec "C:\Windows\System32\notepad.exe C:\Windows\win.ini" 1

Но при запуске батника ничего не происходит.
Подскажите мне, что я делаю не так?

Всего записей: 849 | Зарегистр. 01-03-2020 | Отправлено: 09:18 24-01-2021 | Исправлено: Egor2020, 09:24 24-01-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
notinthewoods
Во внутреннем цикле я бы добавил tokens=*

Цитата:
for /f "tokens=* delims=" %%a in ('streamlink.exe --http-proxy  

 
Добавлено:
Egor2020
Зачем так сложно?  
А так не проще?

Цитата:
@echo off
C:\Windows\System32\notepad.exe C:\Windows\win.ini

Всего записей: 408 | Зарегистр. 12-09-2017 | Отправлено: 09:46 24-01-2021 | Исправлено: Fenrizz, 09:51 24-01-2021
Egor2020

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знаю, в какой теме это написать, поэтому я напишу сюда. Заранее извините меня, если я не туда написал.
Почему набор утилит командной строки для работы с PDF-файлами XpdfTools (скачан отсюда) не запускается на Windows XP Professional SP3? Выскакивает ошибка, что файл не является приложением Win32. Какая версия XpdfTools последняя совместимая с Windows XP SP3?

Всего записей: 849 | Зарегистр. 01-03-2020 | Отправлено: 10:13 24-01-2021 | Исправлено: Egor2020, 10:18 24-01-2021
fscpsd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Egor2020
Не могу точно ответить на ваш вопрос (нету WinXP), но, судя по документации, версия 2.03, входящая в состав пакета gnuwin32, должна работать с WinXP. Думаю, для подавляющего большинства задач её будет вполне достаточно.
http://gnuwin32.sourceforge.net/packages/xpdf.htm
 
А тему вам лучше было выбрать вот эту, наверное:
http://forum.ru-board.com/topic.cgi?forum=5&topic=17599
 
Или воскресить что-нибудь подобное:
http://forum.ru-board.com/topic.cgi?forum=5&topic=8814
 
Или вообще создать новую тему.

Всего записей: 128 | Зарегистр. 16-09-2010 | Отправлено: 10:34 24-01-2021
los

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Почему набор утилит командной строки для работы с PDF-файлами XpdfTools (скачан отсюда) не запускается на Windows XP Professional SP3?

Newer versions of the Microsoft Visual Studio compilers generate code that won't run on WinXP / Win2003. That means my precompiled binaries won't run on those old versions of Windows.
 
I believe you found old binaries on an old snapshot of my web site via the Internet Archive. That might be a good option for anyone else who wants old xpdf binaries.

Всего записей: 4588 | Зарегистр. 08-09-2001 | Отправлено: 10:47 24-01-2021
notinthewoods

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A27

Цитата:
Стало бы проще, если бы было видно хоть часть содержимого proxy.txt

Да обычные прокси с протоколом HTTP:

Цитата:
http://192.53.124.214:8888
http://login:password@ip:port
http://149.28.195.139:8080
http://104.248.63.49:31583


Цитата:
Таймаут зачем?

Стример может уйти в приватный чат, поэтому в соответствии с этим таймаутом производится опрос сервера, не появился ли стример в общем чате.
Fenrizz, A27
Спасибо. В целом цель достигнута - идет перебор до первого рабочего прокси, происходит получение плейлиста, далее запуск стримлинка уже на запись (или воспроизведение, если не указывать выходной файл).
Сейчас при этой строке:

Цитата:
for /f "delims=" %%a in (proxy.txt) do for /f "tokens=* delims=" %%a in ('streamlink.exe --http-proxy %%a --https-proxy %%a --stream-url %url%') do if not "%%a"=="" streamlink.exe %%a best

такие нюансы:
1. Если стрим уйдет на паузу, происходит дальнейший перебор оставшихся строк в proxy.txt, пока весь список не закончится.
2. После таймаута снова начинается перебор прокси с первой строки.
Вот если бы вместо п.2 происходила бы сразу попытка соединения по тому "успешному" прокси, через который был получен рабочий плейлист, было бы классно. Но это наверное из области серьезного программирования)))

Всего записей: 123 | Зарегистр. 31-01-2015 | Отправлено: 17:04 24-01-2021
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Да обычные прокси с протоколом HTTP

Тогда цикл будет таким:

Код:
For /f "Tokens=*" %%A in (Proxy.txt) do For /f %%A in ('streamlink.exe --http-proxy %%A --https-proxy %%A --stream-url %url%') do If not "%%A"=="" streamlink.exe %%A best


Цитата:
это наверное из области серьезного программирования

Ничего подобно. Чтобы дополнить код, нужно знать точно, что пишет streamlink.exe, если получен верный прокси, если получен не верный прокси, и каково будет поведение streamlink.exe, если прокси был верным, а затем стал не верным. А ещё нужно знать значение ErrorLevel для каждого состояния:
 

Код:
@Echo Off
Set Url=задать
Set Proxy=задать
streamlink.exe --http-proxy %Proxy% --https-proxy %Proxy% --stream-url %Url%
Echo Err=%ErrorLevel%
Pause

 
Ещё нужно понять, что такое "best". И кто определяет продолжительность таймаута в батнике?
 
Эти нюансы необходимы для корректного алгоритма, но предположительно батник будет таким:

Код:
@Echo Off
Set /p Url=url:
For /l %%. in () do For /f "Tokens=*" %%A in (Proxy.txt) do For /f %%A in ('streamlink.exe --http-proxy %%A --https-proxy %%A --stream-url %Url%') do If not "%%A"=="" Set "ErrorCode=" & Call :Stream %%A
:Stream
StreamLink.exe %1 best
If %ErrorCode%.==%ErrorLevel%. Exit/b 1
Set ErrorCode=%ErrorLevel%
>NUL Timeout.exe/t 30
Goto Stream
 

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 19:55 24-01-2021 | Исправлено: A27, 04:30 25-01-2021
Baltazar500



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать выхлоп dir /s/b в файл в кодировке cp1251 командой в одну строку ? Вариант

Код:
chcp 1251 && dir /s/b D:\ > D:\list.txt
не прокатывает. Кодировка меняется, а в файле остаётся cp866. Если команда в 2 строки - сначала смена кодировки, а потрм выхлоп, то всё ОК. Можно конечно выкрутиться, заюзав iconv из cygwin/unixtools, но это костыль, имхо.

Всего записей: 1736 | Зарегистр. 19-09-2011 | Отправлено: 23:16 24-01-2021 | Исправлено: Baltazar500, 23:16 24-01-2021
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
chcp 1251 && cmd /c "dir /s/b D:\ > D:\list.txt"

Всего записей: 3457 | Зарегистр. 23-04-2009 | Отправлено: 23:24 24-01-2021
notinthewoods

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A27
Запустил ваш вариант батника (20:52 24-01-2021).
Окно батника сразу закрывается после ввода url и нажатия Enter. Что-то CMD категорически не нравится, какое-то условие выполниться не может абсолютно.
Windows 10 64bit. Прием обновлений включен.

Цитата:
что такое "best"

Наилучшее качество из предлагаемых стримером, которое будет записывать стримлинк:

Цитата:
[cli][info] Available streams: 240p (worst), 480p, 720p, 1080p (best)


Цитата:
кто определяет продолжительность таймаута в батнике?

Если именно в батнике - тот, кто этот батник рисует) Вопрос видимо правильно звучит так: Какую продолжительность задать для таймаута. Чисто опытным путем. Меньше 20 сек неразумно - сервер может и забанить за такие частые запросы. Делать таймаут 1-2-3 мин - можно конечно, если не сильно важно попадать точно на начало возобновившейся трансляции...
 
Запустил такой тест с надежным прокси:

Цитата:
@Echo Off
Set Url=***(конкретный)
Set Proxy=http://login:password@ip:port (конкретный)
streamlink.exe --http-proxy %Proxy% --https-proxy %Proxy% --stream-url %Url%
Echo Err=%ErrorLevel%
Pause

Ответ:

Цитата:
https://...playlist.m3u8 (конкретный)
Err=0
Для продолжения нажмите любую клавишу . . .

Этот же тест, но прокси http://... нерабочий:
 

Цитата:
error: Unable to open URL: ... (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response')))
Err=1
Для продолжения нажмите любую клавишу . . .

Формулировки сообщений об ошибках могут быть разными (еще один пример в комментарии ниже), суть одна - Err=1
 
Вот примеры сообщений стримлинка в рабочих батниках. Это батник для воспроизведения потока (по умолчанию для стримлинка плеер VLC).
Плейлист найден через рабочий прокси:

Цитата:
[cli][info] Found matching plugin hls for URL https://...playlist.m3u8
[cli][info] Available streams: 240p (worst), 360p, 720p (best)
[cli][info] Opening stream: 720p (hls)
[cli][info] Starting player: "C:\Program Files\VideoLAN\VLC\vlc.exe"

Прокси нерабочий, стримлинк сообщает:

Цитата:
usage: streamlink [OPTIONS] <URL> [STREAM]
streamlink: error: unrecognized arguments: to open URL: https://... (HTTPSConnectionPool(host='...', port=443): Max retries exceeded with url: ... (Caused by ProxyError('Cannot connect to proxy.', timeout('timed out')))) best

Всего записей: 123 | Зарегистр. 31-01-2015 | Отправлено: 23:50 24-01-2021 | Исправлено: notinthewoods, 23:53 24-01-2021
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Окно батника сразу закрывается после ввода url и нажатия Enter
Исправил. А url обязательно постоянно вводить вручную?
 

Цитата:
Вот примеры сообщений стримлинка в рабочих батниках
Это результат передачи найденного плейлиста?
 

Цитата:
Формулировки сообщений об ошибках могут быть разными
Так и необходима информация о всех вариациях.
 

Цитата:
Этот же тест, но прокси http://... нерабочий:
 
Прокси нерабочий, стримлинк сообщает:
Почему разные результаты при одинаковых данных? Или параметр не был введён или как? И не видно ни одной ссылки, вообще хаос какой-то.
Если не будете давать информацию, вам ничем не смогут помочь.
 
Предположительно:

Код:
@Echo Off
Set/p Url=Url:  
For /l %%. in () do For /f %%A in (Proxy.txt) do For /f "Tokens=1,2 Delims=:" %%A in ('streamlink.exe --http-proxy %%A --https-proxy %%A --stream-url %Url%') do If not "%%A"=="usage" If not "%%A"=="error" If not "%%A"=="streamlink" Set "ErrorCode=" & Call :Stream %%A:%%B
:Stream
StreamLink.exe %1 best
If %ErrorCode%.==%ErrorLevel%. Exit/b 1
Set ErrorCode=%ErrorLevel%
>NUL Timeout.exe/t 30
Goto Stream

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 05:22 25-01-2021 | Исправлено: A27, 05:30 25-01-2021
Egor2020

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли у редактора шрифтов FontForge режим командной строки? Нужно автоматизировать конвертацию шрифтов OTF с контурами PostScript в формат TTF с помощью BAT-файла.

Всего записей: 849 | Зарегистр. 01-03-2020 | Отправлено: 09:35 25-01-2021 | Исправлено: Egor2020, 09:40 25-01-2021
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Egor2020
https://fontforge.org/docs/techref/cliargs.html

Всего записей: 408 | Зарегистр. 12-09-2017 | Отправлено: 10:18 25-01-2021
notinthewoods

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A27
Потестил вариант батника (05:30 25-01-2021). Сразу отмечу, что пришлось заменить двоеточие на точку с запятой в двух местах:

Цитата:
"Tokens=1,2 Delims=:" %%A in


Цитата:
%%A:%%B

потому как в адресе плейлиста (внутри) есть двоеточие и плейлист сначала был получен аккурат до этого двоеточия. Не знаю, правильно ли применять точку с запятой в этом случае, может надо какой другой символ...
Теперь о работе батника. Четко прослеживаются 2 фазы его работы. На скриншоте постарался подробно объяснить. Список прокси Proxy.txt был составлен по такому сценарию. 4 строки, рабочий прокси только один, специально поместил на строку №2 (чтобы были попытки соединения до и после строки №2). В трех оставшихся прокси поставил порт 0 для гарантированного получения ошибки соединения. Ну, чтобы быть уверенным, что плейлист будет получен только из строки №2 и не иначе.

Цитата:
http://165.227.11.196:0
http://login:password@ip:port
http://52.14.29.191:0
http://192.236.160.186:0

(здесь был скриншот)
Да, забыл подчеркнуть в скрине - когда плейлист берется из кэша, то сервер тот же (edge173 - edge173; edge205 - edge205 и т.д.) А когда плейлист запрашивается по новой, сервер меняется. Это дополнительное подтверждение к тому, что в фазе №1 батник использует адрес плейлиста из кэша.
При первой потере потока (я просто выключил плеер VLC) плейлист был взят из кэша. Но при второй потере батник почему-то "забыл" это сделать и перешел к дальнейшему перебору строк - к фазе №2.
 
В идеале - батник после потери стрима должен в обязательном порядке пробовать получить поток имеющимся плейлистом (т.е. как в фазе 1). Если же попытка окажется неудачной - переходить к фазе №2.
 
И еще. То, что номер сервера меняется - значения не имеет. На любом из трех вариантов плейлиста поток принимается с одинаковым успехом.
===============

Цитата:
А url обязательно постоянно вводить вручную?

Это просто универсальный вариант, чтобы можно было бы вводить адрес любого стрима. Разумеется, легко переделать под конкретный url.

Цитата:
Это результат передачи найденного плейлиста?

Это результаты разных ситуаций. В первом случае плейлист найден, передан стримлинку на воспроизведение - "Starting player..."
Во втором случае - "Cannot connect to proxy..." - нет соединения - плейлист не получен - нет передачи плейлиста. Точнее, передается пустая информация. Потому что в батнике команда вместо:

Цитата:
streamlink https://<server>/live-hls/amlst:<nickname><blablabla>_trns_h264/playlist.m3u8 720p

приобретает такой вид:

Цитата:
streamlink 720p

Вот в результате и такие сообщения обиженного стримлинка о том, как нужно правильно его юзать, что мол у вас тут "непризнанные аргументы"...

Цитата:
Так и необходима информация о всех вариациях (ошибок)

Какие выловил:

Цитата:
error: Unable to open URL:https://en.chaturbate.com/get_edge_hls_url_ajax/ (HTTPSConnectionPool(host='en.chaturbate.com', port=443): Max retries exceeded with url: /get_edge_hls_url_ajax/ (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000002185B171A00>, 'Connection to 165.227.11.196 timed out. (connect timeout=20.0)')))
***
error: Unable to open URL:https://en.chaturbate.com/get_edge_hls_url_ajax/ (HTTPSConnectionPool(host='en.chaturbate.com', port=443): Max retries exceeded with url: /get_edge_hls_url_ajax/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002B9F6C81A00>: Failed to establish a new connection: [WinError 10061] Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение'))))
***
error: Unable to open URL:https://en.chaturbate.com/get_edge_hls_url_ajax/ (HTTPSConnectionPool(host='en.chaturbate.com', port=443): Max retries exceeded with url: /get_edge_hls_url_ajax/ (Caused by ProxyError('Cannot connect to proxy.', timeout('timed out'))))

Эти раньше попадались:

Цитата:
(Caused by ProxyError('Cannot connect to proxy.', timeout('_ssl.c:1108: The handshake operation timed out'))))
(Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response'))))
(Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 500 Internal Server Error'))))
(Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden'))))
(Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 400 Bad Request'))))

Всего записей: 123 | Зарегистр. 31-01-2015 | Отправлено: 21:43 25-01-2021 | Исправлено: notinthewoods, 17:54 26-01-2021
Baltazar500



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000, Спасибо.

Всего записей: 1736 | Зарегистр. 19-09-2011 | Отправлено: 01:45 26-01-2021 | Исправлено: Baltazar500, 08:34 26-01-2021
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
notinthewoods,

Цитата:
правильно ли
 
батник использует адрес плейлиста из кэша
 
батник после потери стрима должен в обязательном порядке пробовать получить поток имеющимся плейлистом
Нет, там нужно двоеточие.
Плейлист в кэше хранит не батник, а плеер или streamlink.
С учётом вышесказанного, батник будет такой:
 

Код:
@Echo Off
Set/p Url=Url:  
For /l %%. in () do For /f %%A in (Proxy.txt) do For /f "Tokens=1* Delims=:" %%A in ('streamlink.exe --http-proxy %%A --https-proxy %%A --stream-url %Url%') do If not "%%A"=="error" Set "Error=" & Call :Stream %%A:%%B
:Stream
Echo.
StreamLink.exe %1 best
If ErrorLevel 1 (
If defined Error Exit/b 1
Set Error=  
)
Echo.
Timeout.exe/t 30
Goto Stream


Цитата:
Какие выловил:
Эти раньше попадались:

Тут сперва нужно отделить ошибки при обращении к прокси, от ошибок при передаче плейлиста на воспроизведение, тогда будет понятно, как их учесть в батнике. Делать это надо (при условии, что ошибки вообще возникают) через батник, который я приводил раньше. Или вот, его аналог с разделением ошибок:
 

Код:
@Echo Off
Set Url=задать
Set Proxy=задать
Echo Proxy error:
For /f "Tokens=*" %%A in ('streamlink.exe --http-proxy %Proxy% --https-proxy %Proxy% --stream-url %Url%') do (
If not defined PlayList Set PlayList=%%A
Echo %%A
)
Echo Err=%ErrorLevel%
Echo Playlist error:
streamlink.exe %PlayList% best
Echo Err=%ErrorLevel%
Pause

 
P.S. Скриншот, полагаю, больше не нужен, можно (нужно) удалить.

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 08:06 26-01-2021 | Исправлено: A27, 08:24 26-01-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru