[quote=""new2pvr""]Es wäre eine Art Mapping-Tabelle nötig
(die evt. mvordeme rüberwachsen lassen müßte ?).[/quote]Das Mapping wird in der Konfigurationsdatei gespeichert. Hier ist ein Auszug aus meiner:
Code: Alles auswählen
# channel_number,channel_name,service_id,original_network_id,transport_stream_id,source_name,source_channel_name,offset_minutes
1,Das Erste,28106,1,1101,ClickFinder,ARD,
2,ZDF,28006,1,1079,ClickFinder,ZDF,0
3,RTL Television,12003,1,1089,ClickFinder,RTL,
4,SAT.1,17500,1,1107,ClickFinder,SAT1,0
5,ProSieben,17501,1,1107,ClickFinder,PRO7,0
6,RTL2,12020,1,1089,ClickFinder,RTL II,
7,Super RTL,12040,1,1089,TV Today,SUPER RTL,0
8,kabel eins,17502,1,1107,TV Today,KABEL 1,0
9,3sat,28007,1,1079,ClickFinder,3SAT,0
10,VOX,12060,1,1089,ClickFinder,VOX,0
...
60,BBC 1 London,6301,2,2045,Radiotimes,BBC1,
61,BBC 2 England,6302,2,2045,Radiotimes,BBC2,
62,BBC THREE,6319,2,2045,Radiotimes,BBC3,0
63,BBC FOUR,6316,2,2045,Radiotimes,BBC4,0
...
Allerdings werden der besseren Anzeigbarkeit halber jeweils die Display-Namen der Sender gespeichert. Die werden dann mit Hilfe der zur jeweiligen Programmquelle gehörigen Senderliste auf den eindeutigen Schlüssel der Sender abgebildet. Der Algorithmus, mit dem aus dem Topf-Sendernamen der Name für die epg_upload.ini gemacht wird, sieht so aus (nicht erschrecken):
Code: Alles auswählen
private static final Pattern OFFSET = Pattern.compile("([\\+-]\\s?\\d+\\.?\\d*)$");
private static final Pattern CAMEL_CASE = Pattern.compile("([a-z])([A-Z])");
private static final Pattern[] NUMBERS = new Pattern[]{
Pattern.compile("\\bZERO\\b|\\bNULL\\b"),
Pattern.compile("\\bONE\\b|\\bEINS\\b"),
Pattern.compile("\\bTWO\\b|\\bZWEI\\b"),
Pattern.compile("\\bTHREE\\b|\\bDREI\\b"),
Pattern.compile("\\bFOUR\\b|\\bVIER\\b"),
Pattern.compile("\\bFIVE\\b|\\bFÜNF\\b"),
Pattern.compile("\\bSIX\\b|\\bSECHS\\b"),
Pattern.compile("\\bSEVEN\\b|\\bSIEBEN\\b"),
Pattern.compile("\\bEIGHT\\b|\\bACHT\\b"),
Pattern.compile("\\bNINE\\b|\\bNEUN\\b")
};
private static final Pattern AND = Pattern.compile("\\bAND\\b|\\bUND\\b|\\&");
private static final Pattern FUNNY = Pattern.compile("[^a-zäöüßA-ZÄÖÜ_0-9\\+\\!]");
public static final String unify(final String name) {
if (name == null || name.length() == 0)
return null;
else {
String result = CAMEL_CASE.matcher(name).replaceAll("$1 $2"); // separate camel case words
result = result.toUpperCase(); // convert to upper case
final Matcher offsetMatcher = OFFSET.matcher(result);
String offset = null;
if (offsetMatcher.find()) { // cut time offset
offset = offsetMatcher.group(1);
result = offsetMatcher.replaceAll("");
}
for (int i = 0; i < NUMBERS.length; i++) // replace spelled-out numbers
result = NUMBERS[i].matcher(result).replaceAll(Integer.toString(i));
result = AND.matcher(result).replaceAll("+"); // replace and
result = FUNNY.matcher(result).replaceAll(""); // remove non-word characters
return offset == null ? result : result + '(' + offset + ')'; // append time offset in parentheses
}
}
Der macht daraus die folgende epg_upload.ini:
Code: Alles auswählen
[General]
TGD directory=EPGdata
Number of Services=96
[TV Parameters]
[Channel 1]
service_name=1.DASERSTE
service_id=28106
transport_stream_id=1101
original_network_id=1
[Channel 2]
service_name=2.ZDF
service_id=28006
transport_stream_id=1079
original_network_id=1
[Channel 3]
service_name=3.RTLTELEVISION
service_id=12003
transport_stream_id=1089
original_network_id=1
[Channel 4]
service_name=4.SAT1
service_id=17500
transport_stream_id=1107
original_network_id=1
[Channel 5]
service_name=5.PRO7
service_id=17501
transport_stream_id=1107
original_network_id=1
[Channel 6]
service_name=6.RTL2
service_id=12020
transport_stream_id=1089
original_network_id=1
[Channel 7]
service_name=7.SUPERRTL
service_id=12040
transport_stream_id=1089
original_network_id=1
[Channel 8]
service_name=8.KABEL1
service_id=17502
transport_stream_id=1107
original_network_id=1
[Channel 9]
service_name=9.3SAT
service_id=28007
transport_stream_id=1079
original_network_id=1
[Channel 10]
service_name=10.VOX
service_id=12060
transport_stream_id=1089
original_network_id=1
...
[Channel 60]
service_name=60.BBC1LONDON
service_id=6301
transport_stream_id=2045
original_network_id=2
[Channel 61]
service_name=61.BBC2ENGLAND
service_id=6302
transport_stream_id=2045
original_network_id=2
[Channel 62]
service_name=62.BBC3
service_id=6319
transport_stream_id=2045
original_network_id=2
[Channel 63]
service_name=63.BBC4
service_id=6316
transport_stream_id=2045
original_network_id=2
...
Wenn ich sonst noch irgend etwas beisteuern kann (Mapping exportieren oder so etwas), sagt bescheid.
Viele Grüße,
-- mvordeme