Skip to content

Commit 22d6312

Browse files
feat: add ngosang_trackerlist.pas
1 parent a8f686b commit 22d6312

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
unit ngosang_trackerslist;
2+
3+
{
4+
Use api from ngosang to get tracker list that are working or not.
5+
see: https://github.com/ngosang/trackerslist
6+
}
7+
{$mode objfpc}{$H+}
8+
9+
interface
10+
11+
uses
12+
Classes, SysUtils;
13+
14+
type
15+
16+
17+
{ TNewTrackon }
18+
19+
//All the type of tracker list.
20+
Tngosang_List = (
21+
ntl_URL_Blacklist,//< Download from internet
22+
ntl_URL_All,//< Download from internet
23+
ntl_URL_All_HTTP,//< Download from internet
24+
ntl_URL_All_HTTPS,//< Download from internet
25+
ntl_URL_All_IP,//< Download from internet
26+
ntl_URL_All_UDP,//< Download from internet
27+
ntl_URL_Best,//< Download from internet
28+
ntl_URL_Best_IP//< Download from internet
29+
);
30+
31+
{ TngosangTrackerList }
32+
33+
TngosangTrackerList = class
34+
private
35+
FTRackerList: array [Tngosang_List] of TStringList;
36+
37+
procedure DownloadTracker(ngosang_List: Tngosang_List);
38+
39+
public
40+
41+
property TrackerList_Blacklist: TStringList read FTRackerList[ntl_URL_Blacklist];
42+
43+
property TrackerList_All: TStringList read FTrackerList[ntl_URL_All];
44+
45+
property TrackerList_All_HTTP: TStringList read FTrackerList[ntl_URL_All_HTTP];
46+
47+
property TrackerList_All_HTTPS: TStringList read FTrackerList[ntl_URL_All_HTTPS];
48+
49+
property TrackerList_All_IP: TStringList read FTrackerList[ntl_URL_All_IP];
50+
51+
property TrackerList_All_UDP: TStringList read FTrackerList[ntl_URL_All_UDP];
52+
53+
property TrackerList_Best: TStringList read FTrackerList[ntl_URL_Best];
54+
55+
property TrackerList_Best_IP: TStringList read FTrackerList[ntl_URL_Best_IP];
56+
57+
//Download all the trackers via API
58+
function DownloadTrackers: boolean;
59+
60+
//create/destroy class object
61+
constructor Create;
62+
destructor Destroy; override;
63+
end;
64+
65+
implementation
66+
67+
uses fphttpclient, LazUTF8, torrent_miscellaneous;
68+
69+
const
70+
URL: array [Tngosang_List] of string =
71+
(//Warning: the URL strings must be in the same order as Tngosang_List
72+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/blacklist.txt',
73+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt',
74+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_http.txt',
75+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_https.txt',
76+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_ip.txt',
77+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_udp.txt',
78+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt',
79+
'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best_ip.txt'
80+
);
81+
82+
{ TngosangTrackerList }
83+
procedure TngosangTrackerList.DownloadTracker(ngosang_List: Tngosang_List);
84+
begin
85+
//download via URL and put the data in the TrackerList
86+
FTRackerList[ngosang_List].DelimitedText :=
87+
TFPCustomHTTPClient.SimpleGet(URL[ngosang_List]);
88+
89+
//Clean up the tracker list
90+
SanatizeTrackerList(FTRackerList[ngosang_List]);
91+
end;
92+
93+
94+
function TngosangTrackerList.DownloadTrackers: boolean;
95+
var
96+
i: Tngosang_List;
97+
begin
98+
try
99+
//download all the list one by one
100+
for i in Tngosang_List do
101+
begin
102+
DownloadTracker(i);
103+
end;
104+
105+
Result := True;
106+
except
107+
//No OpenSSL or web server is down
108+
Result := False;
109+
end;
110+
end;
111+
112+
constructor TngosangTrackerList.Create;
113+
var
114+
i: Tngosang_List;
115+
begin
116+
//Create all the TStringList
117+
for i in Tngosang_List do
118+
begin
119+
FTrackerList[i] := TStringList.Create;
120+
FTrackerList[i].Duplicates := dupIgnore;
121+
end;
122+
end;
123+
124+
destructor TngosangTrackerList.Destroy;
125+
var
126+
i: Tngosang_List;
127+
begin
128+
//Release all the TStringList
129+
for i in Tngosang_List do
130+
begin
131+
FTrackerList[i].Free;
132+
end;
133+
134+
inherited Destroy;
135+
end;
136+
137+
end.
138+

0 commit comments

Comments
 (0)