Skip to content

Commit

Permalink
Issue #19 Randomize tracker order for each torrent file
Browse files Browse the repository at this point in the history
[ci skip]
  • Loading branch information
GerryFerdinandus committed Apr 27, 2017
1 parent 70fc9a1 commit 73597f8
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 5 deletions.
2 changes: 2 additions & 0 deletions enduser/readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,5 @@ Console parameter: -U6
Append new trackers list AFTER, the original trackers list inside the torrent file.
Keep original tracker list unchanged and remove nothing.

Console parameter: -U7
Randomize the trackers list.
10 changes: 7 additions & 3 deletions source/code/main.lfm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
object FormTrackerModify: TFormTrackerModify
Left = 1386
Left = 510
Height = 607
Top = 210
Top = 224
Width = 1179
AllowDropFiles = True
Caption = 'Bittorrent Tracker Editor'
Expand All @@ -16,7 +16,7 @@ object FormTrackerModify: TFormTrackerModify
OnDropFiles = FormDropFiles
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '1.6.0.4'
LCLVersion = '1.6.2.0'
object PageControl: TPageControl
Left = 0
Height = 587
Expand Down Expand Up @@ -335,6 +335,10 @@ object FormTrackerModify: TFormTrackerModify
Caption = '&Sort the trackers list by name.'
OnClick = MenuUpdateTorrentSortClick
end
object MenuUpdateRandomize: TMenuItem
Caption = '&Randomize the trackers list.'
OnClick = MenuUpdateRandomizeClick
end
end
object MenuHelp: TMenuItem
Caption = '&Help'
Expand Down
48 changes: 46 additions & 2 deletions source/code/main.pas
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,11 @@ interface
// Console parameter: -U6
// Append new trackers list AFTER, the original trackers list inside the torrent file.
// Keep original tracker list unchanged and remove nothing.
tloAppendNewAfterAndKeepOriginalIntactAndRemoveNothing
tloAppendNewAfterAndKeepOriginalIntactAndRemoveNothing,

// Console parameter: -U7
// Randomize the trackers list.
tloRandomize

);

Expand All @@ -97,6 +101,7 @@ TFormTrackerModify = class(TForm)
MenuFileTorrentFolder: TMenuItem;
MenuFileOpenTrackerList: TMenuItem;
MenuHelpReportingIssue: TMenuItem;
MenuUpdateRandomize: TMenuItem;
MenuUpdateTorrentAddBeforeKeepOriginalInstactAndRemoveNothing: TMenuItem;
MenuUpdateTorrentAddAfterKeepOriginalInstactAndRemoveNothing: TMenuItem;
MenuUpdateTorrentAddBeforeRemoveOriginal: TMenuItem;
Expand Down Expand Up @@ -144,6 +149,7 @@ TFormTrackerModify = class(TForm)
procedure MenuFileOpenTrackerListClick(Sender: TObject);
procedure MenuHelpReportingIssueClick(Sender: TObject);
procedure MenuHelpVisitWebsiteClick(Sender: TObject);
procedure MenuUpdateRandomizeClick(Sender: TObject);

//Popup menu in treeview show all/hide all/ individual items selection.
procedure MenuItemTorrentFilesTreeShowAllClick(Sender: TObject);
Expand Down Expand Up @@ -201,6 +207,7 @@ TFormTrackerModify = class(TForm)
FTreeNodeRoot: TTreeNode;
FControlerGridTorrentData: TControlerGridTorrentData;

procedure RandomizeTrackerList(StringList: TStringList);
procedure SanatizeTrackerList(StringList:TStringList);
procedure RemoveTrackersFromList(RemoveList, UpdatedList: TStringList);
procedure UpdateTorrent;
Expand Down Expand Up @@ -387,6 +394,13 @@ procedure TFormTrackerModify.MenuHelpVisitWebsiteClick(Sender: TObject);
OpenURL('https://github.com/GerryFerdinandus/bittorrent-tracker-editor');
end;

procedure TFormTrackerModify.MenuUpdateRandomizeClick(Sender: TObject);
begin
//User can select to randomize the tracker list
FTrackerListOrderForUpdatedTorrent := tloRandomize;
UpdateTorrent;
end;

procedure TFormTrackerModify.MenuItemTorrentFilesTreeHideAllClick(Sender: TObject);
var
i, CountTorrents: integer;
Expand Down Expand Up @@ -655,7 +669,8 @@ procedure TFormTrackerModify.UpdateTorrent;
tloInsertNewBeforeAndKeepOriginalIntact,
tloAppendNewAfterAndKeepNewIntact,
tloAppendNewAfterAndKeepOriginalIntact,
tloSort:
tloSort,
tloRandomize:
begin
//Via popup show user how many trackers are inside the torrent after update.
PopUpMenuStr := 'All torrent file(s) have now ' + IntToStr(CountTrackers) +
Expand Down Expand Up @@ -949,6 +964,7 @@ function TFormTrackerModify.DecodeConsoleUpdateParameter(
4: FTrackerListOrderForUpdatedTorrent := tloSort;
5: FTrackerListOrderForUpdatedTorrent := tloInsertNewBeforeAndKeepOriginalIntactAndRemoveNothing;
6: FTrackerListOrderForUpdatedTorrent := tloAppendNewAfterAndKeepOriginalIntactAndRemoveNothing;
7: FTrackerListOrderForUpdatedTorrent := tloRandomize;
else
begin
//the number is out of range.
Expand Down Expand Up @@ -1292,6 +1308,19 @@ procedure TFormTrackerModify.CombineFiveTrackerListToOne(
FTrackerManualyDeselectedByUserList.Clear;
end;

tloRandomize:
begin
//Randomize

for TrackerStr in FTrackerAddedByUserList do
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);

for TrackerStr in FTrackerFromInsideTorrentFilesList do
AddButIngnoreDuplicates(FTrackerFinalList, TrackerStr);

RandomizeTrackerList(FTrackerFinalList);
end;


else
begin
Expand Down Expand Up @@ -2079,4 +2108,19 @@ procedure TFormTrackerModify.SanatizeTrackerList(StringList: TStringList);
end;


procedure TFormTrackerModify.RandomizeTrackerList(StringList: TStringList);
var
i: integer;
begin
//The order of the string list must be randomize
if StringList.Count > 1 then
begin
Randomize;
for i := 0 to StringList.Count - 1 do
begin
StringList.Exchange(i, Random(StringList.Count));
end;
end;
end;

end.

0 comments on commit 73597f8

Please sign in to comment.