Описание формата 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, о том что его необходимо обновить.