PowerShell - [решено] Добавить название серий в плейлист

Ответить
Аватара пользователя
Uragan66

PowerShell - [решено] Добавить название серий в плейлист

Сообщение Uragan66 »

Доброго времени суток всем! Ребята, нужна небольшая помощь. Сам давно с 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

Re: PowerShell - [решено] Добавить название серий в плейлист

Сообщение Foreigner »

Как-то так, если правильно понял





Код:

Код: Выделить всё

$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

Re: PowerShell - [решено] Добавить название серий в плейлист

Сообщение YuS_2 »

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

Re: PowerShell - [решено] Добавить название серий в плейлист

Сообщение Foreigner »

Я, честно говоря, не знаю стандартов, исходил из того, что дали. На счет того, что можно и не резать, я как-то не учел это.
Аватара пользователя
Foreigner

Re: PowerShell - [решено] Добавить название серий в плейлист

Сообщение Foreigner »

Цитата Foreigner:



честно говоря, не знаю стандартов
PowerShell - [решено] Добавить название серий в плейлист




Ну, это не проблема же, в голове все стандарты не поместятся, это точно ... но если будет интересно, вот
ссылка
с закладкой на определенный пункт, а сам документ достаточно объемный...




Цитата Foreigner:



На счет того, что можно и не резать, я как-то не учел это.
PowerShell - [решено] Добавить название серий в плейлист




если бы в начало title
надо было добавлять инфу, тогда только резать, а здесь просто в конец строки добавляем, потому и ...
Аватара пользователя
Uragan66

Re: PowerShell - [решено] Добавить название серий в плейлист

Сообщение Uragan66 »

Foreigner, спасибо большое!!! То что нужно!

Первый вариант тоже работал, но немного некорректно отрабатывало регулярное выражение:



Код:

Код: Выделить всё

.+\D(\d+)[/_].+

На некоторых ссылка были ложные срабатывания, другие, наоборот, пропускало... Какие будут ссылки невозможно предугадать...

Сейчас отлично!
Аватара пользователя
Foreigner

Re: PowerShell - [решено] Добавить название серий в плейлист

Сообщение Foreigner »

Цитата Uragan66:



Первый вариант тоже работал
PowerShell - [решено] Добавить название серий в плейлист




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

Вернуться в «Скриптовые языки администрирования Windows»