Структура wizard-файлов для приложения LazyIPTV

Начиная с версии 2.17, в LazyIPTV поддерживается система Wizards - средство для импорта плейлистов и источников ТВ-программы. Открытость и простота формата обеспечивает конечным пользователям и провайдерам возможность организовывать обновляемые источники плейлистов и EPG.

Ниже будет описана структура wizard-файлов.

Будем считать, что wizard - это обычный xml-файл (в открытом или архивированном zip/gz виде), имеющий расширение *.liwizard. Важно отметить, что приложение LazyIPTV само определяет в каком формате wizard-файл - в открытом виде(текст xml), архивный в формате gz или архивный в формате zip. Для автоопределения в приложении важно чтобы расширение файла было *.liwizard.

Рассмотрим основные xml-теги, применяемые при описании wizard. Основная структура файла состоит 3 базовых секций:
  • <info> (информация о wizard), 
  • <playlists> (список плейлистов, каждый из которых "завернут" в тэг <playlist>
  • <epgs> (список источников EPG, каждый из которых "завернут" в тэг <epg>). 
Эти 3 секции "заворачиваются в корневой тег <wizard>.

Далее приведена общая структура wizard-файла:

<?xml version="1.0" encoding="utf-8"?>
<wizard>
    <info>
        <version> версия приложения в свободном формате </version> 
        <name> наименование wizard </name>
   
    <comment> информация-комментарий к wizard-файлу </comment>

    </info>

    <playlists>
         <playlist>
            <name> наименование плейлиста </name>
            <comment> комментарий к плейлисту </comment>
            <date> дата добавления в wizard в свободном формате </date>
            <url> ссылка на плейлист </url>
            <update_hours> целое число, время через которое обновлять плейлист </update_hours>
            <source> текст плейлиста в формате base64 </source>
            <radio> true если радиоплейлист </radio>
            <group> группы, разделенные запятой </group>
         </playlist>

         <playlist> ... </playlist> 
             ... ... ...
         <playlist> ... </playlist>

    </playlists>
 
    <epgs>
         <epg>
            <name> наименование источника EPG </name>
            <comment> комментарий </comment>
            <date> дата добавления в wizard в свободном формате </date>
            <url> ссылка на EPG в формате xmltv  </url>
            <group> группы, разделенные запятой </group> 
            <shift> число, смещение тв-программы в часах </shift>
         </epg>

         <epg> ... </epg
             ... ... ...
         <epg> ... <epg/>

    </epgs>

</wizard>

Секции <info> и <epg> прозрачны и надеюсь не требуют дополнительного описания.

А вот с тэгом <playlist> есть нюансы, поэтому сделаем более подробное описание :

<name> - наименование плейлиста в свободном формате;
<comment> - комментарий к плейлисту, старайтесь не писать слишком большие комментарии;
<date> - дата добавления плейлиста в wizard в свободном формате;
<radio> - признак радиоплейлиста, если хотите указать что плейлист содержит радиоканалы, укачите значение true. Тэг может быть опущен (в этом случае, по умолчанию - false);
<group> - наименования групп, разделенные запятой, по которым можно будет фильтровать wizard. Тэг может быть опущен;

Теги, определяющие сам контент плейлиста могут быть представлены 2мя способами:

1. если плейлист доступен по ссылке, необходимо указать:
<url> - ссылка на плейлист, для ссылок содержащих спец. символы &%? следует использовать стандартный для формата xml модификатор CDATA, например:
<url><![CDATA[http://iptv.gen12.net/bugtracker/file_download.php?file_id=807&type=bug]]></url>
<update_hours> - целое число, время в часах, через которое необходимо обновлять плейлист. Тэг может быть опущен (в этом случае, по умолчанию плейлист не обновляемый). Если указать значение 0, то плейлист в приложении будет обновляться при каждой загрузке;

2. если необходимо "зашить" статический плейлист в wizard (собственно текст m3u файла), то используется следующий тэг:
<source> - текст плейлиста в формате base64, для этого потребуется перекодировать содержимое плейлиста (текст из m3u-файла) в формат base64, используя любой онлайновый сервис вроде такого: http://base64.ru/
В итоге, должно получиться нечто вроде:<source>I0VYVE0zVQojRVhUSU5GOi0...xLFN0a</source>

Количество тэгов <playlist> и <epg> не ограничено.
Итоговый файл может распространяться  как в исходном виде, так и быть заархивирован в формате GZ,GZIP или ZIP. Для того чтобы приложение LazyIPTV увидело wizard-файл, его расширение должно быть .liwizard (независимо от применения архивации).

Перед созданием своего wizard-файлм рекомендует изучить базовый wizard от LazyCat Software: https://sites.google.com/site/lazyiptv/downloads/lazyiptv.liwizard

И последнее. Если вы распространяете свой wizard по ссылке, то достаточно просто обновить файл, а приложение LazyIPTV автоматически проверит ссылку на предмет изменения, дергая не весь файл, а только дату модификации через head-запрос (траффик минимальный) и уведомит конечных пользователей, использующих ваш wizard, о том что его необходимо обновить.