- Panasonic LS 500 / LX 700 series: support for new firmware which doesn't export a hotel.bin file.

- Loewe servicelist.xml (and maybe some other .xml files) larger than 2 000 000 bytes were
  not loaded.
- Enigma/Linux lists can now also be opened by selecting a .tv or .radio file (not just lamedb)
This commit is contained in:
Horst Beham
2023-06-01 11:11:33 +02:00
parent 072d9b2502
commit 68d3fc4963
12 changed files with 41 additions and 15 deletions

View File

@@ -1,4 +1,5 @@
using ChanSort.Api;
using System.IO;
using ChanSort.Api;
namespace ChanSort.Loader.Enigma2
{
@@ -6,10 +7,13 @@ namespace ChanSort.Loader.Enigma2
{
public string DllName { get; set; }
public string PluginName => "Enigma2 (Linux Receiver)";
public string FileFilter => "lamedb";
public string FileFilter => "lamedb;*.tv;*.radio";
public SerializerBase CreateSerializer(string inputFile)
{
var ext = Path.GetExtension(inputFile).ToLowerInvariant();
if (ext == ".tv" || ext == ".radio")
inputFile = Path.Combine(Path.GetDirectoryName(inputFile) ?? "", "lamedb");
return new Serializer(inputFile);
}
}

View File

@@ -38,6 +38,8 @@ namespace ChanSort.Loader.Enigma2
this.Features.CanSkipChannels = false;
this.Features.CanLockChannels = false;
this.Features.CanHideChannels = false;
this.Features.CanHaveGaps = false;
this.Features.AllowGapsInFavNumbers = false;
this.Features.FavoritesMode = FavoritesMode.MixedSource;
this.Features.MaxFavoriteLists = 0; // dynamically added

View File

@@ -13,10 +13,10 @@ namespace ChanSort.Loader.Hisense
{
var name = Path.GetFileName(inputFile).ToLowerInvariant();
if (name.Contains("channel")) // UHD models 2015-2016
if (name.Contains("channel") && name.EndsWith(".db")) // UHD models 2015-2016
return new ChannelDb.ChannelDbSerializer(inputFile);
if (name.Contains("servicelist")) // models 2017 and later
if (name.Contains("servicelist") && name.EndsWith(".db")) // models 2017 and later
return new ServicelistDb.ServicelistDbSerializer(inputFile);
if (name.StartsWith("his_dvb") && name.EndsWith(".bin")) // HIS_DVB.BIN

View File

@@ -21,6 +21,9 @@ namespace ChanSort.Loader.LG
if (content.Contains("<TLLDATA>"))
return new GlobalClone.GcXmlSerializer(inputFile);
if (content.StartsWith("<"))
throw LoaderException.TryNext("File is not a binary LG .TLL file");
return new Binary.TllFileSerializer(inputFile) { IsTesting = this.IsTesting };
}

View File

@@ -16,7 +16,7 @@ namespace ChanSort.Loader.Panasonic;
* Serializer for the 2022/2023 Android based Panasonic LS 500, LX 700 series file format
*
* The format uses a directory tree with
* /hotel.bin (irrelevant content)
* /hotel.bin (irrelevant content, no longer exists after a firmware update in 2023)
* /mnt/vendor/tvdata/database/tv.db Sqlite database
* /mnt/vendor/tvdata/database/channel/idtvChannel.bin
*
@@ -148,9 +148,9 @@ internal class IdtvChannelSerializer : SerializerBase
private readonly StringBuilder log = new();
#region ctor()
public IdtvChannelSerializer(string hotelBin) : base(hotelBin)
public IdtvChannelSerializer(string tvDb) : base(tvDb)
{
var dir = Path.Combine(Path.GetDirectoryName(hotelBin), "mnt/vendor/tvdata/database");
var dir = Path.GetDirectoryName(tvDb);
dbFile = Path.Combine(dir, "tv.db");
binFile = Path.Combine(dir, "channel", "idtvChannel.bin");

View File

@@ -15,14 +15,14 @@ namespace ChanSort.Loader.Panasonic
// check for files in the 2022 /mnt/vendor/tvdata/database/channel/ directory structure file format with tv.db and idtvChannel.bin
var name = Path.GetFileName(inputFile).ToLowerInvariant();
var baseDir = Path.GetDirectoryName(inputFile);
if (name == "idtvchannel.bin")
baseDir = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(baseDir))))); // go down channel/database/tvdata/vendor/mnt
else if (name == "tv.db")
baseDir = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(baseDir)))); // go down database/tvdata/vendor/mnt
if (name == "hotel.bin")
baseDir = Path.Combine(baseDir, "mnt", "vendor", "tvdata", "database");
else if (name == "idtvchannel.bin")
baseDir = Path.GetDirectoryName(baseDir); // go down channel/database/tvdata/vendor/mnt
var hotelBin = Path.Combine(baseDir, "hotel.bin");
if (File.Exists(hotelBin) && File.Exists(Path.Combine(baseDir, "mnt/vendor/tvdata/database", "tv.db")) && File.Exists(Path.Combine(baseDir, "mnt/vendor/tvdata/database/channel", "idtvChannel.bin")))
return new IdtvChannelSerializer(hotelBin);
var tvDb = Path.Combine(baseDir, "tv.db");
if (File.Exists(tvDb) && File.Exists(Path.Combine(baseDir, "channel", "idtvChannel.bin")))
return new IdtvChannelSerializer(tvDb);
// Android based models use an .xml format. Unfortunately that format is utter garbage and not really useful
var ext = Path.GetExtension(inputFile).ToLowerInvariant();

View File

@@ -495,7 +495,7 @@ namespace ChanSort.Ui
this.repositoryItemCheckedComboBoxEdit2.Items.Clear();
var regex = "[";
var favCount = 0;
for (var favMask = (ulong)favorites; (favMask & 1) != 0; favMask >>= 1)
for (int i = 0; i < this.currentTvSerializer.Features.MaxFavoriteLists; i++)
{
var c = (char) ('A' + favCount);
++favCount;
@@ -2552,6 +2552,17 @@ namespace ChanSort.Ui
var selectedChannels = this.GetSelectedChannels(this.dragDropInfo.SourceView);
int newProgNr;
var dropPos = dropChannel.GetPosition(this.subListIndex);
if (this.dragDropInfo.EditMode == EditMode.Swap)
newProgNr = dropPos;
else if (this.dragDropInfo.EditMode == EditMode.InsertBefore)
{
}
else
{
}
if (this.dragDropInfo.EditMode != EditMode.InsertAfter || !this.cbCloseGap.Checked)
newProgNr = dropPos;
else

View File

@@ -1,6 +1,12 @@
ChanSort Change Log
===================
2023-06-01
- Panasonic LS 500 / LX 700 series: support for new firmware which doesn't export a hotel.bin file.
- Loewe servicelist.xml (and maybe some other .xml files) larger than 2 000 000 bytes were
not loaded.
- Enigma/Linux lists can now also be opened by selecting a .tv or .radio file (not just lamedb)
2023-02-20
- added support for Medion Ultra HD Android Smart TV "senderliste.txt" format,
containing lines with JSON data, e.g. Medion X15567 (MD31555)