malemkhoang
Rìu Chiến
Mã:
#Region Include
#include <IE.au3>
#include <Array.au3>
#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <String.au3>
#include "StringConstants.au3"
#EndRegion Include
#EndRegion (c) malemkhoang
#Region Code
#Region Declare
Local $sURL ; chứa địa chỉ truyện
Local $s1 ; chứa nội dung trang web đọc về
Local $ss1 ; chứa kết quả trung gian
Local $acoso[1] = ["CS"] ; mảng 1 chiều cơ sở
Local $atemp ; mảng một chiều trung gian
Local $aketqua ; mảng một chiều chứa kết quả
#EndRegion Declare
#Region Main Code
Local $hTimer = TimerInit()
;_URLePub(1, 18000) ; All 18000; 1-2000, 2001-4000, 4001-6000, 6001-8000, 8001-10000, 10001-12000, 12001-14000, 14001-16000, 16001-18000 (01): không nên chạy lệnh này (Time ~6h)
_URLePub(1, 2000) ;L1 Time ~38' (02): chạy lần lượt từ lệnh này...
;_URLePub(2001, 4000) ;L2 Time ~38' (03)
;_URLePub(4001, 6000) ;L3 Time ~38' (04)
;_URLePub(6001, 8000) ;L4 Time ~38' (05)
;_URLePub(8001, 10000) ;L5 Time ~38' (06)
;_URLePub(10001, 12000) ;L6 Time ~38' (07)
;_URLePub(12001, 14000) ;L7 Time ~38' (08)
;_URLePub(14001, 16000) ;L8 Time ~38' (09)
;_URLePub(16001, 18000) ;L9 Time ~38' (10): ... đến lệnh này và không đóng "Cửa sổ kết quả..."
;trên "Cửa sổ kết quả...", nhấn "Copy Data Only", dán vào NotePad, chỉnh sửa lại một chút...
;đem qua cho IDM nó tải cả loạt.
;_URLePub(18001, 20000)
;_URLePub(20001, 22000)
;_URLePub(22001, 24000)
Local $fDiff = TimerDiff($hTimer)
Local $giay = $fDiff / 1000
Local $phut = $giay / 60
_ArrayDisplay($aketqua, "[Cửa sổ kết quả] Thời gian thực hiện: " & Round($phut) & " phút")
Exit
#EndRegion Main Code
#Region Functions
Func _URLePub($csdau, $cscuoi)
; Duyệt qua toàn bộ các địa chỉ truyện theo chỉ số
; Đọc trang địa chỉ truyện và tìm địa chỉ Epub
; Lưu kết quả tìm được vào mảng 1 chiều
; Input:
; csdau: chỉ số đầu
; cscuoi: chỉ số cuối
; Output: None
$aketqua = $acoso
$aketqua[0] = "URL Epub Lẻ: " & $csdau & "đến " & $cscuoi
For $i = $csdau to $cscuoi ; khoảng 18000 chỉ số địa chỉ truyện (tính đến 10/10/2020)
$sURL = _sinhURL($i) ; tạo địa chỉ truyện từ chỉ số
$s1 = InetRead($sURL) ; đọc trang web theo địa chỉ truyện
If $s1 = "" then ContinueLoop ; nếu kết quả rỗng thì bỏ qua
$s1 = BinaryToString($s1, 4) ; chuyển chuỗi nhị phân thành chuỗi Unicode
$ss1 = StringRegExpReplace($s1, '[\r\n\t]', "") ; kỹ thuật Reg dồn thành chuỗi liền
$atemp = StringRegExp($ss1, '(?i)<h3 class="mucluc"><a href=.*?epub">', 3) ; kỹ thuật Reg
If IsArray($atemp) then $atemp = _StringBetween($atemp[0], 'href="', '"') ; lấy ra địa chỉ Epub
If IsArray($atemp) then _ArrayAdd($aketqua, $atemp[0]) ; thêm vào mảng kết quả
;If IsArray($atemp) then _taiEpub($atemp[0])
Next
;_ArrayDisplay($aketqua, "Kết quả")
EndFunc ;==>_URLePub()
;++++++++++++++++++++++++++++++++++++++++++
Func _sinhURL($index)
;Tạo địa chỉ truyện từ chỉ số
;Input: chỉ số truyện (1 đến 18000 và tiếp tục tăng)
;Output: địa chỉ truyện theo khuôn dạng của vnthuquan
;Dạng địa chỉ truyện: https://vnthuquan.net/truyen/truyen.aspx?tid=2qtqv3m3237nvn31n343tq83a3q3m3237nvn
Local $chuyenma
Local $sangU
$chuyenma = _Mahoa($index) ; UDF
$sangU = "https://vnthuquan.net/truyen/truyen.aspx?tid=2qtqv3m3237n" & $chuyenma & "31n343tq83a3q3m3237nvn"
Return $sangU
EndFunc ;==> _sinhURL()
;++++++++++++++++++++++++++++++++++++++++++
Func _Mahoa($sma)
;mã hóa chuỗi ký tự số thành chuỗi ký tự mã theo cách mã hóa của vnthuquan
;Input: chuỗi ký tự số
;Output: chuỗi ký tự mã
Local $schuoima
Local $atach
$atach = _StringExplode($sma, "", 0)
For $i = 0 to Ubound($atach, $UBOUND_ROWS) - 1
Select
Case $atach[$i] = "0"
$atach[$i] = "0n"
Case $atach[$i] = "1"
$atach[$i] = "vn"
Case $atach[$i] = "2"
$atach[$i] = "1n"
Case $atach[$i] = "3"
$atach[$i] = "nn"
Case $atach[$i] = "4"
$atach[$i] = "2n"
Case $atach[$i] = "5"
$atach[$i] = "tn"
Case $atach[$i] = "6"
$atach[$i] = "3n"
Case $atach[$i] = "7"
$atach[$i] = "qn"
Case $atach[$i] = "8"
$atach[$i] = "4n"
Case $atach[$i] = "9"
$atach[$i] = "mn"
EndSelect
Next
$schuoima = _ArrayToString($atach, "", 0, Ubound($atach, $UBOUND_ROWS) - 1)
;_ArrayDisplay($atach, "Mã: " & $sma)
Return $schuoima
EndFunc ;==> _Mahoa()
;++++++++++++++++++++++++++++++++++++++++++++++++++++
Func _taiEpub($urlEpub)
Local $tenEpub, $urlE = $urlEpub
$tenEpub = StringReplace($urlEpub, "https://vnthuquan.net/userfiles/files/epub/", "")
If @extended = 0 then
$tenEpub = StringReplace($urlEpub, "http://thuvien.vnthuquan.net/ckfinder/core/connector/asp/connector.asp?command=DownloadFile&type=Files¤tFolder=%2Fepub%2F&langCode=en&hash=c8f3e6fed27ad73c&FileName=", "")
$urlE = "https://vnthuquan.net/userfiles/files/epub/" & $tenEpub
EndIf
$tenEpub = StringReplace($tenEpub, "%20", " ")
Local $sduongdan = @ScriptDir & "\EpubLEvnthuquan\" ; đường dẫn nơi chứa Epub
If NOT FileExists($sduongdan) then DirCreate($sduongdan)
Local $hDownload = InetGet($urlE, $sduongdan & $tenEpub, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
Do
Sleep(250)
Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
InetClose($hDownload)
EndFunc ;==> _taiEpub()
#EndRegion Functions
#EndRegion Code