#language pascal

//*******************************
//script_global.txt ȫֹú(¼)
//Create By Djunny @ 09.6.5 : www.mozhua.net
//*******************************


//*******************************
//ִ
//*******************************

//ɱļ±
//begin ...() end.
//ʼִУִϺ
//кģʼִС˵еĵʱеã
//൱¼ƣ


//*******************************
//ú¼˼
//*******************************

//ڲ̶ù̶Ĺ¼
//ͬʱʹùõ¼̡
//img2txtͼƬתֵĹй̶ģͳһת
//Ϳڹúд£
//ÿļȥд(ĶЧ^_^)


//*******************************
//¼עµкܸı䡣
//*******************************
//1function StartDownNew():boolean;
//ڿʼһµ½ڵ֮ǰִеĺ

//2function StartDownImg(var content,imgurl,imgfile,imgtext:string):boolean;
//ڿʼһµͼƬ֮ǰִеĺ

//3function img2txt(filepath,fileurl:string):string;
//ڿʼһµ½ڵ֮ǰִеĺ

//4function BeforeSplitContent(content:string;repeatindex:integer):string;
//ڷ½Դ֮ǰִеԶ庯

//5function AfterSplitContent(content:string;repeatindex:integer):string;
//ڷ½Դִ֮еԶ庯



//*******************************
//ú,Ҫֱӵõ
//*******************************

//1procedure LG(const msg:variant);
//˵msgд־Уʾûʱõ
//ӣ
//LG('~');
//LG(123);

//2function alert(const msg:variant;tp:integer=0;mb:integer=0):integer;
//˵ʾ(Ϊ̰߳ȫмMSG)
//tp(ͼ)ã0(Ϣ)1()2()
//mb(ť)ã0(ȷ)1(ȷȡ)2(ԡ)3(ǡȡ)4(ǡ)5(ԡȡ)
//ӣ
//alert('һС');
//alert('[][]', 2, 4);

//3function Save(const SaveFile,SaveBody:string;const Append:Boolean=false):boolean;
//˵ļ
//SaveFileļ·
//SaveBodyļ
//AppendǷдļ
//ӣ
//ļдһ
//APPPATHǸȫ·
//APPPATH	Ŀ¼ҲAPPPATH(1)
//APPPATH(2)	ģĿ¼(template)
//APPPATH(3)	ʷĿ¼(histroy)
//APPPATH(4)	ļĿ¼(siteconfig)
//APPPATH(5)	ļĿ¼(core)
//save(APPPATH+'html.txt', 'ݣ',true);

//4procedure Stop;
//˵ֹͣǰ

//5function IsStop:boolean;
//˵ȡǰǷֹͣ

//6procedure ClearDownCache;
//˵صĻ
//עʱЩվҪһҳȡCOOKIEܷʣ
//ڸֵCOOKIE֮ǰñջ档

//7function F(key:string;dft:string='';Site:String='';save:boolean=false):variant;
//˵ȡվļѡֵ
//keyվļ  ѡµ ѡ
//dftûлȡֵ򷵻صĬֵ
//siteΪǰվļеֵ򽫻ȡsiteļֵ
//saveĬΪд룬saveΪtrueʱ,Ϊѡkeydftֵ
//1
//ȡǰվļе Cookie ֵ
//pascal﷨
{
var cookie:string;
begin
cookie:=F('Cookie');
վļѡ Cookie
F('Cookie','abc=123','',true);
end.
}

//JS﷨
//var cookie=F('Cookie');

//2
//ȡ QQԭѡ
{
var siteurl:string;
begin
siteurl:=F('վַ','','QQԭ');
end.
}


//8function Down(const AUrl:string;CharSet:string='';const method:string='GET';const PostPra:string='';const SaveFile:string=''):string;
//˵ص
//AUrlҪصĵַ
//charset: Ŀı롣֧utf-8\BIG5,ĬΪGB2312
//methodȡķʽ֧GETPOSTHEAD
//PosPraPOSTʱҪύֵ֧ύļ,ʽa=1&b=2&c=3&f=file:c:\a.txt
//savefileغֱӱ·ĿΪͼƬýʱҪֱӱ棩
//
{
begin
	ClearDownCache;//ǰػ
	_GET.cookie := 'a=1;b=2';//ָCOOKIE
	//ύs=0fΪc:\123.txtļ󣬽õݱ浽a.dat
	Down('http://www.xxx.com/downsoft.php', '', 'POST', 's=0&f=file:c:\123.txt', 'C:\a.dat');
end.
}

//9function Html2Txt(const s: String;const freespace:Integer;useIE:Boolean=false):String;
//˵HTMLԴȥǩתtxtʽ
//sĿHTMLԴ
//freespaceѹʣ0ѹ1ѹհУ2ѹհס
//useIEǷʹIEн&#12321;ʱҪIEн
//
{
begin
	html2txt('<p>asdbasdf<br>12312<div>321</div></p>',0);
end.
}


//*******************************
//ñ
//*******************************
//ı
//عвıı

//_RegExp			΢ʽ
{
ԣ
//ʽ
Pattern		: string;
з
//滻
function Replace(Source,Wstr:variant):String
//
function Test(Source:variant):boolean
//ִƥ
function Execute(Source:variant):IDispatch
}
//ʽʹӣ
{
var nobr : boolean;
var i	 : integer;
var body : string;
var Matchs : variant;
begin
	body := '@nobr3213123@nobr;';
	//JS﷨ס\Ҫ˫д
	_RegExp.Pattern	:= '(\r\n)?@nobr';
	//Ƿɹ
	if _RegExp.Test(body) then
	begin
		Matchs	:= _RegExp.Execute(body);
		//ȡƥ
		for i:=0 to Matchs.count-1 do
			LG(Matchs.Item[i].Value);
		//滻@nobr滻__
		body := _RegExp.replace(body, '__');
	end;
end.
}



//_DATAID(integer)		ǰdataid(history.mdb 7txt_dataпɲ)

{_GET(ThttpDownLoad)		HttpDownLoadصһ
(ͷ)
COOKIE		: string;
FROM		: string;
REFERER		: string;
ANENT		: string;
CONTENTTYPE	: string;
USERAGENT	: string;
ACCEPTCHARSET	: string;
ACCEPTENCODING	: string;
ACCEPTLANGUAGE  : string;
ACCEPT		: string;
صķ

}

{_Data(TDataObj)		󣬿ͨȡǰϢ
ԣ
	ID          : Integer;
	Name        : string;
	Url         : string;
	Site        : string;
	Comfrom     : string;
	OuterSite   : boolean;
	TypeName    : integer;
	SaveInOne   : boolean;
	SourceCount : integer;
	WordCount   : integer;
	SaveExt     : string;
	SaveDir     : string;
	AddTime     : TDateTime;
	DownTime    : TDateTime;
	DownPre     : integer;
	ShareTxt    : string;
	Info        : string;
	TmpFile     : string;
	DownImg     : boolean;
	PostUrl     : string;
()
_data.Name
}
//_RegExp(TRegExp)		ʽ󣬷ַʱõ

//ÿһ½ǰ¸ֵһεı
//_SourceIndex:integer 		ǰص½Ŀ¼
{
_NowSource	: TSourceObj	ǰص½ڽṹ
ԣ
	id          : integer;
	Name        : string;
	Url         : string;
	Dataid      : integer;
	UpTime      : TDateTime;
	WillDown    : boolean;
	IsDown      : boolean;
	ErrDown     : boolean;
	des         : integer;
	WordCount   : integer;
(õǰص½):
_nowsources.name
}

//ڼ⵱ǰվļĺǷ
var
	hasSDN		: boolean;//Ƿпʼһµ½ִеĺ
	hasSDI		: boolean;//ǷпʼһµͼƬִеĺ
	hasimg2txt	: boolean;//ǷOCR
	hasBSC		: boolean;//Ƿзǰ
	hasASC		: boolean;//Ƿзݺ


//ʼִ	ڿʼһµ½ڵ֮ǰִеĺ
//true	˵½طѾԶ庯
//false	˵ҪϵͳĹ̽ء
//ע
//trueʱ
//ҪصݣһΪģ
//뷵ؽtrue,ΪContentֵ,true
//½ڽٵϵͳعֱ̣ӽз
//ҪصݣһΪģ
//nosavetrueʱ
//Ͳִб浱ǰص½ˡ
function StartDownNew(var content:string;var nosave:boolean):boolean;
begin
	result := false;
	if hasSDN then
	begin
		result := FUN_CALL('MyStartDownNew', content, nosave);
	end;
end;

//ʼִ	ͼƬתTXTOCR
//		OCRԺַ_none_ʹûת
//		filepath:ͼƬ·أ
//		fileurl:ͼƬַԶ̣
function img2txt(filepath, fileurl:string):string;
begin
	result := '_none_';
	if hasimg2txt then//ãǰվļзͼƬת
	begin
		result := FUN_CALL('myimg2txt', filepath, fileurl);
	end
	else begin//õķδʵ,뷨ǴOLEOCR
	end;
end;


//ʼִ	ڿʼͼƬ֮ǰ
//		ǷҪϵͳͼƬ
//		content:ǰ½ڵԴ루ر޸ĹĴ룩
//		imgurl:ǰͼƬַ(µͼƬַ)
//		imgfile:ǰͼƬļرļ
//		imgtext:ǰͼƬOCR,سԽͼƬ˵(ĬΪ_none_,ÿռɽͼƬ)
function StartDownImg(var content,imgurl,imgfile,imgtext:string):boolean;
begin
	if hasSDI then//ãǰվļзԴ
	begin
		result := FUN_CALL('MyStartDownImg', content, imgurl, imgfile, imgtext);
	end
	else begin//õķ
		result := false;
	end;
end;



//ʼִ	ڷ½Դ֮ǰִеԶ庯
//		ѴԴ
//		content:ǰ½ڵԴ루δ޸ĹԴ룬ɷطĴ룩
//		repeatindex:ǰص
function BeforeSplitContent(var content:string;repeatindex:integer):boolean;
begin
	result := hasBSC;
	if hasBSC then//ãǰվļзԴ
	begin
		FUN_CALL('MyBeforeSplitContent', content, repeatindex);
	end
	else begin//õķ
	end;
end;

//ʼִ	ڷ½Դִ֮еԶ庯
//		ѴԴ
//		content:ǰ½ڵԴ루δ޸ĹԴ룬ɷطĴ룩
//		fileurl:صĵַԶ̣
//		repeatindex:ǰص
function AfterSplitContent(var content:string;repeatindex:integer):boolean;
begin
	result := hasASC;
	if hasASC then//ãǰվļзԴ
	begin
		FUN_CALL('MyAfterSplitContent', content, repeatindex);
	end
	else begin//õķ
	end;
end;

//óʼĹ
begin
	hasSDN     := FUN_EXISTS('MYStartDownNew');
	hasSDI     := FUN_EXISTS('MYStartDownImg');
	hasimg2txt := FUN_EXISTS('MYIMG2TXT');
	hasBSC     := FUN_EXISTS('MybeforeSplitContent');
	hasASC     := FUN_EXISTS('MYAFTERSPLITCONTENT');
end.