XXP und NICK epg

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
usul1
Erleuchteter
Erleuchteter
Beiträge: 760
Registriert: Freitag 14. Januar 2005, 12:42

Beitrag von usul1 »

heisly hat geschrieben:Was soll ich sagen, es hat alles nichts gebracht...
Bis auf: Das Editieren der index.xml mit notepad++ statt mit ultraedit :schäm:

Nun, kaum macht man's richtig, schon funtionierts :lol: !!
:-)
heisly hat geschrieben: Danke usul für deine Hilfe, wenn du nicht gesagt hättest, dass es bei dir läuft, hätte ich wahrscheinlich aufgegeben.
Kein Problem.
heisly hat geschrieben: Was mich etwas wundert ist, dass ich mit ultraedit bisher noch nie Probleme hatte. Der fragt auch immer noch, ob man das Format der vorliegenden Datei ins DOS-Format konvertieren möchte, was ich natürlich verneine :gruebel: .
UltraEdit hängt bei UTF8 codierten Dateien immer 2 Bytes an den Anfang der Datei. Das mag denn die Software auf der Box nicht.
Wenn man die Senderlisten bearbeitet trifft man auf das selbe Problem.
IIRC kann man dieses Verhalten irgendwo in den Setting abschalten.

Und mir ist natürlich auch überhaupt nicht in den Sinn gekommen das das die Ursache für dein Problem sein könnte. :-(


Naja, hauptsache es geht jetzt :-)

cu
usul
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

Wie schaltet man jetzt nochmal zwischen EPG schreiben/lesen um ..?

EDIT:

Da ich das gerade mal wieder aus der Ferne auf meiner Box teste wie schalte ich denn das speichern ein .. :gruebel:

Habe ein Verzeichnis ( hdd/epg/ ) eingegeben und nichts wird gespeichert (habe box via telnet Reboot gemacht)

Bzw. wie kann man den die Box zwingen im laufenden Betrieb das zu schreiben ..?

EDIT: 18:12 !!

Ein Reboot via YWeb ist anscheinend ein anderer als ein Telnet ;-)
Via YWeb Reboot hat er mir jetzt die ganzen xml's geschrieben ;-)
Bild
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Der Telnet Reboot beendet Neutrino ziemlich rigoros, kann sein das da nix mehr geschrieben werden kann.
usul1
Erleuchteter
Erleuchteter
Beiträge: 760
Registriert: Freitag 14. Januar 2005, 12:42

Beitrag von usul1 »

PT-1 hat geschrieben:Wie schaltet man jetzt nochmal zwischen EPG schreiben/lesen um ..?
Du meinst, wie man den sectiond dazu bringt, nur zu lesen und nicht zu schreiben?
Das EPG lesen zu erhalten ohne das gespeichert wird geht nur wenn man den Sectionsd Quellcode ändert oder das binary Patcht (Mit nem Hexeditor "index.tmp" durch "0123456/0" ersetzen).
PT-1 hat geschrieben:Da ich das gerade mal wieder aus der Ferne auf meiner Box teste wie schalte ich denn das speichern ein .. :gruebel:
Den EPG Speicherpfad in der neutrino.conf setzen (Slash am Ende nicht vegessen) und Neutrino killen (sonst wird es wieder überschrieben).
PT-1 hat geschrieben: Bzw. wie kann man den die Box zwingen im laufenden Betrieb das zu schreiben ..?
Die EPG Daten? Dazu unter "Service" den Punkt "neutrino neu starten" wählen. Dann wird beim beenden von Neutrino das EPG speichern angetriggert und beim starten das EPG lesen.
Keine Ahnung ob das auch per WebIF geht.

cu
usul
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

@Usul,

mein Beispiel waere jetzt z.B. die folgenden Sender:

Code: Alles auswählen

<channel serviceID="189d" name="BBC 1 London" tsid="07fd" onid="0002" sat="282"/>
		<channel serviceID="189e" name="BBC 2 England" tsid="07fd" onid="0002" sat="282"/>
		<channel serviceID="27d8" name="ITV Channel Is" tsid="0806" onid="0002" sat="282"/>
		<channel serviceID="23f6" name="Channel 4" tsid="07e8" onid="0002" sat="282"/>
		<channel serviceID="247e" name="Five" tsid="07ef" onid="0002" sat="282"/>
		<channel serviceID="1261" name="Sky One" tsid="07eb" onid="0002" sat="282"/>
Die Tsid waere ja dann 07fd aber dein Beispiel faengt immer mit 0x an.

Wie waere denn dann die korrekte Schreibweise in meinem fall mit den Sendern von oben...

Ein Kumpel und ich versuchen gerade das ganze per script auf einem Server laufen zu lassen.

Sind eigentlich die getonidsid immer gleich oder kommt das auf die Sortierung im Bouquet an ...?

Danke

PT-1

EDIT:

C:\Python24\python.exe xmltv2sectionsd.py --input c:\xmltv\epgdata\cable_epg.xml --output c:\xmltv\dboxepg\7fd0002189d.xml --onid 0002 --tsid 0x??? --sid 0x189d --service london.bbc1.bbc.co.uk

EDIt 2: 1523

Manchmal sieht man doch den Wald vor Baeumen nicht .. :-? :lol:

7fd0002189d BBC 1 London = tsid 07fd onid 0002 and sid 189d

damit eruebrigt sich auch meine Frage nach der tsid ;-)

wird wohl 0x7fd sein ;-)
usul1
Erleuchteter
Erleuchteter
Beiträge: 760
Registriert: Freitag 14. Januar 2005, 12:42

Beitrag von usul1 »

Jup, nur mal zur Erklärung: Das "0x" davor sagt das die Zahl im Hexadezimalen Format ist.
Also einfach die Werte aus der service.xml nehmen (dort stehen sie Haxadezimal drin) und ein "0x" davorschreiben klappt.
Du kannst also "0x7fd" oder "2045" schreiben.

BTW: Ein schönes Beispiel dafür das es einfach Mist ist wenn sich die Programmierer ne Benutzerschnittstelle ausdenken. Das führt meistens zu Missverständnissen ;-)

cu
usul
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

Ich bin ja erstmal beschaehmt das ich Doedel das mit der Channel List = tsid+onid+sid nicht kapiert hatte ....

Ich habe jetzt mal einen Freund daran gesetzt dieses Anwenderfreundlich zu scripten. Basierend auf deinem Python Script.

Ich habe uebrigens nicht mehr das gmt +1 Problem ;-)

Hat sich beim testen irgendwie von selbst geloest ;-)
Renwich
Interessierter
Interessierter
Beiträge: 62
Registriert: Freitag 26. Mai 2006, 00:34

UK EPG

Beitrag von Renwich »

On UK *able we have an issue with some channels having epg, and another channel with a different name actually showing the stream

example

SM9_ETV shows the actual stream
but Sky Movies 9 has the EPG

to combine the two i.e rename SM9_ETV to SKY Movies 9 and merge the EPg the following has been suggested, I can get the channel rename to work at present, but I'm still working on the EPG

Code: Alles auswählen

--- tuxbox-virgin/apps/dvb/zapit/src/zapsi/descriptors.cpp	2007-03-23 19:49:29.000000000 +0000
+++ tuxbox-cvs/apps/dvb/zapit/src/zapsi/descriptors.cpp	2007-03-25 22:15:45.000000000 +0100
@@ -447,11 +447,68 @@
else
serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
+
+	else
+	{
+		providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+		serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+	}
+//new code
+	if (in_blacklist)
+	{
+		if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
+			serviceName  = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
+		else
+			serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+	}
+
+	else
+	{
+		providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+	if (serviceName == "SM9_ETV")
+		serviceName = "Sky Movies 9";
+	else
+		serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+	}
+//end new code
+
+//new code
+	if (in_blacklist)
+	{
+		if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
+			serviceName  = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
+		else
+			serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+	}
+
+	else
+	{
+		providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+	if (serviceName == "SkyMv9")
+		serviceName = "Sky Movies 9";
+	else
+		serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+	}
+//end new code
+
+//new code
+	if (in_blacklist)
+	{
+		if (((unsigned char)buffer[4 + service_provider_name_length + 1]) >= 0x20) // no encoding info
+			serviceName  = CDVBString(("\x05" + std::string((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1))).c_str(), (2 + buffer[1]) - (4 + service_provider_name_length + 1) + 1).getContent(); // add artificial encoding info
+		else
+			serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
+	}
+
else
{
providerName = CDVBString((const char*)&(buffer[4]), service_provider_name_length).getContent();
+	if (serviceName == "SkyMv10")
+		serviceName = "Sky Movies 10";
+	else
serviceName  = CDVBString((const char*)&(buffer[4 + service_provider_name_length + 1]), (2 + buffer[1]) - (4 + service_provider_name_length + 1)).getContent();
}
+//end new code
found_channels++;
@@ -586,8 +643,104 @@
}
/* 0x4C */
-void time_shifted_service_descriptor(const unsigned char * const)
+void time_shifted_service_descriptor(const t_service_id service_id, const t_transport_stream_id transport_stream_id, const t_original_network_id original_network_id, const t_satellite_position satellite_position, const uint32_t frequency)
{
+		frequency_kHz_t zfrequency;
+	tallchans_iterator I = allchans.find(CREATE_CHANNEL_ID);
+
+	if (I != allchans.end())
+		return;
+
+	uint8_t service_type = ST_DIGITAL_TELEVISION_SERVICE;
+	std::string serviceName;
+	std::string providerName = "NVOD";
+
+	if (service_id == 0x062d || service_id == 0x02be || service_id ==0x1cec)
+		serviceName = std::string("Red Hot Wives");
+	else if (service_id == 0x02c2)
+		serviceName = std::string("Red Hot UK Talent");
+	else if (service_id == 0x062f || service_id == 0x02c3 || service_id ==0x1cee)
+		serviceName = std::string("Red Hot All Girl");
+	else if (service_id == 0x02bd || service_id ==0x1ceb)
+		serviceName = std::string("Red Hot 40+ Wives");
+	else if (service_id == 0x062e)
+		serviceName = std::string("Red Hot Amateur");
+	else if (service_id == 0x062c || service_id == 0x02b3 || service_id ==0x1cf0)
+		serviceName = std::string("Spice Extreme");
+	else if (service_id == 0x02a5 || service_id ==0x0191)
+		serviceName = std::string("Hustler TV UK");
+	else if (service_id == 0x0624 || service_id == 0x02ca || service_id ==0x1d4d)
+		serviceName = std::string("100% Babes");
+	else if (service_id == 0x0623 || service_id == 0x02de || service_id ==0x1d53)
+		serviceName = std::string("Adult Channel PPV");
+	else if (service_id == 0x0629 || service_id == 0x0118 || service_id ==0x019a)
+		serviceName = std::string("Playboy TV PPV");
+	else if (service_id == 0x062a || service_id == 0x012d || service_id ==0x0326)
+		serviceName = std::string("Television X PPV");
+	else if (service_id == 0x1ced)
+		serviceName = std::string("Gay TV");
+	else if (service_id == 0x1f47)
+		serviceName = std::string("Xplicit XXX");
+	else if (service_id == 0x1f43)
+		serviceName = std::string("Red Hot Climax");
+	else if (service_id == 0x0625)
+		serviceName = std::string("Setanta Sports PPV");
+	else if (service_id == 0x06a4)
+		serviceName = std::string("Sky Box Office Sports");
+	else if (service_id == 0x007c)
+		serviceName = std::string("SBO PPV2");
+	else if (service_id == 0x022a)
+		serviceName = std::string("PremPlus PPV");
+	else if (service_id == 0x00ce || service_id == 0x0275)
+		serviceName = std::string("PPV Events");
+	else if (service_id == 0x0130)
+		serviceName = std::string("PPV Events 2");
+	else
+		serviceName = std::string("Other NVOD");
+
+	found_channels++;
+
+	eventServer->sendEvent
+	(
+		CZapitClient::EVT_SCAN_NUM_CHANNELS,
+		CEventServer::INITID_ZAPIT,
+		&found_channels,
+		sizeof(found_channels)
+	);
+
+	zfrequency = FREQUENCY_IN_KHZ(frequency);
+	allchans.insert
+	(
+		std::pair <t_channel_id, CZapitChannel>
+		(
+			CREATE_CHANNEL_ID,
+			CZapitChannel
+			(
+				serviceName,
+				service_id,
+				transport_stream_id,
+				original_network_id,
+				service_type,
+				0,
+				satellite_position,
+				zfrequency 
+			)
+		)
+	);
+
+#define UNKNOWN_PROVIDER_NAME "Unknown Provider"
+
+	if (providerName.empty())
+		providerName = CDVBString(UNKNOWN_PROVIDER_NAME, strlen(UNKNOWN_PROVIDER_NAME)).getContent();
+
+	if (lastProviderName != providerName)
+	{
+		lastProviderName = providerName;
+		eventServer->sendEvent(CZapitClient::EVT_SCAN_PROVIDER, CEventServer::INITID_ZAPIT, (void *) lastProviderName.c_str(), lastProviderName.length() + 1);
+	}
+
+ 	found_tv_chans++;
+ 	eventServer->sendEvent(CZapitClient::EVT_SCAN_FOUND_TV_CHAN, CEventServer::INITID_ZAPIT, &found_tv_chans, sizeof(found_tv_chans));
}
/* 0x4D */
and

Code: Alles auswählen

--- tuxbox-virgin/apps/tuxbox/neutrino/daemons/sectionsd/SIsections.cpp	2007-03-23 19:49:29.000000000 +0000
+++ tuxbox-cvs/apps/tuxbox/neutrino/daemons/sectionsd/SIsections.cpp	2007-03-27 18:28:47.000000000 +0100
@@ -313,6 +313,17 @@
evt = (struct eit_event *) actPos;
SIevent e(evt);
e.service_id = service_id();
+//new code
+		if (e.service_id == 0x0404)
+			e.service_id = 0x0405;
+		else if (e.service_id == 0x04e8)
+			e.service_id = 0x0403;
+		else if (e.service_id == 0x0205)
+			e.service_id = 0x026c;
+		else if (e.service_id == 0x00d0)
+			e.service_id = 0x00c9c;
+
+//end new code
e.original_network_id = original_network_id();
e.transport_stream_id = transport_stream_id();
descriptors_loop_length = (evt->descriptors_loop_length_hi << 8) | evt->descriptors_loop_length_lo;
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Looks a little suspect because in DVB channels are uniquely identified by the onid, tsid, sid triple. Maybe I am wrong but it seems to me that in this patch only the sid is used.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

merge the EPg
have a look at neutrino/daemons/sectionsd/SIsections.cpp line 500ff to see how an EPG can be "transferred" to a different ts/nid/sid.
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

FreddyFrog aus England hat mal etwas gebastelt...

Bild

http://www.njlworld.com/~pt1/epg_dbox/f ... g_Perl.zip

oder

http://www.njlworld.com/~pt1/epg_dbox/f ... indows.zip

Bei der Windows Version sollte eine config.ini dabei sein womit man die Zeitzone einstellen kann
should be 3600 now or 1*60*60 as I like to put it

Code: Alles auswählen

; INI FILE
; The bouquets.xml file from your DBOX
DBOX_bouquet=bouquets.xml

; sat or cable DBOX
DBOX_type=cable

; Your XMLTV output
XMLTV_ouput=uk.xml

; Where you would like your xml files to be generated
; the directory needs to already be there!
output_dir=./output 

; Which tv_grab did you use? 
; supports tv_grab_fr or tv_grab_uk_rt so far
XMLTV_grab=tv_grab_uk_rt

; Do you need to adjust the time?
; remove 1 hour
gmt=1*60*60 

PS: Ich habe es noch nicht selber getestet aber praktisch sollte der <display-name>Animal Planet +1< mit dem Eintrag in der Services.xml uebereinstimmen.

Muss ich mal selber spielen oder eventuell mit der MyServices.xml anpassen

Im Falle von BBC/28.2 koennte man das ja einmal gemeinsam machen
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

OK,

habe jetzt mal gespielt aber meine Bouquets.XML fuer 28.2 ist via Sectionsd erstellt und dann fehlen die Namen:

Code: Alles auswählen

	<Bouquet type="1" bouquet_id="1000" name="BSkyB Bouquet" hidden="0" locked="0">
		<channel serviceID="189d" name="" tsid="07fd" onid="0002"/>
und in der services.xml

Code: Alles auswählen

		<transponder id="07fd" onid="0002" frequency="10773250" inversion="2" symbol_rate="22000000" fec_inner="5" polarization="0">
			<channel service_id="189d" name="BBC 1 London" service_type="01"/>
Ist es eigentlich absicht das bouquets.xml = channel serviceID=" und die Services.xml = channel service_id= :gruebel:
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

Freddy Frog hat jetzt noch ein bischen weiter gespielt und die Software liest jetzt die Services.XML

Im Falle von 28.2 gibt es ja mehrere Sender fuer die einzelnen Regionen und man kann jetzt die Services.XML Sendernamen dazu benutzen die Bleb Sendernamen zu ueberschreiben.

File ist hier und readme ist auch dabei

Fuer die Senderauswahl kann man die folgenden Stationen benutzen:

Code: Alles auswählen

bbc1, bbc2,p_itv1, ch4, five, abc1, bbc1_n_ireland, bbc1_scotland, bbc1_wales, bbc2_n_ireland, bbc2_scotland, bbc2_wales, bbc3, bbc4, bbc7, bbc_6music, bbc_hd, bbc_news24, bbc_parliament, bbc_radio1, bbc_radio1_xtra, bbc_radio2, bbc_radio3, bbc_radio4, bbc_radio5_live, bbc_radio5_live_sports_extra, bbc_radio_scotland, bbc_world_service, boomerang, bravo, bravo+1, british_eurosport, cartoon_network, cbbc, cbeebies, challenge, challenge+1, citv, discovery, discovery_kids, discovery_real_time, disney, e4, e4+1, extreme_sports, film_four, film_four+1, five_life, five_us, ftn, fx, ideal_world,p_itv2,p_itv3,p_itv3+1,p_itv4, living_tv, living_tv+1, men_and_motors, more4, more4+1, mtv, nick_junior, nickelodeon, oneword, paramount, paramount2, paramount+1, paramount2+1, qvc, s4c, s4c2, s4c_digidol, scifi, scifi+1, sky_cinema1, sky_cinema2, sky_movies1, sky_movies10, sky_movies2, sky_movies3, sky_movies4, sky_movies5, sky_movies6, sky_movies7, sky_movies8, sky_movies9, sky_news, sky_one, sky_sports1, sky_sports2, sky_sports3, sky_sports_news, sky_sports_xtra, sky_three, sky_travel, sky_two, tcm, tmf, uk_bright_ideas, uk_drama, uk_drama+1, uk_gold, uk_gold+1, uk_history, uk_style, uktv_documentary, uktv_g2, uktv_g2+1, uktv_people, vh1
Sascha-S
Beiträge: 1
Registriert: Montag 4. Juni 2007, 20:45

Beitrag von Sascha-S »

Hallo,

habe mich auch mal mit dem Thema befasst und wollte nun mal meinen eigenen EPG schreiben.

Bin nun folgendermaßen vorgegangen:
- Habe das EPG Verzeichniss auf meine HDD in der dbox2 gelegt.
(hdd/epg/)
- Unter Neutrino das EPG Verzeichniss auf hdd/epg/ geändert.
- Unter der xml datei von Comedy Central habe ich testweise den EPG von Kabel Deutschland überschrieben (Keine Programminfo verfügbar bei Frage..)

Nun meine Frage:
Muss ich jetzt das EPG Verzeichnis beim starten von der dbox mounten lassen oder liest die dbox das selber aus ?

Denn wenn ich die dbox einschalte liest sie nicht den EPG von der Festplatte :gruebel:

Habe alles mit UltraEdit bearbeitet und benutze Windows.

Hat jemand eine Erklärung ?
Und das mit dem xmltv habe ich nicht so ganz verstanden :oops:

Hoffe, es kann mir einer helfen,
Mfg.
Sascha