Jump to content
Cesbo Community
  • Announcements

    • RadioSintetica

      Information   10/21/18

      Registration on the forum temporarily closed! For support requests, please contacat us: https://cesbo.com/help
      Our community in Telegram: @cesbo_en (English language) , @cesbo_ru (Russian language) , @cesbo_es (Spanish Language)
fyrer

Модуль к астре для сборки EPG / XMLTV

Recommended Posts

1) This are normal because of xml escaping:

' - ' 

" - "

< - <

> - >

& - &

2) I have added a new fragment for output url. It is called channel_id which renamed the channel attribute. [in most recent version of the patch. Also I add channel an element]

Share this post


Link to post
Share on other sites

Можно как то привести вывод в такой вид?

 

<channel id="2">
<display-name lang="ru">Ch1</display-name>
</channel>
<programme channel="2" start="20150518032500 +0000" stop="20150518040000 +0000">
        <title lang="he">מותחים שרירים  כת''סמ'' </title>
        <sub-title lang="he"></sub-title>
        <desc lang="he">:   ; מותחים שרירים  כת''סמ'' רגע לפני שתכנית הבוקר מתחילה, נפתח את הבוקר עם כותרות העיתונים.
</desc>
</programme>

Share this post


Link to post
Share on other sites

Похоже, параметр name= игнорируется:

 

В конфиге:

"epg://ec#pid=18&name=de_209"

"epg://ec#pid=18&name=test_ch"

"epg://ec#pid=18&name=one"

 

В json на сервере:

    [name] => Das Erste HD #2
    [name] => SWR BW HD #2
    [name] => arte HD #2

Share this post


Link to post
Share on other sites

Может кто подскажет, как выбрать чтоб в выходной файл записывалось только епг по нужному языку ?

Например у меня в епг 3 языка. Как сделать чтоб записывался только один (например на русском) ?

 

<programme channel="ch #2" start="20150523180000 +0000" stop="20150523200000 +0000">
    <title lang="he">(ע) המלאך שבלב</title>
    <title lang="en">Angel heart</title>
    <title lang="ru">Ангел в сердце</title>
    <sub-title lang="he">סדרת דרמה. על מנת לעזור לאביה, קסניה נאלצת להיפרד מבחיר ליבה ולהתחתן עם אחר... (רוסיה, 2013)</sub-title>
    <sub-title lang="en">The commercial channel in Russian broadcasts entertainment programs, news, series, and films in Russian with Hebrew subtitles, as well as programs in Hebrew with Russian dubbing or subtitles.</sub-title>
    <sub-title lang="ru">Ксения и Петр любят друг друга и хотят быть вместе всю жизнь. Но перед девушкой встает непростой выбор... В ролях: Дмитрий Певцов, Даниил Певцов, А.Михайловская. Реж. Е. Николаева. 2013</sub-title>
</programme>

 

 

П.С. для Dimonil:  Дим, ты разобрался с буквами некоторыми которые не на своих местах стоят (говорим про иврит) ? и скобки так же изменяют расположение букв/слов на не свои места. И с этой фигнёй "''סמ'&apos" и с " #2" ?

Share this post


Link to post
Share on other sites
Подключио epg модуль к astra 4.3.118

Все рабоает то на транспондере tp = "12640:V:30000", вот такая беда

 

Jun 05 17:58:47: ERROR: [dvb_input 0:0] dvr read error, try to reopen [Value too large for defined data type]

 

После этого все каналы на нем отваливают и потом поднимаются, что есс-но критично (

 




pidfile("/var/run/a0_tk_12640.pid")
log.set({ debug = true, stdout = true,filename="/var/log/a0_tk_12640.log"})
event_request = { host = "172.16.15.77", port = 80, path = "/astra_stats/save_stat_epg.php", method = "POST" }
require ("test")
cam_0 = newcamd({
name = "TK",
host = "172.16.15.38", port = 34004,
user = "tel1", pass = "tel1",
key = "0102030405060708091011121314"
})
adapter_0 = dvb_tune({
type = "S",
adapter = 0,
tp = "12640:V:30000",
lnb = "9750:10600:10750",
fec = "5/6"
})


make_channel({
name   =  "005----5 Канал",
input  = {"dvb://adapter_0#pnr=107&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.11:1234&socket_size=1048576",
   "epg://epgcoll#pid=18&name=5 Канал"}
})
make_channel({
name   =  "024----------Nano TV",
input  = {"dvb://adapter_0#pnr=112&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.162:1234",
   "epg://epgcoll#pid=18&name=Nano TV"}
})
make_channel({
name   =  "705----------RU.TV",
input  = {"dvb://adapter_0#pnr=113&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.36:1234",
   "epg://epgcoll#pid=18&name=RU.TV"}
})
make_channel({
name   =  "008---Карусель",
input  = {"dvb://adapter_0#pnr=115&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.72:1234&socket_size=1048576",
   "epg://epgcoll#pid=18&name=РБК-ТВ"}
})
make_channel({
name   =  "341---Мужской",
input  = {"dvb://adapter_0#pnr=116&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.130:1234",
   "epg://epgcoll#pid=18&name=Мужской"}
})
make_channel({
name   =  "004---НТВ",
input  = {"dvb://adapter_0#pnr=108&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.21:1234",
   "epg://epgcoll#pid=18&name=НТВ"}
})
make_channel({
name   =  "001---Первый канал",
input  = {"dvb://adapter_0#pnr=101&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.1:1234",
   "epg://epgcoll#pid=18&name=Первый канал"}
})
make_channel({
name   =  "025---РЕН ТВ",
input  = {"dvb://adapter_0#pnr=117&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.47:1234",
   "epg://epgcoll#pid=18&name=РЕН ТВ"}
})
make_channel({
name   =  "002---Россия 1",
input  = {"dvb://adapter_0#pnr=102&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.2:1234",
   "epg://epgcoll#pid=18&name=Россия 1"}
})
make_channel({
name   =  "003---Россия 2",
input  = {"dvb://adapter_0#pnr=106&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.10:1234",
   "epg://epgcoll#pid=18&name=Россия 2"}
})
make_channel({
name   =  "007---Россия-24",
input  = {"dvb://adapter_0#pnr=105&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.16:1234",
   "epg://epgcoll#pid=18&name=Россия-24"}
})
make_channel({
name   =  "006---Россия-Культура",
input  = {"dvb://adapter_0#pnr=103&cam=cam_0"},
output = {"udp://10.28.0.42@224.8.0.3:1234",
   "epg://epgcoll#pid=18&name=Россия-Культура"}
})


Share this post


Link to post
Share on other sites

Новая версия совместимая с последней астрой из git 
https://www.dropbox.com/s/iscfgh9c4jm2whh/astra_epg_29072015.tar.gz?dl=0

 

Параметр name нужно заменить на title, все остальное по прежнему.

Об ошибках и предложениях пишите сюда.
П.С. как отладим, можно будит включить в основной код, уже договорился 

Share this post


Link to post
Share on other sites

Добрый вечер!

Собрал сегодня астру 4.4.187 с поддержкой епг. Попробовал на одном канале сграбить епг и ничего не получилось, создается файл test.xml но пустой. Вот такого вида

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">
<tv generator-info-name="astra-epg-gen">
</tv>

 

Епг в потоке есть, dvbsnoop его видит на 18 пиде

вот конфиг:

 

#!/opt/astra4_t/astra
package.path = "/etc/astra/?.lua"


-- local _inspect = require("inspect")
-- print_r = function(v, d)
--   print(_inspect(v,20))
-- end

require("epg")
 

local _save_file = function(path, data)
      local fd = assert(io.open(path, "w"));
      fd:write(data);
      fd:close();
end


local _send_http = function(addr, data)
  local req = {
     port    = addr.port,
     host    = addr.host,
     path    = addr.path,
     method  = "POST",
     headers =  {
            "User-Agent: Astra",
            "Content-Type: text/plain",
            "Host: " .. addr.host .. ":" .. addr.port,
            "Connection: close",
            "Content-Length: " .. string.len(data)
     },
     content  = data,
     callback = function(self, resp) return end
  }
  http_request(req)
  return
end

epgcoll   = epg_collector({
     name     = "epgcoll1",

     format   = "xmltv", --[[ =xmltv / =json / =table ]]

     sleep_tm = 120,
     callback = function(data)
      _save_file("test.xml", data)

--         print(data)
 

        --[[
        _send_http({
            host = "192.168.0.55",
            port = 80,
            path = "/"
        }, data);
        ]]
     end
})

adapter_0 = dvb_tune({
        type = "T2",
        adapter = 0,
        frequency = 546,
        bandwidth = "8mhz"
})


make_channel({
        name = "Perviy kanal",
        input = {
                "dvb://adapter_0#no_sdt&no_eit&pnr=1",
                "udp://239.0.0.254:1234"
        },
        output = {
                "udp://239.0.0.1:1234",
                "epg://epgcoll#pid=18&title=name"
        }
})

 

В чем могут быть грабли?
 

Share this post


Link to post
Share on other sites

XMLTV standart says, that the file must contain 2 types of records:

  • 'channel' records, store information about channels
  • 'program' records, store information about individual episodes

 

The plugin creates 'program' records only. There must be for every channel another one record with minimum:

<channel id="disney_channel">
    <display-name>Disney Channel</display-name>
</channel>

So, i edit epg.lua to insert records before every channel data, but cant find where(or how) to get channel name for <display-name> tag.

self.dump_xmltv = function()
        local epg = self.dump_epg()
        local result = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"..
                       "<!DOCTYPE tv SYSTEM \"xmltv.dtd\">\n"..
                       "<tv generator-info-name=\"astra-epg-gen\">\n";
                
        for _,_c in pairs(epg) do
		 result = result .. "<channel id=\"".._c.name.."\">\n\t<display-name lang=\"\"></display-name>\n</channel>\n"
		 for _,_e in pairs(_c.items) do
              result = result.."<programme channel=\"".._c.name..
                                      "\" start=\""..utToXmltvTM(_e.start)..
                                      "\" stop=\""..utToXmltvTM(_e.stop).."\">\n";      
              for _l,_t in pairs(_e.title) do
                  result = result .. "\t<title lang=\"".._l.."\">"..xml_escape_str(_t).."</title>\n"
              end
              for _l,_t in pairs(_e.subtitle) do
                  result = result .. "\t<sub-title lang=\"".._l.."\">"..xml_escape_str(_t).."</sub-title>\n"
              end
              for _l,_t in pairs(_e.desc) do
                  result = result .. "\t<desc lang=\"".._l.."\">"..xml_escape_str(_t).."</desc>\n"
              end    
              result = result .. "</programme>\n";
          end    
        end

        result = result.."</tv>";
        return result;
    end--self.dump_xmltv

Any help ? My LUA skills are not so good :)

 

Thank you.

Share this post


Link to post
Share on other sites

Anyway, i made it.

 

Another one thing: On every channel the plugin grabs events only for 3 days, but i can see in vlc guide for 7 days from now. How can i extend guide time to 7 days ? Can`t find in code such a restriction...

 

P.S. I can read russian. Cant write well. :)

Share this post


Link to post
Share on other sites

Новая версия совместимая с последней астрой из git 

https://www.dropbox.com/s/iscfgh9c4jm2whh/astra_epg_29072015.tar.gz?dl=0

 

Параметр name нужно заменить на title, все остальное по прежнему.

Об ошибках и предложениях пишите сюда.

П.С. как отладим, можно будит включить в основной код, уже договорился 

 

Ради интереса сграбил программу с 85 градуса, в потоке передается epg только на 4 дня, это как то настраивается или это ограничение вещателя ?

Share this post


Link to post
Share on other sites

И еще момент, как только прилетает программа, все каналы на трансе отваливаются, в логе ошибки:

 

 

Nov 18 18:52:41: ERROR: [udp_output 224.0.0.179:1234] next PCR is not found
Nov 18 18:52:41: INFO: [udp_output 224.0.0.179:1234] buffering...
Nov 18 18:52:41: ERROR: [udp_output 224.0.0.181:1234] next PCR is not found
Nov 18 18:52:41: INFO: [udp_output 224.0.0.181:1234] buffering...
Nov 18 18:52:42: ERROR: [udp_output 224.0.0.187:1234] next PCR is not found
Nov 18 18:52:42: INFO: [udp_output 224.0.0.187:1234] buffering...
Nov 18 18:52:43: ERROR: [udp_output 224.0.0.183:1234] next PCR is not found
Nov 18 18:52:43: INFO: [udp_output 224.0.0.183:1234] buffering...
Nov 18 18:52:43: ERROR: [udp_output 224.0.0.182:1234] next PCR is not found
Nov 18 18:52:43: INFO: [udp_output 224.0.0.182:1234] buffering...
Nov 18 18:52:44: ERROR: [dvb_input 6:0] dvr read error, try to reopen [Value too large for defined data type]

Пробовал запись в файл на диск, запись на рамдиск и отправку по http. По прилету программы все повторяется. Кто-то копал эту проблему ?

Share this post


Link to post
Share on other sites

Пробовал запись в файл на диск, запись на рамдиск и отправку по http. По прилету программы все повторяется. Кто-то копал эту проблему ?

программа на 4 дня - это от оператора зависит. на приёме никаких огоаничений, всё что пришло, пишется в файл.

 

про затык при приёме epg - если есть возможность, попробуйте пожалуста 5.61, там тоже есть epg-export. В make_channel надо прописать epg_export = "file:///tmp/test.epg"

Share this post


Link to post
Share on other sites

программа на 4 дня - это от оператора зависит. на приёме никаких огоаничений, всё что пришло, пишется в файл.

 

про затык при приёме epg - если есть возможность, попробуйте пожалуста 5.61, там тоже есть epg-export. В make_channel надо прописать epg_export = "file:///tmp/test.epg"

 

Проверил, записать весь транс в один файл не получилось, пишется какой то 1 канал рандомно из списка. В разные файлы записалась программа по всем каналам без потери потоков на выходе и каких либо ошибок...

Share this post


Link to post
Share on other sites

Проверил, записать весь транс в один файл не получилось, пишется какой то 1 канал рандомно из списка. В разные файлы записалась программа по всем каналам без потери потоков на выходе и каких либо ошибок...

там только один канал в один файл можно. сегодня завтра выложу скипт для агрегации epg. по http будет получать и сохранять всё в один файл. (можно будет собирать с разных серверов/процессов)

Share this post


Link to post
Share on other sites

 Есть проблемы с ЕПГ в некоторые каналы и Астра 5.61. Например:

 

<programme channel="Hobby TV" start="20151122080000 +0000" stop="20151122090000 +0000">
    <title lang="bg">През планини и морета: Южно от остров Крит - 4 част</title>
    <sub-title lang="bg">↓w:iÐ♪ .⅜™.®.™. - ⅝⅜♪¦., .⅝.Ð⅝ ⅞Ω♪™ÆЗ®.ʼn®—Ð ⅞⅝Ω⅝™—З Æ. . Æ♪ ™⅝¹..¬—®—Ð ⅜—.-⅛⅜⅝©⅝ ™⅝ ÆЗ⅜™—ΩÐ.Ð♪.ŋ¥Ω0</sub-title>
</programme>

 

В конфиг попробвал и 8859-5 и пусто тоже. Нет успехи. Конфиг так:

 

epg_export_format = { "xmltv", "iso8859-5" }

Share this post


Link to post
Share on other sites

там только один канал в один файл можно. сегодня завтра выложу скипт для агрегации epg. по http будет получать и сохранять всё в один файл. (можно будет собирать с разных серверов/процессов)

 

Как продвигаются успехи со скриптом? Как раз актуально.

Share this post


Link to post
Share on other sites

Как продвигаются успехи со скриптом? Как раз актуально.

Выложил новую версию для тестов: http://dev.cesbo.com/download/astra/5.62-rc8/и скрипт для неё http://pastebin.com/bVxQv5We

 

в скрипте можно исправить:

epg_file - куда сохранять файл

epg_server_port - порт на котором принимать EPG

epg_expire - наверно лучше сделать 24 часа (24 * 60 * 60), это для удаления старых каналов из XML если по ним нет обновления EPG

 

скрипт надо сохранить в /etc/astra/epg.lua и запустить: astra /etc/astra/epg.lua --daemon (daemon - это чтобы в фоне работала).

в настройках астры принимающей каналы, в EPG Export надо прописать формат JSON и адрес для экспорта http://адрес-сервера-где-запущен-скрипт:5000/

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×