Advertisement
emveepee

Untitled

Jan 12th, 2025 (edited)
246
0
4 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.27 KB | None | 0 0
  1. using NUtility;
  2. using NShared;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data.Common;
  6.  
  7. namespace NextTool
  8. {
  9.     internal class TrimDescription
  10.     {
  11.         public TrimDescription()
  12.         {
  13.             string select = "SELECT oid, description, channel_oid FROM EPG_EVENT;";
  14.             DbCommand command = Globals.con.CreateCommand();
  15.             command.CommandText = select;
  16.             DbDataReader reader = command.ExecuteReader();
  17.             List<int> oids = new List<int>();
  18.             while (reader.Read())
  19.             {
  20.                 if (reader[1].ToString().Contains('\0'))
  21.                 {
  22.                     oids.Add(int.Parse(reader["oid"].ToString()));
  23.                 }
  24.             }
  25.             reader.Close();
  26.             if (oids.Count > 0)
  27.             {
  28.                 Logger.Error($"Found {oids.Count} bad records");
  29.                 Console.WriteLine($"Found {oids.Count} bad records");
  30.                 command.CommandText = "BEGIN TRANSACTION";
  31.                 command.ExecuteNonQuery();
  32.                 List<EPGEvent> events = new List<EPGEvent>();
  33.                 foreach (int oid in oids)
  34.                 {
  35.                     EPGEvent epgEvent = EPGEvent.LoadByOID(oid);
  36.                     if (epgEvent.Description.EndsWith('\0'))
  37.                     {
  38.                         bool fixedDescription = false;
  39.                         do
  40.                         {
  41.                             char a = epgEvent.Description[epgEvent.Description.Length - 1];
  42.                             if (a == 0 || a > 127)
  43.                             {
  44.                                 epgEvent.Description = epgEvent.Description.TrimEnd(a);
  45.                                 if (epgEvent.Description.Length == 0)
  46.                                     fixedDescription = true;
  47.                             }
  48.                             else
  49.                                 fixedDescription = true;
  50.                         } while (!fixedDescription && epgEvent.Description.Length > 0 );
  51.                         if (fixedDescription)
  52.                         {
  53.                             Logger.Debug($"Updating {oid} {epgEvent.Title}|{epgEvent.Description}");
  54.                             events.Add(epgEvent);
  55.                             command.CommandText = $"DELETE FROM EPG_EVENT where oid = '{oid}';";
  56.                             command.ExecuteNonQuery();
  57.                         }
  58.                         else
  59.                             Logger.Error($"Could not trim {oid} {epgEvent.Title} {epgEvent.Description}");
  60.                     }
  61.                     else
  62.                         Logger.Error($"Embedded NULL {oid} {epgEvent.Title} {epgEvent.Description}");
  63.                 }
  64.                 command.CommandText = "COMMIT";
  65.                 command.ExecuteNonQuery();
  66.                 if (events.Count > 0)
  67.                 {
  68.                     EPGManager manager = EPGManager.GetInstance();
  69.                     manager.AddEPGEvents(events);
  70.                     Logger.Error($"Updated {events.Count} records");
  71.                     Console.WriteLine($"Updated {events.Count} records");
  72.                 }
  73.                 DatabaseHelper.GetInstance().FreeConnection(Globals.con);
  74.                 return;
  75.             }
  76.         }
  77.     }
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement