Войти

Показать полную графическую версию : [решено] Добавить название серий в плейлист


Uragan66
17-12-2022, 20:15
Доброго времени суток всем! Ребята, нужна небольшая помощь. Сам давно с powershell не работал, подзабыл всё...
Есть плейлисты такого типа:
#EXTINF:0 group-title="Аниме",Академия ведьмочек
https://hls.kinoprofi.vip/hls/akademija-vedmochek_01/playlist.m3u8
https://bk2-hls.kinoprofi.vip/hls/akademija-vedmochek_02/playlist.m3u8
https://hls.kinoprofi.vip/hls/akademija-vedmochek_03/playlist.m3u8
https://bk2-hls.kinoprofi.vip/hls/akademija-vedmochek_04/playlist.m3u8
https://hls.kinoprofi.vip/hls/akademija-vedmochek_05/playlist.m3u8
https://hls.kinoprofi.vip/hls/akademija-vedmochek_06/playlist.m3u8
https://hls.kinoprofi.vip/hls/akademija-vedmochek_07/playlist.m3u8
#EXTINF:0 group-title="Аниме",Дитя погоды
https://hls.kinoprofi.vip/hls/Lic.Ditya.Pogodi.2019.BDRip.Deadmauvlad.1.46.GB/playlist.m3u8
#EXTINF:0 group-title="Аниме",Загадочная история Коноханы
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub1/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub2/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub3/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub4/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub5/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub6/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub7/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub8/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub9/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub10/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub11/playlist.m3u8
https://hls.kinoprofi.vip/hls/Istoriya_Konohany.AniDub12/playlist.m3u8
#EXTINF:0 group-title="Аниме",Вкусы молодости
https://hls.kinoprofi.vip/hls/Flavors.of.Youth.2018.HDRip/playlist.m3u8
#EXTINF:0 group-title="Аниме",Batman.Ninja
https://hls.kinoprofi.vip/hls/Batman.Ninja.2018.HDRip/playlist.m3u8
#EXTINF:0 group-title="Аниме",Игра короля
https://hls.kinoprofi.vip/hls/Ousama_Game_01_AniMedia.TV/playlist.m3u8
https://hls.kinoprofi.vip/hls/Ousama_Game_02_AniMedia.TV/playlist.m3u8
https://hls.kinoprofi.vip/hls/Ousama_Game_03_AniMedia.TV/playlist.m3u8
https://hls.kinoprofi.vip/hls/Ousama_Game_04_AniMedia.TV/playlist.m3u8
https://hls.kinoprofi.vip/hls/Ousama_Game_05_AniMedia.TV/playlist.m3u8
https://hls.kinoprofi.vip/hls/Ousama_Game_05_AniMedia.TV/playlist.m3u8
https://hls.kinoprofi.vip/hls/Ousama_Game_07_AniMedia.TV/playlist.m3u8
https://hls.kinoprofi.vip/hls/Ousama_Game_08_AniMedia.TV/playlist.m3u8
#EXTINF:0 group-title="Аниме",Проза бродячих псов. Фильм
https://hls.kinoprofi.vip/hls/ProZa.2O18.D.HDRip/playlist.m3u8

и т.д.
Пары строк, где название фильма >> ссылка, должны остаться исходные. А строки, где название фильма >> несколько ссылок на серии (ссылок может быть неопределённое количество), нужно преобразовать к такому виду, пример:

#EXTINF:0 group-title="Аниме",Игра короля - серия1
https://hls.kinoprofi.vip/hls/Ousama_Game_01_AniMedia.TV/playlist.m3u8
#EXTINF:0 group-title="Аниме",Игра короля - серия2
https://hls.kinoprofi.vip/hls/Ousama_Game_02_AniMedia.TV/playlist.m3u8
#EXTINF:0 group-title="Аниме",Игра короля - серия3
https://hls.kinoprofi.vip/hls/Ousama_Game_03_AniMedia.TV/playlist.m3u8

и т.д.

Можно это как-то сделать средствами powershell ?
Заранее благодарен за помощь и советы!

Foreigner
18-12-2022, 03:42
Как-то так, если правильно понял


$content = Get-Content file.txt

$pls = New-Object 'array[]' ($f = ($content | sls '^#').Count)
$cnt = 0

foreach ($line in $content)
{
if ($line -match '^#')
{
$c = $cnt
$pls[$c] = @()
$pls[$c] += $line
$cnt++
}

else
{
$pls[$c] += $line
}
}

for ($i = 0; $i -lt $f; $i++)
{
if ($pls[$i].Count -eq 2) { $pls[$i] }
else
{
$title = $pls[$i][0].Split('=')[1]
for ($j = 1; $j -lt $pls[$i].Count; $j++)
{
"`#EXTINF:0 group-title=$title - серия$j"
$pls[$i][$j]
}
}
}

YuS_2
18-12-2022, 14:11
Foreigner, одно немаловажное уточнение... если уж резать заголовочную строку, в целях получения title, то надо по запятой и лучше (ближе к стандарту) это делать примерно так:
# Допустимая строка (по стандарту):
$a = '#EXTINF:0 group-title="Аниме, Фэнтази" audio-track="rus, ukr, eng",Загадочная история Коноханы, Ведьма'
$flg,$qcnt = $true,0
$a -split {
param($s,$p)
if($flg){
if($_ -eq '"'){
$script:qcnt++
}
if($_ -eq ',' -and $script:qcnt%2 -eq 0){
$_ -eq ','
$script:flg=$false
}
}
}

PS А в данном, частном случае, строку можно вообще целиком выдергивать, с добавлением в конец информации о серии и резать её необходимости нет...

Foreigner
18-12-2022, 14:44
Я, честно говоря, не знаю стандартов, исходил из того, что дали. На счет того, что можно и не резать, я как-то не учел это.

YuS_2
18-12-2022, 15:12
честно говоря, не знаю стандартов »
Ну, это не проблема же, в голове все стандарты не поместятся, это точно :) ... но если будет интересно, вот ссылка (https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-19#section-4.3.2.1) с закладкой на определенный пункт, а сам документ достаточно объемный...

На счет того, что можно и не резать, я как-то не учел это. »
если бы в начало title надо было добавлять инфу, тогда только резать, а здесь просто в конец строки добавляем, потому и ...

Uragan66
18-12-2022, 21:50
Foreigner, спасибо большое!!! То что нужно!
Первый вариант тоже работал, но немного некорректно отрабатывало регулярное выражение:
.+\D(\d+)[/_].+
На некоторых ссылка были ложные срабатывания, другие, наоборот, пропускало... Какие будут ссылки невозможно предугадать...
Сейчас отлично!

Foreigner
18-12-2022, 21:56
Первый вариант тоже работал »

Я его сделал ночью, с тяжелой головой )) Поэтому с утра переписал.




© OSzone.net 2001-2012