133 lines
2.9 KiB
Plaintext
133 lines
2.9 KiB
Plaintext
{*******************************************************}
|
|
{ }
|
|
{ ManagerUrlData }
|
|
{ }
|
|
{ Copyright (C) 2022 kku }
|
|
{ }
|
|
{*******************************************************}
|
|
|
|
unit ManagerUrlData;
|
|
|
|
interface
|
|
|
|
uses
|
|
Tocsg.Obj, System.SysUtils, System.Classes;
|
|
|
|
type
|
|
TManagerUrlData = class(TTgObject)
|
|
private
|
|
UrlList_,
|
|
CateList_: TStringList;
|
|
public
|
|
Constructor Create;
|
|
Destructor Destroy; override;
|
|
|
|
procedure LoadFromFile(sPath: String);
|
|
|
|
function GetUrlCate(sUrl: String): String;
|
|
function GetUrlCount: Integer;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Tocsg.Safe, Tocsg.Exception;
|
|
|
|
Constructor TManagerUrlData.Create;
|
|
begin
|
|
Inherited Create;
|
|
UrlList_ := TStringList.Create;
|
|
CateList_ := TStringList.Create;
|
|
end;
|
|
|
|
Destructor TManagerUrlData.Destroy;
|
|
begin
|
|
FreeAndNil(CateList_);
|
|
FreeAndNil(UrlList_);
|
|
Inherited;
|
|
end;
|
|
|
|
procedure TManagerUrlData.LoadFromFile(sPath: String);
|
|
var
|
|
DataList: TStringList;
|
|
i, nPos, nIdx: Integer;
|
|
sData, sUrl, sCate: String;
|
|
begin
|
|
UrlList_.Clear;
|
|
CateList_.Clear;
|
|
|
|
try
|
|
if not FileExists(sPath) then
|
|
exit;
|
|
|
|
Guard(DataList, TStringList.Create);
|
|
DataList.LoadFromFile(sPath);
|
|
|
|
for i := 0 to DataList.Count - 1 do
|
|
begin
|
|
sUrl := '';
|
|
sCate := '';
|
|
|
|
sData := Trim(DataList[i]);
|
|
if sData = '' then
|
|
continue;
|
|
|
|
nPos := Pos(' ', sData);
|
|
if nPos <> 0 then
|
|
begin
|
|
sUrl := Copy(sData, 1, nPos - 1);
|
|
Delete(sData, 1, nPos);
|
|
nPos := Pos(' ', sData);
|
|
if nPos <> 0 then
|
|
Delete(sData, 1, nPos);
|
|
sCate := sData;
|
|
|
|
nIdx := CateList_.IndexOf(sCate);
|
|
if nIdx = -1 then
|
|
nIdx := CateList_.Add(sCate);
|
|
UrlList_.AddObject(sUrl.ToLower, TObject(nIdx));
|
|
end;
|
|
end;
|
|
|
|
// UrlList_.Sort;
|
|
except
|
|
on E: Exception do
|
|
ETgException.TraceException(Self, E, 'Fail .. LoadFromFile()');
|
|
end;
|
|
end;
|
|
|
|
function TManagerUrlData.GetUrlCate(sUrl: String): String;
|
|
var
|
|
i, nPos: Integer;
|
|
begin
|
|
Result := 'Unknown';
|
|
try
|
|
if sUrl = '' then
|
|
exit;
|
|
|
|
sUrl := StringReplace(sUrl, 'http://', '', [rfReplaceAll]).ToLower;
|
|
sUrl := StringReplace(sUrl, 'https://', '', [rfReplaceAll]);
|
|
|
|
nPos := Pos('/', sUrl);
|
|
if nPos <> 0 then
|
|
Delete(sUrl, nPos, Length(sUrl) - nPos + 1);
|
|
|
|
for i := 0 to UrlList_.Count - 1 do
|
|
if Pos(UrlList_[i], sUrl) <> 0 then
|
|
begin
|
|
Result := CateList_[Integer(UrlList_.Objects[i])];
|
|
exit;
|
|
end;
|
|
except
|
|
on E: Exception do
|
|
ETgException.TraceException(Self, E, 'Fail .. GetUrlCate()');
|
|
end;
|
|
end;
|
|
|
|
function TManagerUrlData.GetUrlCount: Integer;
|
|
begin
|
|
Result := UrlList_.Count;
|
|
end;
|
|
|
|
end.
|