diff --git a/readme.md b/readme.md index 0f1d625..9f65deb 100644 --- a/readme.md +++ b/readme.md @@ -12,7 +12,7 @@ About ChanSort ChanSort is a Windows application that allows you to reorder your TV's channel list. Most modern TVs can transfer channel lists via USB stick, which you can plug into your PC. ChanSort supports various file formats from Samsung, LG, Panasonic, Sony, Philips, Hisense, Toshiba, Grundig, -SatcoDX (used by ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken), +Sharp, Dyon, Blaupunkt, SatcoDX (used by ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken), Linux VDR, SAT>IP .m3u and Enimgma2 based Linux boxes. ![screenshot](http://beham.biz/chansort/ChanSort-en.png) @@ -38,8 +38,8 @@ There is a chance of unwanted side-effects or even damage to your TV, as reporte Hisense is the only manufacturer who provided technical information and a test device. -Syste -m requirements + +System requirements ------------------- - [Microsoft .NET Framework 4.8 or later](https://dotnet.microsoft.com/download/dotnet-framework) (When running under Linux, you need Winetricks, select a 32bit wineprefix and install the "dotnet48" package) @@ -94,6 +94,7 @@ ChanSort currently supports the formats: - Repair\CM_TPM1013E_LA_CK.xml (sometimes that file is hidden and only a .bin file is visible) **Hisense** +Some older models like LTDN40D50TS use the same .csv files as Sharp. See "Sharp" for instructions. 2016 "Smart" models with a channel.db file, i.e. H65M5500 2017 models with a servicelist.db file Special thanks to Hisense for supporting ChanSort with technical information and a test device! @@ -109,6 +110,22 @@ Models that export files named dvb\*_config.xml. **SatcoDX (OEM for ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken)** Various brands use the same hardware for DVB-S, which exports .sdx files +**Sharp (and some models from Dyon, Blaupunkt, Hisense, Changhong, alphatronics, JTC Genesis)** +Some of these TV share similar hardware and can export/import a .csv file allowing to change the channel order. +Blaupunkt B40A148TCSFHD, B32B133T2CSHD, ... +Changhong LED32E2200ST2, ... +Dyon Live 22 Pro, Live 24 Pro, ENTER 32 Pro X, ... +Hisense LTDN40D50TS, ... +Sharp LC-xxCFE4142E, LC-xxCFF6002E, LC-xxFI5542E, LC-xxFG5242E, LC-xxUI7552E, LC-xxUI7652E, xxBJ1E, xxBJ3E, xxBJ5E, ... + +Depending on the actual TV the import/export function can be part of the regular user menu, a hotel menu or a service menu +and the exported files may be different. Some models like Sharp Aquos xxBJ1E have a sub menu for exporting. You need to +export all 4 type of files for the import to work. +To access the secret hotel / service menus, there are several possible key combinations on the remote control: +hotel menu: MENU 7906 / MENU 4588 +service menu: MENU 1147 / MENU 11471147 / SOURCE 2580 +Do not make any changes in the service menu, as this could damage your TV. Only use the import/export functions. + **VDR (Linux Video Disk Recorder)** Supports the channels.conf file format. Implementation for this was provided by TCr82 from the VDR project. diff --git a/readme_de.md b/readme_de.md index f119459..3aa6b2a 100644 --- a/readme_de.md +++ b/readme_de.md @@ -12,7 +12,7 @@ Links ChanSort ist eine Windows-Anwendung, die das Sortieren von Fernsehsenderlisten erlaubt. Die meisten modernen Fernseher können Senderlisten auf einen USB-Stick übertragen, den man danach am PC anschließt. ChanSort unterstützt diverse Dateiformate von Samsung, LG, Panasonic, Sony, Philips, Hisense, Toshiba, Grundig, -SatcoDX (verwendet von Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken), +Sharp, Dyon, Blaupunkt, SatcoDX (verwendet von Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken), Linux VDR, SAT>IP .m3u und Enigma2 basierende Linux TV-Boxen. ![screenshot](http://beham.biz/chansort/ChanSort-de.png) @@ -94,6 +94,7 @@ ChanSort unterst - Repair\CM_TPM1013E_LA_CK.xml (diese Datei ist oft verstekt und nur eine .bin Datei sichtbar) **Hisense** +Einige ältere Modelle wie LTDN40D50TS verwenden die gleichen .csv Dateien wie Sharp. Siehe "Sharp" für eine Anleitung. Smart-Modelle (2016) mit channel.db Dateiformat, z.B. H65M5500 2017 Modelle mit einem servicelist.db Dateiformat Besonderen Dank an Hisense für die Bereitstellung von technischen Informationen und einem Testgerät! @@ -109,6 +110,22 @@ Modelle die Dateien mit Namen dvb\*_config.xml exportieren. **SatcoDX (OEM für ITT, Medion, Nabo, ok., PEAQ, Schaub-Lorenz, Silva-Schneider, Telefunken)** Mehrere Marken nutzen die gleiche Hardware für DVB-S und exportieren .sdx Dateien +**Sharp (and some models from Dyon, Blaupunkt, Hisense, Changhong, alphatronics, JTC Genesis)** +Einige dieser TVs verwenden ähnliche Hardware und können .csv Dateien exportieren/importieren, um die Reihenfolge zu ändern. +Blaupunkt B40A148TCSFHD, B32B133T2CSHD, ... +Changhong LED32E2200ST2, ... +Dyon Live 22 Pro, Live 24 Pro, ENTER 32 Pro X, ... +Hisense LTDN40D50TS, ... +Sharp LC-xxCFE4142E, LC-xxCFF6002E, LC-xxFI5542E, LC-xxFG5242E, LC-xxUI7552E, LC-xxUI7652E, xxBJ1E, xxBJ3E, xxBJ5E, ... + +Abhängig vom konkreten TV-Modell kann die Import/Export-Funktion Teil des normalen Menüs, eines Hotel-Menüs oder Service-Menüs sein +und die exportieren Dateien unterschiedlich sein. Einige Modelle wie Sharp Aquos xxBJ1E haben ein Untermenü für den Export. Hier +sind alle 4 Typen von Dateien für einen Import nötig. +Um in das geheime Hotel- / Service-Menü zu gelangen, gibt es verschiedene Tastenkombinationen auf der Fernbedienung: +Hotelmenu: MENU 7906 / MENU 4588 +Servicemenu: MENU 1147 / MENU 11471147 / SOURCE 2580 +Ändern Sie keine Werte im Servicemenü, die könnte den Fernseher beschädigen. Nutzen Sie nur die Import/Export-Funktionen + **VDR (Linux Video Disk Recorder)** Unterstützung des channels.conf Dateiformats. Die Implementation hierfür wurde vom Mitglied "TCr82" des VDR Projekts beigesteuert. diff --git a/source/ChanSort.Loader.Sharp/SharpSerializer.cs b/source/ChanSort.Loader.Sharp/SharpSerializer.cs index 795272c..b14ffe3 100644 --- a/source/ChanSort.Loader.Sharp/SharpSerializer.cs +++ b/source/ChanSort.Loader.Sharp/SharpSerializer.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.Text; using ChanSort.Api; @@ -34,7 +35,6 @@ namespace ChanSort.Loader.Sharp { private enum FormatVersion { - Unknown = 0, Hisense3Columns = 1, Sharp5Columns = 2, Sharp7Columns = 3, @@ -44,6 +44,7 @@ namespace ChanSort.Loader.Sharp private readonly ChannelList dvbsChannels = new ChannelList(0, "DVB-S"); private Encoding encoding; private FormatVersion formatVersion; + private string[] cols; private string[] lines; @@ -56,6 +57,7 @@ namespace ChanSort.Loader.Sharp this.Features.CanSkipChannels = false; this.Features.CanLockChannels = false; this.Features.CanHideChannels = false; + this.Features.CanHaveGaps = false; this.Features.FavoritesMode = FavoritesMode.None; this.DataRoot.AddChannelList(this.dvbsChannels); @@ -74,8 +76,6 @@ namespace ChanSort.Loader.Sharp this.formatVersion = DetectFormatVersion(); this.AdjustVisibleColumns(); - var cols = lines[2].ToLowerInvariant().Split(','); - for (int i=3; i(); foreach (var col in cols) dict.Add(col); @@ -257,12 +257,29 @@ namespace ChanSort.Loader.Sharp for (int i=0; i<3; i++) file.WriteLine(this.lines[i]); + // index of fields in the extended FormatVersion.Sharp51Columns + var ixChannelNumber = Array.IndexOf(this.cols, "channel number"); + var ixProgramIndex = ixChannelNumber < 0 ? -1 : Array.IndexOf(this.cols, "program index"); + foreach (var channel in this.dvbsChannels.GetChannelsByNewOrder()) { // when a reference list was applied, the list may contain proxy entries for deleted channels, which must be ignored if (channel.IsProxy || channel.IsDeleted) continue; - file.WriteLine(this.lines[channel.RecordIndex]); + + var line = this.lines[channel.RecordIndex]; + if (ixProgramIndex >= 0) + { + // this extended format would only change the zapping order unless the "Channel Number" and "Channel Index" fields are updated too + var fields = this.lines[channel.RecordIndex].Split(','); + fields[ixChannelNumber] = fields[ixProgramIndex] = channel.NewProgramNr.ToString(); + line = string.Join(",", fields); + } + else + { + // the older formats require the "Channel Number" to be unchanged and update it internally during the import based on the order of the lines + } + file.WriteLine(line); } file.WriteLine("[E]"); diff --git a/source/changelog.md b/source/changelog.md index 965b3cf..103ddfe 100644 --- a/source/changelog.md +++ b/source/changelog.md @@ -1,9 +1,9 @@ ChanSort Change Log =================== -2021-03-15 (alpha) -- Enigma2: added support for Linux based Set-Top-Boxes (Dreambox, VU+, Octagon, ...) using lamedb and bouquets +2021-03-16 - Sharp, Dyon, Blaupunkt, ...: added support for DVBS_Program.csv and \*DVBS_CHANNEL_TABLE.csv files +- Enigma2: added support for Linux based Set-Top-Boxes (Dreambox, VU+, Octagon, ...) using lamedb and bouquets - Toshiba settingsDB.db: support for lists without analog tuner data (missing TADTunerDataTable) - Grunding: failed to load lists where the element did not contain a child element - refrence lists can now be applied to main channel numbers (as before) or to a specific favorite list (new)