Skip to content

Commit 89e46dd

Browse files
Torrent update menu with 5 items selections.
New torrent list can be added before or after the original tracker list inside the torrent files. When there is a duplication conflict, delete it from the new or original list. And there is the sort by name. There are total 5 possibles way to update the end result list.
1 parent 9472fbe commit 89e46dd

File tree

2 files changed

+112
-37
lines changed

2 files changed

+112
-37
lines changed

source/main.lfm

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -302,15 +302,29 @@ object FormTrackerModify: TFormTrackerModify
302302
Caption = '&Update torrent'
303303
Hint = 'Update the torrent files'
304304
object MenuUpdateTorrentAddAfter: TMenuItem
305-
Caption = 'Add new trackers &After original trackers (original trackers + new trackers)'
306-
OnClick = MenuUpdateTorrentAddAfterClick
305+
Caption = 'Insert new trackers list &BEFORE, the original trackers list inside the torrent file'
306+
object MenuUpdateTorrentAddBeforeRemoveOriginal: TMenuItem
307+
Caption = 'And remove possible duplicated trackers from the ORIGINAL trackers list.'
308+
OnClick = MenuUpdateTorrentAddBeforeRemoveOriginalClick
309+
end
310+
object MenuUpdateTorrentAddBeforeRemoveNew: TMenuItem
311+
Caption = 'And remove possible duplicated trackers from the NEW trackers list.'
312+
OnClick = MenuUpdateTorrentAddBeforeRemoveNewClick
313+
end
307314
end
308315
object MenuUpdateTorrentAddBefore: TMenuItem
309-
Caption = 'Add new trackers &Before original trackers (new trackers + original trackers)'
310-
OnClick = MenuUpdateTorrentAddBeforeClick
316+
Caption = 'Append new trackers list &AFTER, the original trackers list inside the torrent file.'
317+
object MenuUpdateTorrentAddAfterRemoveOriginal: TMenuItem
318+
Caption = 'And remove possible duplicated trackers from the ORIGINAL trackers list.'
319+
OnClick = MenuUpdateTorrentAddAfterRemoveOriginalClick
320+
end
321+
object MenuUpdateTorrentAddAfterRemoveNew: TMenuItem
322+
Caption = 'And remove possible duplicated trackers from the NEW trackers list.'
323+
OnClick = MenuUpdateTorrentAddAfterRemoveNewClick
324+
end
311325
end
312326
object MenuUpdateTorrentSort: TMenuItem
313-
Caption = '&Sort the trackers by name.'
327+
Caption = '&Sort the trackers list by name.'
314328
OnClick = MenuUpdateTorrentSortClick
315329
end
316330
end

source/main.pas

Lines changed: 93 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ interface
4242
type
4343

4444
//Updated torrent file trackers list order.
45-
TTrackerListOrder = (tloInsertBefore, tloAppendAfter, tloSort);
45+
TTrackerListOrder = (
46+
tloInsertNewBeforeAndKeepOriginalIntact,
47+
tloInsertNewBeforeAndKeepNewIntact,
48+
tloAppendNewAfterAndKeepOriginalIntact,
49+
tloAppendNewAfterAndKeepNewIntact,
50+
tloSort);
4651

4752

4853
{ TFormTrackerModify }
@@ -60,6 +65,10 @@ TFormTrackerModify = class(TForm)
6065
MenuFileTorrentFolder: TMenuItem;
6166
MenuFileOpenTrackerList: TMenuItem;
6267
MenuHelpReportingIssue: TMenuItem;
68+
MenuUpdateTorrentAddBeforeRemoveOriginal: TMenuItem;
69+
MenuUpdateTorrentAddAfterRemoveOriginal: TMenuItem;
70+
MenuUpdateTorrentAddBeforeRemoveNew: TMenuItem;
71+
MenuUpdateTorrentAddAfterRemoveNew: TMenuItem;
6372
MenuUpdateTorrentSort: TMenuItem;
6473
MenuUpdateTorrentAddAfter: TMenuItem;
6574
MenuUpdateTorrentAddBefore: TMenuItem;
@@ -116,8 +125,10 @@ TFormTrackerModify = class(TForm)
116125
procedure MenuTrackersKeepOrDeleteAllTrackersClick(Sender: TObject);
117126

118127
//Menu update torrent
119-
procedure MenuUpdateTorrentAddAfterClick(Sender: TObject);
120-
procedure MenuUpdateTorrentAddBeforeClick(Sender: TObject);
128+
procedure MenuUpdateTorrentAddAfterRemoveNewClick(Sender: TObject);
129+
procedure MenuUpdateTorrentAddAfterRemoveOriginalClick(Sender: TObject);
130+
procedure MenuUpdateTorrentAddBeforeRemoveNewClick(Sender: TObject);
131+
procedure MenuUpdateTorrentAddBeforeRemoveOriginalClick(Sender: TObject);
121132
procedure MenuUpdateTorrentSortClick(Sender: TObject);
122133

123134
private
@@ -135,8 +146,7 @@ TFormTrackerModify = class(TForm)
135146
// All the torrent files that must be updated
136147
FTorrentFileNameList,
137148
//Log string text output
138-
FLogStringList
139-
: TStringList;
149+
FLogStringList: TStringList;
140150
// is the present torrent file being process
141151
FDecodePresentTorrent: TDecodeTorrent;
142152
FConcoleMode, //user have start the program in console mode
@@ -499,10 +509,9 @@ procedure TFormTrackerModify.UpdateTorrent;
499509
if not FDecodePresentTorrent.DecodeTorrent(FTorrentFileNameList[i]) then
500510
Continue;
501511

502-
//tloInsertBefore and tloAppendAfter need the list be updated or each torrent file.
503-
//for tloSort it is already process one time.
504-
if (FTrackerListOrderForUpdatedTorrent = tloInsertBefore) or
505-
(FTrackerListOrderForUpdatedTorrent = tloAppendAfter) then
512+
513+
//tloSort it is already process. But it not tloSort then process it.
514+
if FTrackerListOrderForUpdatedTorrent <> tloSort then
506515
begin
507516
//Add the new tracker before of after the original trackers inside the torrent.
508517
CombineFiveTrackerListToOne(FTrackerListOrderForUpdatedTorrent);
@@ -898,7 +907,6 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
898907
TrackerDeselectTempList, TrackerFromInsideOneTorrentFile: TStringList;
899908

900909
begin
901-
//Must keep the original order of trackers inside the torrent file.
902910
//The new trackers can be added at the begin of end of the list.
903911

904912
// FTrackerFinalList =
@@ -915,8 +923,7 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
915923
//Begin with an empty list
916924
FTrackerFinalList.Clear;
917925

918-
if (FTrackerListOrderForUpdatedTorrent = tloInsertBefore) or
919-
(FTrackerListOrderForUpdatedTorrent = tloAppendAfter) then
926+
if FTrackerListOrderForUpdatedTorrent <> tloSort then
920927
begin
921928

922929
//Read the trackers inside the torrent file
@@ -926,46 +933,80 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
926933
AddButIngnoreDuplicates(TrackerFromInsideOneTorrentFile, TrackerStr);
927934
end;
928935

929-
//Remove the trackers that we do not want, but these trackers can be posible added again.
930-
RemoveTrackersFromList(FTrackerBanByUserList, TrackerFromInsideOneTorrentFile);
931-
RemoveTrackersFromList(FTrackerManualyDeselectedByUserList,
932-
TrackerFromInsideOneTorrentFile);
933-
934936
end;
935937

936938
//Add the new tracker list before of after the original trackers list inside the torrent file.
937939
case TrackerListOrder of
938940

939-
tloInsertBefore:
941+
tloInsertNewBeforeAndKeepOriginalIntact:
942+
begin
943+
//Before
944+
945+
//Must be place as first FTrackerAddedByUserList (Not instact when duplicated)
946+
for TrackerStr in FTrackerAddedByUserList do
947+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
948+
949+
//original tracker list is second place (Keep original intact)
950+
RemoveTrackersFromList(TrackerFromInsideOneTorrentFile, FTrackerFinalList);
951+
for TrackerStr in TrackerFromInsideOneTorrentFile do
952+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
953+
954+
//'Others' trackers added as last. (Not instact when duplicated)
955+
for TrackerStr in FTrackerFromInsideTorrentFilesList do
956+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
957+
end;
958+
959+
960+
tloInsertNewBeforeAndKeepNewIntact:
940961
begin
941962
//Before
942963

943-
//Must be place as first FTrackerAddedByUserList
964+
//Must be place as first FTrackerAddedByUserList (keep new instact)
944965
for TrackerStr in FTrackerAddedByUserList do
945966
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
946967

947-
//original tracker list is second place
968+
//original tracker list is second place (Not instact when duplicated)
969+
for TrackerStr in TrackerFromInsideOneTorrentFile do
970+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
971+
972+
//'Others' trackers added as last. (Not instact when duplicated)
973+
for TrackerStr in FTrackerFromInsideTorrentFilesList do
974+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
975+
end;
976+
977+
978+
tloAppendNewAfterAndKeepOriginalIntact:
979+
begin
980+
//After
981+
982+
//original tracker list must be place first. (keep original instact)
948983
for TrackerStr in TrackerFromInsideOneTorrentFile do
949984
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
950985

951-
//'Others' trackers added as last.
986+
//Must be place after TrackerFromInsideOneTorrentFile (Not instact when duplicated)
987+
for TrackerStr in FTrackerAddedByUserList do
988+
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
989+
990+
//'Others' trackers added as last. (Not instact when duplicated)
952991
for TrackerStr in FTrackerFromInsideTorrentFilesList do
953992
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
993+
954994
end;
955995

956-
tloAppendAfter:
996+
tloAppendNewAfterAndKeepNewIntact:
957997
begin
958998
//After
959999

960-
//original tracker list must be place first.
1000+
//original tracker list must be place first. (Not instact when duplicated)
9611001
for TrackerStr in TrackerFromInsideOneTorrentFile do
9621002
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
9631003

964-
//Must be place after TrackerFromInsideOneTorrentFile
1004+
//Must be place after TrackerFromInsideOneTorrentFile (keep new instact)
1005+
RemoveTrackersFromList(FTrackerAddedByUserList, FTrackerFinalList);
9651006
for TrackerStr in FTrackerAddedByUserList do
9661007
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
9671008

968-
//'Others' trackers added as last.
1009+
//'Others' trackers added as last. (Not instact when duplicated)
9691010
for TrackerStr in FTrackerFromInsideTorrentFilesList do
9701011
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
9711012

@@ -996,16 +1037,17 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
9961037
//Must keep FTrackerManualyDeselectedByUserList intact. Copy it to TrackerDeselectTempList
9971038
TrackerDeselectTempList := TStringList.Create;
9981039
TrackerDeselectTempList.Text := FTrackerManualyDeselectedByUserList.Text;
999-
10001040
RemoveTrackersFromList(FTrackerAddedByUserList, TrackerDeselectTempList);
10011041

10021042
//Remove the trackers that we do not want in FTrackerFinalList must be the last step.
10031043
RemoveTrackersFromList(FTrackerBanByUserList, FTrackerFinalList);
10041044
RemoveTrackersFromList(TrackerDeselectTempList, FTrackerFinalList);
10051045

1046+
//No longer needed
10061047
TrackerDeselectTempList.Free;
10071048

10081049
finally
1050+
//No longer needed
10091051
TrackerFromInsideOneTorrentFile.Free;
10101052
end;
10111053
end;
@@ -1015,6 +1057,7 @@ procedure TFormTrackerModify.UpdateTrackerInsideFileList;
10151057
var
10161058
i: integer;
10171059
begin
1060+
//Collect data what the user want to keep
10181061
//Copy items from CheckListBoxTrackersList to FTrackerFromInsideTorrentFilesList
10191062
//Copy items from CheckListBoxTrackersList to FTrackerManualyDeselectedByUserList
10201063

@@ -1176,17 +1219,35 @@ procedure TFormTrackerModify.MenuTrackersKeepOrDeleteAllTrackersClick(Sender: TO
11761219
CheckedOnOffAllTrackers(TMenuItem(Sender).Tag = 1);
11771220
end;
11781221

1179-
procedure TFormTrackerModify.MenuUpdateTorrentAddAfterClick(Sender: TObject);
1222+
procedure TFormTrackerModify.MenuUpdateTorrentAddAfterRemoveNewClick(Sender: TObject);
1223+
begin
1224+
//User have selected to add new tracker.
1225+
FTrackerListOrderForUpdatedTorrent := tloAppendNewAfterAndKeepOriginalIntact;
1226+
UpdateTorrent;
1227+
end;
1228+
1229+
procedure TFormTrackerModify.MenuUpdateTorrentAddAfterRemoveOriginalClick(
1230+
Sender: TObject);
11801231
begin
1181-
//User can select to add new tracker before after the original
1182-
FTrackerListOrderForUpdatedTorrent := tloAppendAfter;
1232+
//User have selected to add new tracker.
1233+
FTrackerListOrderForUpdatedTorrent := tloAppendNewAfterAndKeepNewIntact;
11831234
UpdateTorrent;
11841235
end;
11851236

1186-
procedure TFormTrackerModify.MenuUpdateTorrentAddBeforeClick(Sender: TObject);
1237+
procedure TFormTrackerModify.MenuUpdateTorrentAddBeforeRemoveNewClick(Sender: TObject);
1238+
1239+
1240+
begin
1241+
//User have selected to add new tracker.
1242+
FTrackerListOrderForUpdatedTorrent := tloInsertNewBeforeAndKeepOriginalIntact;
1243+
UpdateTorrent;
1244+
end;
1245+
1246+
procedure TFormTrackerModify.MenuUpdateTorrentAddBeforeRemoveOriginalClick(
1247+
Sender: TObject);
11871248
begin
1188-
//User can select to add new tracker before after the original
1189-
FTrackerListOrderForUpdatedTorrent := tloInsertBefore;
1249+
//User have selected to add new tracker.
1250+
FTrackerListOrderForUpdatedTorrent := tloInsertNewBeforeAndKeepNewIntact;
11901251
UpdateTorrent;
11911252
end;
11921253

0 commit comments

Comments
 (0)