Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Необходимо найти все строки которые начинаются с "download:"https:" и заканчиваются

Ответить
Настройки темы
VBS/WSH/JS - [решено] Необходимо найти все строки которые начинаются с "download:"https:" и заканчиваются

Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте, нужна ваша помощь.
Есть текстовый файл сгенерированный программой, вид содержимого файла:
Код: Выделить весь код
{'title':'Эпизод 1', 'file':'[1080p]//de2.anilibria.tv/videos/ts/8374/0001-hd/playlist.m3u8,[720p]//de2.anilibria.tv/videos/ts/8374/0001/playlist.m3u8,[480p]//de2.anilibria.tv/videos/ts/8374/0001-sd/playlist.m3u8', download:"https://x.anilibria.tv/get/3BdXdlP0bs4wlKyjQcXZpA/1557795967/mp4/8374/0001.mp4?download=Hitoribocchi no Marumaru Seikatsu-1-sd.mp4", 'id': 's1'},
{'title':'Эпизод 2', 'file':'[1080p]//de2.anilibria.tv/videos/ts/8374/0002-hd/playlist.m3u8,[720p]//de2.anilibria.tv/videos/ts/8374/0002/playlist.m3u8,[480p]//de2.anilibria.tv/videos/ts/8374/0002-sd/playlist.m3u8', download:"https://x.anilibria.tv/get/ciP3toJ3rI3-x25Rqxxa0g/1557795967/mp4/8374/0002.mp4?download=Hitoribocchi no Marumaru Seikatsu-2-sd.mp4", 'id': 's2'},
{'title':'Эпизод 3', 'file':'[1080p]//de2.anilibria.tv/videos/ts/8374/0003-hd/playlist.m3u8,[720p]//de2.anilibria.tv/videos/ts/8374/0003/playlist.m3u8,[480p]//de2.anilibria.tv/videos/ts/8374/0003-sd/playlist.m3u8', download:"https://x.anilibria.tv/get/2xTCA5dY7tiA634RtlXrTw/1557795967/mp4/8374/0003.mp4?download=Hitoribocchi no Marumaru Seikatsu-3-sd.mp4", 'id': 's3'},
{'title':'Эпизод 4', 'file':'[1080p]//de2.anilibria.tv/videos/ts/8374/0004-hd/playlist.m3u8,[720p]//de2.anilibria.tv/videos/ts/8374/0004/playlist.m3u8,[480p]//de2.anilibria.tv/videos/ts/8374/0004-sd/playlist.m3u8', download:"https://x.anilibria.tv/get/Zgk0waIDnyzpgH4K3QM1hw/1557795967/mp4/8374/0004.mp4?download=Hitoribocchi no Marumaru Seikatsu-4-sd.mp4", 'id': 's4'},
{'title':'Эпизод 5', 'file':'[1080p]//de2.anilibria.tv/videos/ts/8374/0005-hd/playlist.m3u8,[720p]//de2.anilibria.tv/videos/ts/8374/0005/playlist.m3u8,[480p]//de2.anilibria.tv/videos/ts/8374/0005-sd/playlist.m3u8', Hitoribocchi no Marumaru Seikatsu-5-sd.mp4",
=Hitoribocchi no Marumaru Seikatsu-5-sd.mp4", 'id': 's5'}
Необходимо найти все строки которые начинаются с "download:"https:" и заканчиваются на ".mp4"," и удалить их.
Например чтобы были удалены только строки такого вида:
Код: Выделить весь код
download:"https://x.anilibria.tv/get/z0k5b2jejzcDn4Ul35wXTg/1557778143/mp4/8330/0006.mp4?download=Midara na Ao-chan wa Benkyou ga Dekinai-6-sd.mp4",
Количество строк каждый раз разные....

-------
Век живи, век учись! =)


Отправлено: 05:52, 12-05-2019

 

Ветеран


Contributor


Сообщения: 2709
Благодарности: 1685

Профиль | Отправить PM | Цитировать


А можно на языке vbs удалить все эти фрагменты
Код: Выделить весь код
FileIn = "Z:\Box_In\playlist.txt"

RegExp = "download:""https:.*?\.mp4"", "

With WScript.Arguments
    If .Count <> 0 Then FileIn = .Item(0)
End With

With CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    With .OpenTextFile(FileIn, 1)
        If Err.Number <> 0 Then
            MsgBox "Error open file " + vbCrLf + vbCrLf + FileIn + vbCrLf + vbCrLf + "Код ошибки " + CStr(Err.Number) + vbCrLf + Err.Description
            WScript.Quit 1
        End If
        InTxt = .ReadAll
        If Err.Number <> 0 Then
            MsgBox "Error read file " + vbCrLf + vbCrLf + FileIn + vbCrLf + vbCrLf + "Код ошибки " + CStr(Err.Number) + vbCrLf + Err.Description
            WScript.Quit 1
        End If
        .Close
        On Error GoTo 0
    End With
            
    With CreateObject("VBScript.RegExp")
        .Pattern = RegExp
        .IgnoreCase = True
        .MultiLine = True
        .Global = True
        Result = .Replace(InTxt, "")
    End With
    
    With .CreateTextFile(FileIn, True)
        .Write Result
        .Close
    End With
    
End With
MsgBox "Done!"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 14-05-2019 в 07:43.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:28, 14-05-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата angel_lyucifer:
А можно ли на языке vbs? »
пора переходить уже... ибо:
Цитата angel_lyucifer:
Век живи, век учись! »

-------
scio me nihil scire. Ѫ


Отправлено: 08:01, 14-05-2019 | #12


Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата megaloman:
А можно на языке vbs удалить все эти фрагменты »
Спасибо вам большое....

-------
Век живи, век учись! =)


Отправлено: 11:49, 14-05-2019 | #13


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


megaloman, несколько замечаний по коду:
  • .MultiLine в данном случае не нужен;
  • .Replace() следует выполнять только после проверки совпадения шаблона по .Test();
  • то же самое касается и пересоздания файла, дабы не переписывать одно и то же, т.е. и Replace(), и .CreateTextFile() должны быть внутри условия If .Test(…) Then … End If (на PowerShell, кстати, мне тоже следовало бы так делать).

Последний раз редактировалось Iska, 14-05-2019 в 17:56. Причина: Грамматика

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:42, 14-05-2019 | #14


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата Iska:
.Replace() следует выполнять только после проверки совпадения шаблона по .Test() »
нет

Цитата Iska:
на PowerShell, кстати, мне тоже следовало бы так делать »
на PowerShell не надо пытаться писать как на (Visual)Basic

Отправлено: 21:09, 14-05-2019 | #15


Ветеран


Contributor


Сообщения: 2709
Благодарности: 1685

Профиль | Отправить PM | Цитировать


Цитата Iska:
.Replace() следует выполнять только после проверки совпадения шаблона по .Test(); »
ИМХО, не так категорично. Однако, если помнить о том, что это
Цитата Iska:
касается и пересоздания файла, дабы не переписывать одно и то же, »
то это было бы полезным.
Код: Выделить весь код
.................
    With CreateObject("VBScript.RegExp")
        .Pattern = RegExp
        .IgnoreCase = True
        .Global = True
	If Not .Test(InTxt) Then
            MsgBox "no substrings to replace. Reg expression:" + vbCrLf + vbCrLf + """" + RegExp + """"
            WScript.Quit 1
	End If
        Result = .Replace(InTxt, "")
    End With
.................

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 22:20, 14-05-2019 | #16


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Busla:
нет »
Да.

Цитата Busla:
на PowerShell не надо пытаться писать как на (Visual)Basic »
Как токмо PowerShell превратится из процедурного языка в какой-нибудь функциональный — так сразу и начну не пытаться писать.

Цитата megaloman:
ИМХО, не так категорично. »
Если для последующей обработки критичны дата/время файла, или же сам файл имеет объём, исчисляемый в сотнях мегабайт — то категорично. Лучше зараз привыкать.

Отправлено: 19:30, 15-05-2019 | #17


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата Iska:
или же сам файл имеет объём, исчисляемый в сотнях мегабайт — то категорично. »
а если гигабайт?
Цитата Iska:
Лучше зараз привыкать »
не надеяться на достаточный объём памяти, а работать построчно
тогда и вопрос перезаписи снимется

Цитата Iska:
Как токмо »
не кривяйтесь

Цитата Iska:
PowerShell превратится из процедурного языка в какой-нибудь функциональный »
аргументируйте: каким местом PowerShell нефункциональный? и почему он процедурный?
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:01, 15-05-2019 | #18


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Busla:
а если гигабайт? »
То ещё категоричнее .

Цитата Busla:
не надеяться на достаточный объём памяти, а работать построчно»
Это правильный подход.

Цитата Busla:
тогда и вопрос перезаписи снимется »
Вопрос останется. Зачем переписывать много…байтный файл, в котором ничего не изменилось?

Цитата Busla:
не кривяйтесь »
Видимо, «кривляйтесь». Приношу Вам свои извинения, считайте неудавшейся шуткой.

Цитата Busla:
аргументируйте: каким местом PowerShell нефункциональный? и почему он процедурный? »
Хорошо, выражусь иначе: я не вижу существенных отличий в парадигме программирования между WSH и PowerShell (за исключением конвеера). А уж что будет использоваться, If .Test(…) Then … End If или If([RegEx]::IsMatch(…)) {…} — не суть важное.

Отправлено: 21:51, 15-05-2019 | #19


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Iska:
не вижу существенных отличий в парадигме программирования между WSH и PowerShell (за исключением конвеера) »
я бы сказал, что powershell мультипарадигмальный язык, так как в нем явно присутствуют, как минимум, три - функциональная, процедурная и ООП

-------
scio me nihil scire. Ѫ


Отправлено: 22:37, 15-05-2019 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Необходимо найти все строки которые начинаются с "download:"https:" и заканчиваются

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Как из строки в .txt вывести символы "которые там обновляются"в другой .txt Bombastig Скриптовые языки администрирования Windows 6 08-02-2014 04:54
Интерфейс - [решено] Нет "стеклянного" эффекта при наведении на "Свернуть все окна" aka_smile Microsoft Windows 7 5 21-09-2012 11:49
Не получается найти все выпуски "Хакер"+"спец"+"железо" verdix Хочу все знать 5 29-11-2008 15:19
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход