Тема: Создание m3u-плейлиста из подкаста
Обработка, которую можно запускать по расписанию для создания плейлиста m3u (например, если в ссылках на вещание есть временные токены).
Файл плейлиста будет сохранён туда, где указано в данной обработке.
Чтобы изменить значения пути, куда сохранять, нужно открыть код обработки и поменять первые три верхних значения:
string gsPlaylistName = "DomRu"; // Название плейлиста
string gsPlaylistFile = "D:\\domru.m3u"; // Путь и имя файла m3u-плейлиста, который будет создан
string gsPodcastPath = "https://movix.ru"; // Значение поля "Ссылка" подкаста, из которого будет создан плейлист
Данная обработка сделана для подкаста movix.ru (ДомРу Телевидение), но может быть настроена для любого подобного подкаста.
Что эта обработка делает?
- Находит подкаст, у которого значение "Ссылка" совпадает с указанной в обработке (в примере это
https://movix.ru
). - Обходит все папки в подкасте и получает значение MediaResourceLink (реальное значение ссылки на поток, получаемый скриптом, а не значением ссылки) для каждого видео, имя папки используется как имя группы;
- Добавляет все найденные ссылки в содержимое плейлиста;
- Сохраняет содержимое плейлиста в файл, указанный в коде обработки (переменная gsPlaylistFile).
string gsPlaylistName = "DomRu"; // Название плейлиста
string gsPlaylistFile = "D:\\domru.m3u"; // Путь и имя файла m3u-плейлиста, который будет создан
string gsPodcastPath = "https://movix.ru"; // Значение поля "Ссылка" подкаста, по которому будет создан плейлист
string gsContent = "";
///////////////////////////////////////////////////////////////////////////////
// Добавление ссылок из указанной папки в содержимое плейлиста
void AddLinksFromFolder(THmsScriptMediaItem Folder, string sGrp="") {
for (int i=0; i < Folder.ChildCount; i++) {
THmsScriptMediaItem Item = Folder.ChildItems[i];
if (Item.IsFolder) {
AddLinksFromFolder(Item, Item[mpiTitle]);
} else {
gsContent += Format('#EXTINF:-1 logo=%s group-title="%s" ,%s\r\n', [Item[mpiThumbnail], sGrp, Item[mpiTitle]]);
gsContent += Item[mpiMediaResourceSource]+'\r\n';
}
}
}
///////////////////////////////////////////////////////////////////////////////
// Г Л А В Н А Я П Р О Ц Е Д У Р А //
{
THmsScriptMediaItem Podcast = HmsFindMediaFolder(mfVideoPodcastsFolderItemID, gsPodcastPath);
if (Podcast != nil) {
HmsLogMessage(1, 'Начало обнолвения плейлиста '+gsPlaylistFile+' ...');
gsContent = '#EXTM3U\r\n';
gsContent += '#PLAYLIST: '+gsPlaylistName+' '+DateTimeToStr(Now)+'\r\n';
AddLinksFromFolder(Podcast);
HmsStringToFile(gsContent, gsPlaylistFile);
HmsLogMessage(1, 'Плейлист '+gsPlaylistFile+' обновлён.');
} else {
HmsLogMessage(2, 'Подкаст со ссылкой "'+gsPodcastPath+'" не найден!');
}
}
Расписание запуска обработки настраивается здесь: