Chia sẻ - Mã nguồn AutoIT tải Epub lẻ của vnthuquan | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Chia sẻ Mã nguồn AutoIT tải Epub lẻ của vnthuquan

malemkhoang

Rìu Vàng Đôi
logo_autoit_210x72.svg
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&currentFolder=%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

TIEUDE2a.png
 

Attachments

  • TimEpubLE-1.au3.txt
    5.5 KB · Lượt xem: 30

malemkhoang

Rìu Vàng Đôi
cái này để làm gì vậy bạn mình chưa hiểu?
==========

Đây là một ứng dụng nho nhỏ, được viết bằng ngôn ngữ lập trình AutoIT, dùng để tìm địa chỉ các Epub lẻ trong toàn bộ khoảng 18000 địa chỉ truyện (đến 10/10/2020) của vnthuquan. Kết quả đạt được là một danh sách toàn bộ các Epub lẻ do vnthuquan đã tạo ra từ thời thượng cổ cho đến bây giờ (khoảng 320 Epub và còn tiếp tục tăng). Ai là người mê Epub sẽ rất thích thú vì điều này. Ai là người biết AutoIT sẽ thấy "quả trứng phục sinh" trong cái đống ký tự lổn ngổn mã nguồn đó.
 


Top