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

У кого-то есть рабочий пример конфига, для отправки файла на сервер методом POST, что-то не хочет идти?

require("epg")

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   = "json", --[[ =xmltv / =json / =table ]]
     sleep_tm = 120, 
     callback = function(data)
        _send_http({
            host = "server.domain.net",
            port = 8088,
            path = "/epg.php"
        }, data);
     end
})

make_channel( ... output = { "udp://239.0.0.0:1234", "epg://epgcoll#pid=18&name=1908" } })

Share this post


Link to post
Share on other sites

И еще один недостаток, или же провайдер не то отправляет, пытаюсь спасрсить программу наших местных каналов, в ответ получаю։
 

<title lang="hy">unknown charset: 0x15472F662E</title>

В чем может быть проблема?

Share this post


Link to post
Share on other sites

Что-то у меня толи лыжи не едут, толи я ....
 
Скомпилил астру 4.3.118 с патчем epg, запускаю, а в ответ
 

 

root@server:/etc/astra# epg /etc/astra/epg.lua
PANIC: unprotected error in call to Lua API ([main] error loading module 'epg' from file './epg.lua':
        ./epg.lua:13: too many C levels (limit is 200) in function at line 4 near 'addr')

Аварийный останов

Блин, что я не то делаю то?
 
Вот мои конфиги

 

require("epg")


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   = "json", --[[ =xmltv / =json / =table ]]
     sleep_tm = 120,
     callback = function(data)
        _send_http({
            host = "localhost",
            port = 8088,
            path = "/epg.php"
        }, data);
     end
})


make_channel({name = "ch1",     input = {"http://127.0.0.1:1212/ch2#pnr=10"}, output = { "udp://239.0.0.0:1234", "epg://epgcoll#pid=18&name=1908" } })

Share this post


Link to post
Share on other sites

Я отдельно собрал старую астру с епг, и скриптик который ночью пробегается этой астрой по мультикастам и складывает на сервер.

Share this post


Link to post
Share on other sites

Sorry for not texting in Russian but I cant.

 

I think I have succed in patching the epg module for Astra 4.4.183. I uploaded the patched files:

 

https://www.dropbox.com/s/xvg6f55eu03amsb/astra_epg.zip?dl=0

 

I tested with the following configuration file:

package.path = "/root/astra/scripts/?.lua"
require("epg")


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

epgcoll   = epg_collector({
     name     = "epgcoll1",
     format   = "xmltv",
     sleep_tm = 120, 
     callback = function(data)
        _save_file("test.xml", data) 
     end
})


reader_0 = newcamd({
    name = "Eurosport HD",
    host = "127.0.0.1",
    port = 1123,
    user = "cifrowy_polsat_007101",
    pass = "1234",
    key  = "0102030405060708091011121314",
})

make_channel({
    name = "Eurosport 2 HD",
    input = {
        "udp://238.225.231.27:5006#pnr=15203&cam=reader_0"
    },
    output = {
        "udp://239.156.1.245:5006",
        "epg://epgcoll#pid=18&name=Eurosport2 HD"
    }
})

Share this post


Link to post
Share on other sites

Выдаёт ошибку при компиляции.

 

 

 

CC: modules/epg/epggrab.o
In file included from modules/epg/epggrab.c:35:0:
modules/epg/eit.h:57:0: warning: "EIT_ITEM_DURATION_SEC" redefined [enabled by default]
#define EIT_ITEM_DURATION_SEC(_pointer) \
^
In file included from ./astra.h:30:0,
                 from modules/epg/epggrab.c:34:
./modules/mpegts/mpegts.h:636:0: note: this is the location of the previous definition
#define EIT_ITEM_DURATION_SEC(_pointer)                                                         \
^
In file included from modules/epg/epggrab.c:35:0:
modules/epg/eit.h:62:0: warning: "EIT_ITEM_START_UT" redefined [enabled by default]
#define EIT_ITEM_START_UT(_pointer) \
^
In file included from ./astra.h:30:0,
                 from modules/epg/epggrab.c:34:
./modules/mpegts/mpegts.h:641:0: note: this is the location of the previous definition
#define EIT_ITEM_START_UT(_pointer)                                                             \
^
modules/epg/epggrab.c: In function ‘on_ts’:
modules/epg/epggrab.c:411:6: warning: implicit declaration of function ‘TS_PID’ [-Wimplicit-function-declaration]
      if(TS_PID(ts) == mod->pid) {
      ^
   CC: modules/file/input.o
   CC: modules/file/output.o
   CC: modules/http/parser.o
   CC: modules/http/utils.o
   CC: modules/http/server.o
   CC: modules/http/request.o
   CC: modules/http/modules/redirect.o
   CC: modules/http/modules/static.o
   CC: modules/http/modules/websocket.o
   CC: modules/http/modules/upstream.o
   CC: modules/http/modules/downstream.o
   CC: modules/inscript/inscript.o
   CC: modules/mpegts/src/pcr.o
   CC: modules/mpegts/src/psi.o
   CC: modules/mpegts/src/pes.o
   CC: modules/mpegts/src/types.o
   CC: modules/mpegts/analyze.o
   CC: modules/mpegts/channel.o
   CC: modules/mpegts/transmit.o
   CC: modules/softcam/FFdecsa/FFdecsa.o
   CC: modules/softcam/cam/cam.o
   CC: modules/softcam/cam/newcamd.o
   CC: modules/softcam/cas/bulcrypt.o
   CC: modules/softcam/cas/conax.o
   CC: modules/softcam/cas/cryptoworks.o
   CC: modules/softcam/cas/dgcrypt.o
   CC: modules/softcam/cas/dre.o
   CC: modules/softcam/cas/exset.o
   CC: modules/softcam/cas/griffin.o
   CC: modules/softcam/cas/irdeto.o
   CC: modules/softcam/cas/mediaguard.o
   CC: modules/softcam/cas/nagra.o
   CC: modules/softcam/cas/viaccess.o
   CC: modules/softcam/cas/videoguard.o
   CC: modules/softcam/decrypt.o
   CC: modules/udp/input.o
   CC: modules/udp/output.o
BUILD: astra
modules/epg/epggrab.o: In function `on_ts':
epggrab.c:(.text+0x582): undefined reference to `TS_PID'
collect2: error: ld returned 1 exit status
make: *** [astra] Error 1

 

Share this post


Link to post
Share on other sites

Я профиксил и собрал, но у меня всё равно выдаёт ошибку. Вот конфиг.

 

 

#!/usr/bin/env epg
require("epg")


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

epgcoll = epg_collector({
name = "epgcoll1",
format = "xmltv",
sleep_tm = 120,
callback = function(data)
_save_file("test.xml", data)
end
})


make_channel({name = "ch1", input = {"http://0.0.0.0:1212/ch2#pnr=10"},output = { "udp://239.0.0.0:1234" } })
--epg://epgcoll#pid=18&name=ch1

 

 

А вот собственно ошибка

 

 

./epg.lua
PANIC: unprotected error in call to Lua API ([main] error loading module 'epg' from file './epg.lua':
./epg.lua:6: too many C levels (limit is 200) in function at line 5 near 'path')
Аварийный останов

 

Share this post


Link to post
Share on other sites

Ну вроде запустил.

 

 

May 12 18:49:15: INFO: Starting Astra 4.4.183
May 12 18:49:15: INFO: [ch1 #1] PAT: tsid: 1
May 12 18:49:15: INFO: [ch1 #1] PAT: pid: 256 PMT pnr: 10
May 12 18:49:15: INFO: [ch1 #1] PAT: crc32: 0x7AFB1FEE
May 12 18:49:15: INFO: [ch1 #1] PMT: pnr: 10
May 12 18:49:15: INFO: [ch1 #1] PMT: pid: 257 PCR
May 12 18:49:15: INFO: [ch1 #1] VIDEO: pid: 257 type: 0x02
May 12 18:49:15: INFO: [ch1 #1] VIDEO: descriptor: 0x020308005F
May 12 18:49:15: INFO: [ch1 #1] AUDIO: pid: 258 type: 0x03
May 12 18:49:15: INFO: [ch1 #1] AUDIO: descriptor: 0x030127
May 12 18:49:15: INFO: [ch1 #1] AUDIO: pid: 259 type: 0x03
May 12 18:49:15: INFO: [ch1 #1] AUDIO: descriptor: 0x030127
May 12 18:49:15: INFO: [ch1 #1] SUB: pid: 1029 type: 0x06
May 12 18:49:15: INFO: [ch1 #1] SUB: descriptor: 0x59086865621100020002
May 12 18:49:15: INFO: [ch1 #1] SUB: pid: 1031 type: 0x06
May 12 18:49:15: INFO: [ch1 #1] SUB: descriptor: 0x59087275731100020002
May 12 18:49:15: INFO: [ch1 #1] SUB: pid: 1032 type: 0x06
May 12 18:49:15: INFO: [ch1 #1] SUB: descriptor: 0x59086172611100020002
May 12 18:49:15: INFO: [ch1 #1] PMT: crc32: 0xBDE336CD
May 12 18:49:15: INFO: [ch1 #1] SDT: tsid: 1
May 12 18:49:15: INFO: [ch1 #1] SDT: sid: 10
May 12 18:49:15: INFO: [ch1 #1] SDT: Service: unknown charset: 0x0443682032
May 12 18:49:15: INFO: [ch1 #1] SDT: Provider: unknown charset: 0x04326E64205456202620526164696F20417574686F72697479
May 12 18:49:15: INFO: [ch1 #1] SDT: crc32: 0x3C7488DF
May 12 18:49:16: INFO: [ch1 #1] Bitrate:3336Kbit/s
May 12 18:49:16: INFO: [ch1] Active input #1

 

 

Как узнать что именно тут epg?

Share this post


Link to post
Share on other sites

Всё запустил. Помогите с кодировкой иврита. Читал топики выше, у человека была аналогичная проблема с немецким языком. Можно как то пропатчить под иврит?

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">
<tv generator-info-name="astra-epg-gen">
<programme channel="ch1 #2" start="20150512000000 +0000" stop="20150512003500 +0000">
        <title lang="he">unknown charset: 0x04EEE420F9F7E5F8E420E1E0E9ECFA2CF4F8F720392020EBFA2720F2E12720</title>
        <sub-title lang="he">unknown charset: 0x04F4F8F720EEF127272039</sub-title>
        <desc lang="he">unknown charset: 0x04EEF4E9F7: unknown charset: 0x04E1E9F420; unknown charset: 0x04EEE420F9F7E5F8E420E1E0E9ECFA2CF4F8F720392020EBFA2720F2E12720$
</programme>

 

 

Share this post


Link to post
Share on other sites

Выдаёт ошибку при компиляции.

 

 

 

CC: modules/epg/epggrab.o
In file included from modules/epg/epggrab.c:35:0:
modules/epg/eit.h:57:0: warning: "EIT_ITEM_DURATION_SEC" redefined [enabled by default]
#define EIT_ITEM_DURATION_SEC(_pointer) \
^
In file included from ./astra.h:30:0,
                 from modules/epg/epggrab.c:34:
./modules/mpegts/mpegts.h:636:0: note: this is the location of the previous definition
#define EIT_ITEM_DURATION_SEC(_pointer)                                                         \
^
In file included from modules/epg/epggrab.c:35:0:
modules/epg/eit.h:62:0: warning: "EIT_ITEM_START_UT" redefined [enabled by default]
#define EIT_ITEM_START_UT(_pointer) \
^
In file included from ./astra.h:30:0,
                 from modules/epg/epggrab.c:34:
./modules/mpegts/mpegts.h:641:0: note: this is the location of the previous definition
#define EIT_ITEM_START_UT(_pointer)                                                             \
^
modules/epg/epggrab.c: In function ‘on_ts’:
modules/epg/epggrab.c:411:6: warning: implicit declaration of function ‘TS_PID’ [-Wimplicit-function-declaration]
      if(TS_PID(ts) == mod->pid) {
      ^
   CC: modules/file/input.o
   CC: modules/file/output.o
   CC: modules/http/parser.o
   CC: modules/http/utils.o
   CC: modules/http/server.o
   CC: modules/http/request.o
   CC: modules/http/modules/redirect.o
   CC: modules/http/modules/static.o
   CC: modules/http/modules/websocket.o
   CC: modules/http/modules/upstream.o
   CC: modules/http/modules/downstream.o
   CC: modules/inscript/inscript.o
   CC: modules/mpegts/src/pcr.o
   CC: modules/mpegts/src/psi.o
   CC: modules/mpegts/src/pes.o
   CC: modules/mpegts/src/types.o
   CC: modules/mpegts/analyze.o
   CC: modules/mpegts/channel.o
   CC: modules/mpegts/transmit.o
   CC: modules/softcam/FFdecsa/FFdecsa.o
   CC: modules/softcam/cam/cam.o
   CC: modules/softcam/cam/newcamd.o
   CC: modules/softcam/cas/bulcrypt.o
   CC: modules/softcam/cas/conax.o
   CC: modules/softcam/cas/cryptoworks.o
   CC: modules/softcam/cas/dgcrypt.o
   CC: modules/softcam/cas/dre.o
   CC: modules/softcam/cas/exset.o
   CC: modules/softcam/cas/griffin.o
   CC: modules/softcam/cas/irdeto.o
   CC: modules/softcam/cas/mediaguard.o
   CC: modules/softcam/cas/nagra.o
   CC: modules/softcam/cas/viaccess.o
   CC: modules/softcam/cas/videoguard.o
   CC: modules/softcam/decrypt.o
   CC: modules/udp/input.o
   CC: modules/udp/output.o
BUILD: astra
modules/epg/epggrab.o: In function `on_ts':
epggrab.c:(.text+0x582): undefined reference to `TS_PID'
collect2: error: ld returned 1 exit status
make: *** [astra] Error 1

 

Fixed. New version is uploaded.

Share this post


Link to post
Share on other sites

Всё запустил. Помогите с кодировкой иврита. Читал топики выше, у человека была аналогичная проблема с немецким языком. Можно как то пропатчить под иврит?

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">
<tv generator-info-name="astra-epg-gen">
<programme channel="ch1 #2" start="20150512000000 +0000" stop="20150512003500 +0000">
        <title lang="he">unknown charset: 0x04EEE420F9F7E5F8E420E1E0E9ECFA2CF4F8F720392020EBFA2720F2E12720</title>
        <sub-title lang="he">unknown charset: 0x04F4F8F720EEF127272039</sub-title>
        <desc lang="he">unknown charset: 0x04EEF4E9F7: unknown charset: 0x04E1E9F420; unknown charset: 0x04EEE420F9F7E5F8E420E1E0E9ECFA2CF4F8F720392020EBFA2720F2E12720$
</programme>

 

 

The Astra [4.4.183] does not support  IEC 8859-8 Encoding (I think this is the problem).

    const uint8_t charset_id = data[0];

    if(charset_id == 0x10)
    {
        switch((data[1] << 8) | (data[2]))
        {
            case 0x02: return (char *)iso8859_2_decode(&data[3], size - 3); // Central European
            case 0x04: return (char *)iso8859_4_decode(&data[3], size - 3); // North European
            case 0x05: return (char *)iso8859_5_decode(&data[3], size - 3); // Cyrillic
            case 0x07: return (char *)iso8859_7_decode(&data[3], size - 3); // Greek
            case 0x09: return (char *)iso8859_9_decode(&data[3], size - 3); // Turkish
            default: break;
        }
    }
    else if(charset_id < 0x10)
    {
        switch(charset_id)
        {
            case 0x01: return (char *)iso8859_5_decode(&data[1], size - 1); // Cyrillic
            case 0x03: return (char *)iso8859_7_decode(&data[1], size - 1); // Greek
            case 0x05: return (char *)iso8859_9_decode(&data[1], size - 1); // Turkish
            default: break;
        }
    }
    else if(charset_id >= 0x20)
    {
        return (char *)iso8859_1_decode(data, size); // Western European
    }

In your case charset_id is 0x04. Supported are : Cyrillic, Greek and Turkish

Share this post


Link to post
Share on other sites

К сожалению в стандарте ISO8859 нет поддержки иврита. Может кто подскажет альтернативные способы профиксить данную проблему?

Извиняюсь, поправочка 

ISO/IEC 8859-8

Кто возьмётся функцию написать, за вознаграждение?

Share this post


Link to post
Share on other sites

К сожалению в стандарте ISO8859 нет поддержки иврита. Может кто подскажет альтернативные способы профиксить данную проблему?

 The ISO8859-8 is responsible for handling the Hebrew Alphabet (http://en.wikipedia.org/wiki/ISO/IEC_8859-8). I will try to write a patch which will add the needed decoding function.

Share this post


Link to post
Share on other sites

Fixed. New version is uploaded.

 

Все работает.

Правда при конфиге epg://epgcoll#pid=18&name=name и выводе в json к названию канала всегда добавляется ' #3' в конце.

Share this post


Link to post
Share on other sites

Вопрос по патчу. Делаю ./astra-epg.diff, в конце получаю ошибку. Это так должно быть?

 

 

./astra-epg.diff: line 2: ---: команда не найдена
./astra-epg.diff: line 3: +++: команда не найдена
./astra-epg.diff: line 4: syntax error near unexpected token `('
./astra-epg.diff: line 4: `@@ -283,6 +283,37 @@ static uint8_t * iso8859_7_decode(const '

 

Share this post


Link to post
Share on other sites

Всё, разобрался. Может кто подскажет, некоторые буквы не отображаются, где править? Заметил, что буквы ещё и не правельно стоят. Как править кодировку? Подскажите, готовый файл выложу, я думаю много кому он пригодится.

 

Вот кусок файла, что у меня получился

<programme channel="ch1 #2" start="20150514010000 +0000" stop="20150514015000 +0000">
        <title lang="he">טהיח חלבי מהיטח י.ח כך' גב' כך' גט' </title>
        <sub-title lang="he">הטח 240</sub-title>
        <desc lang="he">ההחה: חואחט 100 (טהיח חלבי); הטח 240
הךוכאיך גובחך במךטחי בחבטה הגטביך הייטאליך וביחבי הגומלין ביאה לבין החבטה היהודיך בכל ךחומי החיים: במאי, גוטך ומגיי : טהיח חלבי.(י.ח.) כךוביוך בגבטיך ובגטביך ההחה:חואח$
</desc>
</programme>

Share this post


Link to post
Share on other sites

Спасибо! Текст действительно отображается правильно. А вот что означает это? מותחים שרירים  כת''סמ'&apos;

И как можно убрать эту двойку в конце?

 

programme channel="ch1 #2 

 

<programme channel="ch1 #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

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×