Name: Anonymous 2010-08-03 14:34
baseurl$="http://dis.4chan.org/":listurl$="list/":readurl$="read/":i=0:Dim Res$(0):Dim Res2$(0):chandelay=3000:
Macro regex(number,pattern)::If CreateRegularExpression(number,pattern) ::Else:PrintN ("Regexp error:"+RegularExpressionError())::EndIf:EndMacro:
Macro find(regexnumber,string,resultarray):ExtractRegularExpression(regexnumber, string, resultarray):EndMacro
Macro strlen(string) :StringByteLength(string,#PB_Ascii):EndMacro
Macro strrep(regexnum, string, newtext):ReplaceRegularExpression(regexnum, string, newtext):EndMacro:
InitNetwork():OpenConsole():arg1$=ProgramParameter():url$=baseurl$+arg1$+"/":
If Not CountProgramParameters() :Print("Shiiarchiver 1.0 syntax: Shii [prog|sci|anime] "+Chr(13)+"saved to directories:"+readurl$+arg1$+" and "+arg1$):End:EndIf
header$=GetHTTPHeader(url$):regex(0,"200 OK"):If MatchRegularExpression(0,header$)::
Else:PrintN("Error: bad server response for: "+url$):Print(header$ ):End 2:EndIf:
 CreateDirectory(readurl$) : CreateDirectory(readurl$+arg1$):CreateDirectory(arg1$):
regex(1,readurl$+arg1$+"/\d+"):regex(2,"\d+"):
Repeat:listpage$=baseurl$+listurl$+arg1$+"/"+Str(i):
header$=GetHTTPHeader(listpage$):If MatchRegularExpression(0,header$)::Else:PrintN("Stopping: bad server response for: "+url$):Print(header$ ):End 10:EndIf:
ReceiveHTTPFile(url$, arg1$+"\list"+Str(i)+".htm"):PrintN("Archiving page:"+Str(i)):
If ReadFile(0, arg1$+"\list"+Str(i)+".htm"):While Eof(0) = 0:srctext$=ReadString(0):
dlnum=ExtractRegularExpression(1,srctext$,res$()):For k=0 To dlnum-1: dlpage$=baseurl$+res$(k):
ExtractRegularExpression(1,res$(k),res2$()):;update mode
If FileSize(res2$(0)+".htm")>0:
If RenameFile(res2$(0)+".htm",res2$(0)+".htm2"):
If ReceiveHTTPFile(dlpage$,res2$(0)+".htm"):PrintN("Updating thread:"+dlpage$):Delay(chandelay):
If FileSize(res2$(0)+".htm")>FileSize(res2$(0)+".htm2"):DeleteFile(res2$(0)+".htm2"):
Else:DeleteFile(res2$(0)+".htm"):RenameFile(res2$(0)+".htm2",res2$(0)+".htm")::EndIf:
Else:PrintN("Update:"+res2$(0)+".htm"+" Cannot be downloaded"):EndIf:
:Else:PrintN("Cannot update file:"+res2$(0)+".htm"):EndIf:
Else: If ReceiveHTTPFile(dlpage$,res2$(0)+".htm"):
PrintN("Archiving thread:"+dlpage$):Delay(chandelay):
Else:PrintN("File:"+baseurl$+res$(k)+" Cannot be downloaded"):EndIf::EndIf:
Next:Wend: CloseFile(0): EndIf::i=i+1:ForEver:
Macro regex(number,pattern)::If CreateRegularExpression(number,pattern) ::Else:PrintN ("Regexp error:"+RegularExpressionError())::EndIf:EndMacro:
Macro find(regexnumber,string,resultarray):ExtractRegularExpression(regexnumber, string, resultarray):EndMacro
Macro strlen(string) :StringByteLength(string,#PB_Ascii):EndMacro
Macro strrep(regexnum, string, newtext):ReplaceRegularExpression(regexnum, string, newtext):EndMacro:
InitNetwork():OpenConsole():arg1$=ProgramParameter():url$=baseurl$+arg1$+"/":
If Not CountProgramParameters() :Print("Shiiarchiver 1.0 syntax: Shii [prog|sci|anime] "+Chr(13)+"saved to directories:"+readurl$+arg1$+" and "+arg1$):End:EndIf
header$=GetHTTPHeader(url$):regex(0,"200 OK"):If MatchRegularExpression(0,header$)::
Else:PrintN("Error: bad server response for: "+url$):Print(header$ ):End 2:EndIf:
 CreateDirectory(readurl$) : CreateDirectory(readurl$+arg1$):CreateDirectory(arg1$):
regex(1,readurl$+arg1$+"/\d+"):regex(2,"\d+"):
Repeat:listpage$=baseurl$+listurl$+arg1$+"/"+Str(i):
header$=GetHTTPHeader(listpage$):If MatchRegularExpression(0,header$)::Else:PrintN("Stopping: bad server response for: "+url$):Print(header$ ):End 10:EndIf:
ReceiveHTTPFile(url$, arg1$+"\list"+Str(i)+".htm"):PrintN("Archiving page:"+Str(i)):
If ReadFile(0, arg1$+"\list"+Str(i)+".htm"):While Eof(0) = 0:srctext$=ReadString(0):
dlnum=ExtractRegularExpression(1,srctext$,res$()):For k=0 To dlnum-1: dlpage$=baseurl$+res$(k):
ExtractRegularExpression(1,res$(k),res2$()):;update mode
If FileSize(res2$(0)+".htm")>0:
If RenameFile(res2$(0)+".htm",res2$(0)+".htm2"):
If ReceiveHTTPFile(dlpage$,res2$(0)+".htm"):PrintN("Updating thread:"+dlpage$):Delay(chandelay):
If FileSize(res2$(0)+".htm")>FileSize(res2$(0)+".htm2"):DeleteFile(res2$(0)+".htm2"):
Else:DeleteFile(res2$(0)+".htm"):RenameFile(res2$(0)+".htm2",res2$(0)+".htm")::EndIf:
Else:PrintN("Update:"+res2$(0)+".htm"+" Cannot be downloaded"):EndIf:
:Else:PrintN("Cannot update file:"+res2$(0)+".htm"):EndIf:
Else: If ReceiveHTTPFile(dlpage$,res2$(0)+".htm"):
PrintN("Archiving thread:"+dlpage$):Delay(chandelay):
Else:PrintN("File:"+baseurl$+res$(k)+" Cannot be downloaded"):EndIf::EndIf:
Next:Wend: CloseFile(0): EndIf::i=i+1:ForEver: