1

Тема: DI.FM, SKY.FM и JAZZRADIO.COM Premium

Возможно нарушаю правила (хотя формально нет: https://hms.lostcut.net/help.php?section=rules :) )

Наши любимые радиостанции в премиум качестве. Наткнулся случайно.

Источник: https://vk.com/diforfree (см. блок "Ссылки" справа)

Плейлисты вроде обновляются автоматически.

2

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

Да что вы, спасибо. Полезная инфа не против правил.
Я даже сграбил картинки всех каналов в папку на сервер и теперь можно даже сделать так.

В разделе программы "Музыка" на папке "Подкасты" нажать правой клавишей мышки, выбрать "Добавить подкаст".
В поле заголовок вписываем название, которое будет у нас отображаться, а в поле "Ссылка" впишем путь до нашего плейлиста.
Значения могут быть такими:
http://diforfree.org/pls/di_hi.m3u
http://diforfree.org/pls/radiotunes_hi.m3u
http://diforfree.org/pls/jazzradio_hi.m3u
http://diforfree.org/pls/rockradio_hi.m3u

Нажав внизу вкладку "Скрипты", проставим:
- "Режим чтения списка ресурсов" в значение "Специальный (скрипт)";
- "Скрипт чтения списка ресурсов (Alt + 2)" в значение "Включен";
нажмём рядом кнопку, выберем язык скрипта "C++Script" и вставим следующий простой скрипт загрузки плейлистов из этой темы:

+ Скрипт загрузки плейлистов
int gnTotal=0;
// ----------------------------------------------------------------------------
void LoadPlaylist() {
  string sData, sLink, sName, sImg; THmsScriptMediaItem Item;

  // Если ссылка плейлиста начинается на http, то скачиваем, если нет - загружаем как локальный файл
  if (LeftCopy(mpFilePath, 4)=='http') sData = HmsDownloadUrl(mpFilePath, '', true);  // Загрузка плейлиста из интернета
  else                                 sData = HmsStringFromFile(mpFilePath);         // Загрузка плейлиста с локального диска
  
  sData = HmsUtf8Decode(sData);   // Декодируем из UTF-8 кодировки

  // Создаём объект для поиска по регулярному выражению (в C++Script символ \ экранирует, поэтому двойной)
  TRegExpr RE = TRegExpr.Create('#EXTINF:(.*?)[\\r\\n]+(.*?)([\\r\\n]|$)');
  try {
    if (RE.Search(sData)) do {    // Запускаем поиск и создаём цикл, пока найдены совпадения
      sName = Trim(RE.Match(1));  // Получаем значение первой группировки регулярного выражения (первая строка после #EXTINF:)
      sLink = Trim(RE.Match(2));  // Получаем значение второй группировки регулярного выражения (вся вторая строка)
      
      // В наименовании берём только ту часть, которая идёт после последней запятой
      HmsRegExMatch('.*,(.*)', sName, sName);

      // Пытаемся получить ссылку на картинку из служебного тега tvg-logo, если нету - то своё значение 
      if (!HmsRegExMatch('tvg-logo="(.*?)"', RE.Match, sImg)) sImg = 'http://wonky.lostcut.net/TVimg/'+HmsPercentEncode(sName, '"A-Z", "a-z", "0-9", "-", ".", "_", "~", "\'"')+'.png';

      // Создаём ссылку
      Item = HmsCreateMediaItem(sLink, FolderItem.ItemID);
      Item[mpiTitle    ] = sName; // Наименование
      Item[mpiThumbnail] = sImg;  // Картинка
      gnTotal++;                  // Увеличиваем счетчик созданных ссылок

    } while (RE.SearchAgain());   // Повторяем цикл, пока найдены следующие совпадения

  } finally { RE.Free(); }        // Освобождаем объект из памяти, что бы ни случилось  

  HmsLogMessage(1, mpTitle+': создано ссылок '+IntToStr(gnTotal));
}

///////////////////////////////////////////////////////////////////////////////
//                      Г Л А В Н А Я   П Р О Ц Е Д У Р А                    //
// ----------------------------------------------------------------------------
{
  FolderItem.DeleteChildItems(); // Удаляем созданные ранее ссылки
  LoadPlaylist();                // Вызов процедуры загрузки плейлиста и создания из него ссылок
}

и нажмём ОК.
И у нас будет подкаст для данного плейлиста.

Каналы там не все, не знаю как с загруженностью - вещают через свой сервер.

Вот примерчик прикрепил.

Прикреплённые файлы сообщения

Di.fm premium.zip 1.98 kb, скачивалось 601 раз, начиная с 2015.08.19

Sony Bravia KDL-32CX523

3 (2015.08.19 19:43:52 отредактировано d1mas)

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

Каналы не все, но судя по сообщениям по пинку добавляют :)

P.S. Спасибо за инструкцию и подкаст.

4

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

А ещё можно пользоваться подкастами от уважаемого WendyH, которые расположены здесь и здесь. Для премиума можно раз в неделю регистрироваться на сайте ДИ.ФМ использую временный емейл.

LG 27MT75S-PZQ
Samsung HT-F4500

5

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

Voland пишет:

А ещё можно пользоваться подкастами от уважаемого WendyH, которые расположены здесь и здесь. Для премиума можно раз в неделю регистрироваться на сайте ДИ.ФМ использую временный емейл.

Конечно можно, тем более, что подкасты гораздо удобней и информативней. Тут только премиум без лишних телодвижений с регистрацией :)

6 (2015.08.23 22:40:11 отредактировано d1mas)

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

WendyH пишет:

Да что вы, спасибо. Полезная инфа не против правил.
Я даже сграбил картинки всех каналов в папку на сервер и теперь можно даже сделать так.

В разделе программы "Музыка" на папке "Подкасты" нажать правой клавишей мышки, выбрать "Добавить подкаст".
В поле заголовок вписываем название, которое будет у нас отображаться, а в поле "Ссылка" впишем путь до нашего плейлиста.
Значения могут быть такими:
http://diforfree.org/pls/di_hi.m3u
http://diforfree.org/pls/radiotunes_hi.m3u
http://diforfree.org/pls/jazzradio_hi.m3u
http://diforfree.org/pls/rockradio_hi.m3u

Нажав внизу вкладку "Скрипты", проставим:
- "Режим чтения списка ресурсов" в значение "Специальный (скрипт)";
- "Скрипт чтения списка ресурсов (Alt + 2)" в значение "Включен";
нажмём рядом кнопку, выберем язык скрипта "C++Script" и вставим следующий простой скрипт загрузки плейлистов из этой темы:

+ Скрипт загрузки плейлистов
int gnTotal=0;
// ----------------------------------------------------------------------------
void LoadPlaylist() {
  string sData, sLink, sName, sImg; THmsScriptMediaItem Item;

  // Если ссылка плейлиста начинается на http, то скачиваем, если нет - загружаем как локальный файл
  if (LeftCopy(mpFilePath, 4)=='http') sData = HmsDownloadUrl(mpFilePath, '', true);  // Загрузка плейлиста из интернета
  else                                 sData = HmsStringFromFile(mpFilePath);         // Загрузка плейлиста с локального диска
  
  sData = HmsUtf8Decode(sData);   // Декодируем из UTF-8 кодировки

  // Создаём объект для поиска по регулярному выражению (в C++Script символ \ экранирует, поэтому двойной)
  TRegExpr RE = TRegExpr.Create('#EXTINF:(.*?)[\\r\\n]+(.*?)([\\r\\n]|$)');
  try {
    if (RE.Search(sData)) do {    // Запускаем поиск и создаём цикл, пока найдены совпадения
      sName = Trim(RE.Match(1));  // Получаем значение первой группировки регулярного выражения (первая строка после #EXTINF:)
      sLink = Trim(RE.Match(2));  // Получаем значение второй группировки регулярного выражения (вся вторая строка)
      
      // В наименовании берём только ту часть, которая идёт после последней запятой
      HmsRegExMatch('.*,(.*)', sName, sName);

      // Пытаемся получить ссылку на картинку из служебного тега tvg-logo, если нету - то своё значение 
      if (!HmsRegExMatch('tvg-logo="(.*?)"', RE.Match, sImg)) sImg = 'http://wonky.lostcut.net/TVimg/'+HmsPercentEncode(sName, '"A-Z", "a-z", "0-9", "-", ".", "_", "~", "\'"')+'.png';

      // Создаём ссылку
      Item = HmsCreateMediaItem(sLink, FolderItem.ItemID);
      Item[mpiTitle    ] = sName; // Наименование
      Item[mpiThumbnail] = sImg;  // Картинка
      gnTotal++;                  // Увеличиваем счетчик созданных ссылок

    } while (RE.SearchAgain());   // Повторяем цикл, пока найдены следующие совпадения

  } finally { RE.Free(); }        // Освобождаем объект из памяти, что бы ни случилось  

  HmsLogMessage(1, mpTitle+': создано ссылок '+IntToStr(gnTotal));
}

///////////////////////////////////////////////////////////////////////////////
//                      Г Л А В Н А Я   П Р О Ц Е Д У Р А                    //
// ----------------------------------------------------------------------------
{
  FolderItem.DeleteChildItems(); // Удаляем созданные ранее ссылки
  LoadPlaylist();                // Вызов процедуры загрузки плейлиста и создания из него ссылок
}

и нажмём ОК.
И у нас будет подкаст для данного плейлиста.

Каналы там не все, не знаю как с загруженностью - вещают через свой сервер.

Вот примерчик прикрепил.

Чей-то не работает "обновить подкаст". Говорит "ок" много-много раз. Успел и перекур устроить и душ принять (прошу прощения за подробности). А он все "ок" и "ок".
Это в скрипт рыть или как?

7

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

d1mas, и после этого в подкасте не появляются списки каналов? А на компе если обновить его, ничего не напишет внизу?
Это у выложенного мной подкаста или сделанного самостоятельно по инструкции?

Sony Bravia KDL-32CX523

8

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

WendyH пишет:

d1mas, и после этого в подкасте не появляются списки каналов? А на компе если обновить его, ничего не напишет внизу?
Это у выложенного мной подкаста или сделанного самостоятельно по инструкции?

Это из импортированного. На компе все чудесно. Через полсекунды в логах: "...создано ссылок: 76"
А, когда с телевизора запускаю обновление, он эти "ок" часами может говорить )
Т.е. при импорте все ссылки создались. И телевизор их видит и прекрасно воспроизводит, но на случай, если ребята добавят каналов в плейлист, с телека не судьба обновиться )

9

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

d1mas пишет:

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

Так это у вас в настройках телевизора включено повторение списка воспроизведения с начала, поэтому он пункт "Обновить подкасты" запускает снова и снова, вот и всё. Выйдя из этой папки на уровени вверх вы увидите список появившихся каналов. Например, запустив с телека обновление, посмотрите в программу на компе и тоже увидите появившуюся надпись о создании ссылок.

Sony Bravia KDL-32CX523

10

Re: DI.FM, SKY.FM и JAZZRADIO.COM Premium

WendyH пишет:
d1mas пишет:

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

Так это у вас в настройках телевизора включено повторение списка воспроизведения с начала, поэтому он пункт "Обновить подкасты" запускает снова и снова, вот и всё. Выйдя из этой папки на уровени вверх вы увидите список появившихся каналов. Например, запустив с телека обновление, посмотрите в программу на компе и тоже увидите появившуюся надпись о создании ссылок.

И правда. Спасибо за наводку :) Теперь все чудесно.