@@ -76,7 +76,11 @@ interface
7676 // Console parameter: -U6
7777 // Append new trackers list AFTER, the original trackers list inside the torrent file.
7878 // Keep original tracker list unchanged and remove nothing.
79- tloAppendNewAfterAndKeepOriginalIntactAndRemoveNothing
79+ tloAppendNewAfterAndKeepOriginalIntactAndRemoveNothing,
80+
81+ // Console parameter: -U7
82+ // Randomize the trackers list.
83+ tloRandomize
8084
8185 );
8286
@@ -97,6 +101,7 @@ TFormTrackerModify = class(TForm)
97101 MenuFileTorrentFolder: TMenuItem;
98102 MenuFileOpenTrackerList: TMenuItem;
99103 MenuHelpReportingIssue: TMenuItem;
104+ MenuUpdateRandomize: TMenuItem;
100105 MenuUpdateTorrentAddBeforeKeepOriginalInstactAndRemoveNothing: TMenuItem;
101106 MenuUpdateTorrentAddAfterKeepOriginalInstactAndRemoveNothing: TMenuItem;
102107 MenuUpdateTorrentAddBeforeRemoveOriginal: TMenuItem;
@@ -144,6 +149,7 @@ TFormTrackerModify = class(TForm)
144149 procedure MenuFileOpenTrackerListClick (Sender: TObject);
145150 procedure MenuHelpReportingIssueClick (Sender: TObject);
146151 procedure MenuHelpVisitWebsiteClick (Sender: TObject);
152+ procedure MenuUpdateRandomizeClick (Sender: TObject);
147153
148154 // Popup menu in treeview show all/hide all/ individual items selection.
149155 procedure MenuItemTorrentFilesTreeShowAllClick (Sender: TObject);
@@ -201,6 +207,7 @@ TFormTrackerModify = class(TForm)
201207 FTreeNodeRoot: TTreeNode;
202208 FControlerGridTorrentData: TControlerGridTorrentData;
203209
210+ procedure RandomizeTrackerList (StringList: TStringList);
204211 procedure SanatizeTrackerList (StringList:TStringList);
205212 procedure RemoveTrackersFromList (RemoveList, UpdatedList: TStringList);
206213 procedure UpdateTorrent ;
@@ -387,6 +394,13 @@ procedure TFormTrackerModify.MenuHelpVisitWebsiteClick(Sender: TObject);
387394 OpenURL(' https://github.com/GerryFerdinandus/bittorrent-tracker-editor' );
388395end ;
389396
397+ procedure TFormTrackerModify.MenuUpdateRandomizeClick (Sender: TObject);
398+ begin
399+ // User can select to randomize the tracker list
400+ FTrackerListOrderForUpdatedTorrent := tloRandomize;
401+ UpdateTorrent;
402+ end ;
403+
390404procedure TFormTrackerModify.MenuItemTorrentFilesTreeHideAllClick (Sender: TObject);
391405var
392406 i, CountTorrents: integer;
@@ -655,7 +669,8 @@ procedure TFormTrackerModify.UpdateTorrent;
655669 tloInsertNewBeforeAndKeepOriginalIntact,
656670 tloAppendNewAfterAndKeepNewIntact,
657671 tloAppendNewAfterAndKeepOriginalIntact,
658- tloSort:
672+ tloSort,
673+ tloRandomize:
659674 begin
660675 // Via popup show user how many trackers are inside the torrent after update.
661676 PopUpMenuStr := ' All torrent file(s) have now ' + IntToStr(CountTrackers) +
@@ -949,6 +964,7 @@ function TFormTrackerModify.DecodeConsoleUpdateParameter(
949964 4 : FTrackerListOrderForUpdatedTorrent := tloSort;
950965 5 : FTrackerListOrderForUpdatedTorrent := tloInsertNewBeforeAndKeepOriginalIntactAndRemoveNothing;
951966 6 : FTrackerListOrderForUpdatedTorrent := tloAppendNewAfterAndKeepOriginalIntactAndRemoveNothing;
967+ 7 : FTrackerListOrderForUpdatedTorrent := tloRandomize;
952968 else
953969 begin
954970 // the number is out of range.
@@ -1292,6 +1308,19 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
12921308 FTrackerManualyDeselectedByUserList.Clear;
12931309 end ;
12941310
1311+ tloRandomize:
1312+ begin
1313+ // Randomize
1314+
1315+ for TrackerStr in FTrackerAddedByUserList do
1316+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
1317+
1318+ for TrackerStr in FTrackerFromInsideTorrentFilesList do
1319+ AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);
1320+
1321+ RandomizeTrackerList(FTrackerFinalList);
1322+ end ;
1323+
12951324
12961325 else
12971326 begin
@@ -2079,4 +2108,19 @@ procedure TFormTrackerModify.SanatizeTrackerList(StringList: TStringList);
20792108end ;
20802109
20812110
2111+ procedure TFormTrackerModify.RandomizeTrackerList (StringList: TStringList);
2112+ var
2113+ i: integer;
2114+ begin
2115+ // The order of the string list must be randomize
2116+ if StringList.Count > 1 then
2117+ begin
2118+ Randomize;
2119+ for i := 0 to StringList.Count - 1 do
2120+ begin
2121+ StringList.Exchange(i, Random(StringList.Count));
2122+ end ;
2123+ end ;
2124+ end ;
2125+
20822126end .
0 commit comments