Skip to content

Commit 73597f8

Browse files
Issue GerryFerdinandus#19 Randomize tracker order for each torrent file
[ci skip]
1 parent 70fc9a1 commit 73597f8

File tree

3 files changed

+55
-5
lines changed

3 files changed

+55
-5
lines changed

enduser/readme.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,5 @@ Console parameter: -U6
9595
Append new trackers list AFTER, the original trackers list inside the torrent file.
9696
Keep original tracker list unchanged and remove nothing.
9797

98+
Console parameter: -U7
99+
Randomize the trackers list.

source/code/main.lfm

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
object FormTrackerModify: TFormTrackerModify
2-
Left = 1386
2+
Left = 510
33
Height = 607
4-
Top = 210
4+
Top = 224
55
Width = 1179
66
AllowDropFiles = True
77
Caption = 'Bittorrent Tracker Editor'
@@ -16,7 +16,7 @@ object FormTrackerModify: TFormTrackerModify
1616
OnDropFiles = FormDropFiles
1717
OnShow = FormShow
1818
Position = poScreenCenter
19-
LCLVersion = '1.6.0.4'
19+
LCLVersion = '1.6.2.0'
2020
object PageControl: TPageControl
2121
Left = 0
2222
Height = 587
@@ -335,6 +335,10 @@ object FormTrackerModify: TFormTrackerModify
335335
Caption = '&Sort the trackers list by name.'
336336
OnClick = MenuUpdateTorrentSortClick
337337
end
338+
object MenuUpdateRandomize: TMenuItem
339+
Caption = '&Randomize the trackers list.'
340+
OnClick = MenuUpdateRandomizeClick
341+
end
338342
end
339343
object MenuHelp: TMenuItem
340344
Caption = '&Help'

source/code/main.pas

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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');
388395
end;
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+
390404
procedure TFormTrackerModify.MenuItemTorrentFilesTreeHideAllClick(Sender: TObject);
391405
var
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);
20792108
end;
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+
20822126
end.

0 commit comments

Comments
 (0)