Wizards
November 8, 2022

Описание формата Wizard

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

Важно отметить, что приложение не содержит встроенных визардов и не несет ответственности за возможные правовые коллизии при использовании добавляемых пользователем внешних визардов.

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

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

Рассмотрим основные 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>
            <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>
        </epg>

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

    </epgs>

</wizard>

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

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

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

Тег, определяющий контент плейлиста может быть представлены следующим тегом <url> - ссылка на плейлист.

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

Количество тэгов <playlist> и <epg> не ограничено.

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

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