mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-02-07 23:19:03 +01:00
CsvFileSerializer and RefSerializer are now back in the .Api project. CSV, TXT and CHL files can now be loaded and edited like any other supported channel list.
Eleminated redundant code that was used for loading/applying reference lists in CSV or TXT/CHL format.
This commit is contained in:
@@ -60,8 +60,6 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="RefSerializer.cs" />
|
||||
<Compile Include="RefSerializerPlugin.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChanSort.Api\ChanSort.Api.csproj">
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Loader.RefList
|
||||
{
|
||||
public class RefSerializer : SerializerBase
|
||||
{
|
||||
private static readonly char[] Separators = { ';' };
|
||||
|
||||
private readonly ChannelList allChannels =
|
||||
new ChannelList(SignalSource.DvbT | SignalSource.DvbC | SignalSource.DvbS | SignalSource.AnalogC | SignalSource.AnalogT | SignalSource.Tv | SignalSource.Radio, "All");
|
||||
|
||||
#region ctor()
|
||||
|
||||
public RefSerializer(string inputFile) : base(inputFile)
|
||||
{
|
||||
this.Features.ChannelNameEdit = ChannelNameEditMode.All;
|
||||
this.Features.CanSkipChannels = false;
|
||||
this.Features.CanDeleteChannels = true;
|
||||
this.Features.CanHaveGaps = true;
|
||||
this.Features.EncryptedFlagEdit = false;
|
||||
this.DataRoot.SortedFavorites = false;
|
||||
this.DataRoot.SupportedFavorites = 0;
|
||||
this.DataRoot.AddChannelList(this.allChannels);
|
||||
|
||||
allChannels.VisibleColumnFieldNames = new List<string>
|
||||
{
|
||||
"Position",
|
||||
"Name",
|
||||
"OriginalNetworkId",
|
||||
"TransportStreamId",
|
||||
"ServiceId"
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public override string DisplayName => ".txt Reference List Loader";
|
||||
|
||||
#region Load()
|
||||
|
||||
public override void Load()
|
||||
{
|
||||
this.ReadChannels();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ReadChannels()
|
||||
|
||||
private void ReadChannels()
|
||||
{
|
||||
var lineNr = 0;
|
||||
|
||||
using (var file = new StreamReader(this.FileName))
|
||||
{
|
||||
string line;
|
||||
while ((line = file.ReadLine()) != null)
|
||||
{
|
||||
++lineNr;
|
||||
var parts = line.Split(Separators);
|
||||
if (parts.Length < 2)
|
||||
continue;
|
||||
int progNr;
|
||||
if (!int.TryParse(parts[0], out progNr))
|
||||
continue;
|
||||
|
||||
var channel = new ChannelInfo(allChannels.SignalSource, lineNr, progNr, parts[1]);
|
||||
if (parts.Length >= 3)
|
||||
{
|
||||
var subParts = parts[2].Split('-');
|
||||
if (subParts.Length >= 3)
|
||||
{
|
||||
int val;
|
||||
if (int.TryParse(subParts[0], out val))
|
||||
channel.OriginalNetworkId = val;
|
||||
if (int.TryParse(subParts[1], out val))
|
||||
channel.TransportStreamId = val;
|
||||
if (int.TryParse(subParts[2], out val))
|
||||
channel.ServiceId = val;
|
||||
}
|
||||
}
|
||||
this.DataRoot.AddChannel(this.allChannels, channel);
|
||||
lineNr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetFileInformation()
|
||||
|
||||
public override string GetFileInformation()
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.Append(base.GetFileInformation());
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Save()
|
||||
|
||||
//public override void Save(string tvOutputFile)
|
||||
//{
|
||||
// var writer = new ChlFileSerializer();
|
||||
// writer.Save(tvOutputFile, this.allChannels);
|
||||
// this.FileName = tvOutputFile;
|
||||
//}
|
||||
|
||||
public override void Save(string tvOutputFile)
|
||||
{
|
||||
Save(tvOutputFile, this.allChannels);
|
||||
this.FileName = tvOutputFile;
|
||||
}
|
||||
|
||||
public static void Save(string fileName, ChannelList list)
|
||||
{
|
||||
var samToolBoxMode = (Path.GetExtension(fileName) ?? "").ToLower() == ".chl";
|
||||
|
||||
using (var writer = new StreamWriter(fileName, false, Encoding.UTF8))
|
||||
{
|
||||
foreach (var channel in list.GetChannelsByNewOrder())
|
||||
{
|
||||
if (channel.NewProgramNr == -1) continue;
|
||||
|
||||
writer.Write(channel.NewProgramNr);
|
||||
writer.Write(Separators[0]);
|
||||
writer.Write(channel.Name);
|
||||
if (!samToolBoxMode)
|
||||
{
|
||||
writer.Write(Separators[0]);
|
||||
writer.Write(channel.OriginalNetworkId);
|
||||
writer.Write("-");
|
||||
writer.Write(channel.TransportStreamId);
|
||||
writer.Write("-");
|
||||
writer.Write(channel.ServiceId);
|
||||
}
|
||||
writer.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Loader.RefList
|
||||
{
|
||||
public class RefSerializerPlugin : ISerializerPlugin
|
||||
{
|
||||
public string PluginName => "ChanSort Reference List";
|
||||
|
||||
public string FileFilter => "*.txt;*.chl";
|
||||
|
||||
public SerializerBase CreateSerializer(string inputFile)
|
||||
{
|
||||
return new RefSerializer(inputFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user