Sangtacviet Batch Downloader v2_ultrafast
Sangtacviet Batch Downloader v2_ultrafast
Unified Browser + Python + Auto Captcha + Ultra-fast Crawling
기존 Sangtacviet Batch Downloader v2를 기반으로 속도를 극한으로 끌어올리고, 작업 진단 로깅을 대폭 강화한 버전입니다.
v2_ultrafast에서는 기존의 DrissionPage 기반 제어, 캐싱, 이어받기 기능은 그대로 유지하면서 대규모 고속 다운로드 환경에 맞춘 최적화가 적용되었습니다.
사용법 및 대부분의 기능은 이전 v2버전과 완전히 동일합니다.
그리고 쌀국수 사이트 내에 중국어로 된 소제목이 있으며, 원본 템퍼멍키 스크립트는 중국어 소제목으로 다운되는데 왜 이건 안 그러냐던 분이 있었어서 댓글로 답변을 달았는데, 여기에도 다시 적습니다.
‘사이트 내에 중국어 소제목이 있는데 제가 못 찾은 걸 수도 있지만, 그럼에도 불구하고 확실한 건 원본 템퍼멍키 스크립트는 소제목뿐만 아니라 소설 제목까지 베트남어로 가져옵니다.’
가능하시면 본인이 개선해주세요. 저도 가능하면 베트남어 소제목보단 중국어 원문으로 된 소제목이 보고 싶네요.
(소설 제목을 한자로 가져오던 이전 추출기 stv_bulk_extractor도 중국어 원문 소제목이 없는지 소제목은 베트남어로 가져와요.)
aHR0cHM6Ly9raW8uYWMvYy9hMnMtR1BtaVBuTFZyOGxmNlktejhi
1달 국룰
✨ v2 → v2_ultrafast 주요 변경점
1. 초고속 DOM 상태 폴링
기존 v2는 파이썬에서
page.ele를 사용해 브라우저의 요소(본문 텍스트, 팝업, 로딩 문구 등)를 하나씩 순차적으로 찔러보며 확인했기 때문에 페이지 준비를 감지하는 데 미세한 딜레이가 누적되었습니다.Ultra Fast 버전은
quick_state_js라는 자바스크립트 코드를 브라우저에 단 한 번 던져서, 본문의 길이(mainTextLen), 캡챠 팝업 여부(stvCaptcha), 클릭 로드 상태(clickLoad) 등의 모든 상태를 한 번에 긁어오는 방식으로 상태 확인 속도를 비약적으로 단축했습니다.
2. 자체 캡챠 렉 및 무한 로딩 자가 복구
캡챠 인증을 통과했거나 본문 데이터를 받는 중 서버 렉으로 인해 화면이 넘어가지 않고 25초 이상 멈춰버리는 현상에 대한 대응이 추가되었습니다.
딜레이가 임계점을 초과하면 스크립트가 멍때리지 않고 스스로 강제 새로고침(F5)하여 렉을 풀고 작업을 재개합니다.
3. 회차 간 대기 시간 최적화
기존 v2에서는 대기 시간을 4~8초로 지정해도 캡챠 감지 로직 등 여러 부분에 문제가 있어, 병목으로 인해 시간이 추가로 소요되어 1화 당 1분의 시간이 걸렸습니다.
대기 시간을 지정하려면 wait_time = random.uniform(1.0, 3.0)에서 괄호 안의 1.0, 3.0을 원하는 숫자로 바꿔주면 됩니다. (초 단위임)
Ultra Fast 버전에서는 캡챠 감지 로직 등 병목을 일으키던 사항을 대폭 개선하여 전체 다운로드 시간을 혁신적으로 줄였습니다.
(v2 기준 1화당 1분꼴로 소요 / v2_ultrafast 기준 1화당 10초 이내 소요)
⚙️ 시스템 요구사항
필수 환경
OS: Windows 10 / 11
Browser: Google Chrome
Python: Python 3.8 이상
Chrome 원격 디버깅: 포트
9222
Python 패키지
bash
pip install flask flask-cors beautifulsoup4 DrissionPage pydub SpeechRecognition
추가 사항
pydub의 오디오 처리 기능을 사용하므로 시스템 환경에 따라 오디오 디코딩에 필요한 외부 도구를 별도로 준비해야 할 수 있습니다.
winsound를 사용하는 알림 기능이 포함되어 있기 때문에 현재 버전은 Windows 환경을 기준으로 합니다.
🛠️ 설치 방법
1. Python 설치
Python 3.8 이상을 설치합니다.
설치 후 다음 명령으로 확인할 수 있습니다.
bash
python --version
2. 필수 패키지 설치
bash
pip install flask flask-cors beautifulsoup4 DrissionPage pydub SpeechRecognition
3. FFmpeg 설치
FFmpeg를 별도로 설치해야 합니다.
FFmpeg는 Google ReCAPTCHA 오디오 처리 과정에서 MP3 등의 오디오 파일을 WAV로 변환할 때 사용됩니다.
bash
winget install Gyan.FFmpeg4. Tampermonkey 스크립트 설치
크롬에 Tampermonkey 확장프로그램을 설치합니다.
Tampermonkey 대시보드에서
새 스크립트 만들기를 클릭합니다.제공된
// ==UserScript==로 시작하는 자바스크립트 코드를 붙여넣고 저장(Ctrl+S)합니다.
( chrome://extensions/에서 개발자 모드 및 Tampermonkey 세부정보에서 사용자 스크립트 허용 필수)
※ tampermonkey 스크립트 Sangtacviet Batch Downloader (Unified Browser + Python).js는, 이전 버전과 완전히 동일함.
5. Chrome 원격 디버깅 모드 설정
실행 중인 Chrome을 완전히 종료한 뒤 다음과 같이 실행합니다.
bash
chrome.exe --remote-debugging-port=9222
Chrome 바로가기의 대상(Target) 끝에 다음을 추가해두면 편리합니다.
text
--remote-debugging-port=9222
예:
text
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
💻 사용 방법
1. Chrome 실행
원격 디버깅 모드로 Chrome을 실행합니다.
2. Python 서버 실행
bash
python "Sangtacviet_Batch_Downloader_v2_UltraFast.py"
정상 실행 시 다음과 같은 메시지가 표시됩니다.
text
✅ 서버 준비 완료! 포트 15000
3. 다운로드 작업 요청 (Tampermonkey 스크립트 활용)
디버깅 모드로 켜진 크롬에서 쌀국수 사이트의 다운로드 받을 소설 목차 페이지에 접속합니다.
상단에 추가된 컨트롤 바에서 다운로드할 화를 선택(
사이 선택등 활용)합니다.🟡 [🐍 파이썬 봇으로 전송] 버튼을 클릭합니다.
📁 저장 구조
프로그램이 실행되는 폴더를 기준으로 다음과 같은 구조가 만들어집니다.
text
Sangtacviet_Batch_Downloader_v2.py
novel_cache.json
completed_chapters.json
└─ 소설 제목/
├─ 소설 제목_회차 제목 1.txt
├─ 소설 제목_회차 제목 2.txt
├─ 소설 제목_회차 제목 3.txt
├─ download_report_success_2026-08-12_20-15-30.txt
└─ ...
캐시와 완료 내역은 프로그램 폴더에 별도로 저장됩니다.
🔁 여러 소설을 연속으로 처리하는 경우
v2는 소설별로 캐시와 완료 내역을 유지합니다.
예:
text
A소설
↓
A|123
A|124
A|125
B소설
↓
B|123
B|124
다시 A소설
↓
A|123 → 이미 완료 → 스킵
A|124 → 이미 완료 → 스킵
A|125 → 이미 완료 → 스킵
소설이 변경되어도 이전 소설의 캐시가 삭제되지 않으며, 소설 URL과 Chapter ID를 조합하여 각각 독립적으로 관리합니다.
🚨 주의사항
다운로드 작업 중 연결된 Chrome 창이나 현재 작업 탭을 임의로 닫거나 변경하지 않는 것을 권장합니다.
장시간 작업에서는 사이트 응답 속도와 외부 서비스 상태에 따라 전체 처리 시간이 크게 달라질 수 있습니다.
CAPTCHA가 발생하는 경우 자동 처리 여부와 처리 시간은 상황에 따라 달라질 수 있습니다.
자동 처리할 수 없는 인증이 발생하면 사용자의 수동 처리가 필요할 수 있습니다.
novel_cache.json과completed_chapters.json은 이어받기 및 중복 다운로드 방지에 사용되므로 정상적인 작업 중에는 삭제하지 않는 것이 좋습니다.동일한 소설을 다시 다운로드하더라도 기존 파일과 완료 내역이 있으면 해당 회차는 가능한 한 재다운로드하지 않고 스킵합니다.
Google Recaptcha 해제 기능은 작동하지 않을 수 있습니다.
s/ainovel
• 7,083 subscribers- 1. ※번역 요청 규칙※
본문에 원문 또는 후기 혹은 원문과 후기 둘 다 포함 필수. ex. [후기] 검도지로 1~2340 완; 또는 [원문/후기] 검도지로 1~2340 완 그 외 번역 요청은 이 글이 아닌 번역 요청 공지글에 댓글로 작성해주세요. 타 사이트의 자료 요청 금지. ※요청 규칙 미숙지시 7일 차단※
- 2. ※복구 요청 규칙※
원글 링크를 붙여주세요. 복구 자료는 복구 요청글의 링크를 첨부해주세요. 복구 요청은 공유할때까지 도배하지말고 기다려주세요. ※요청 규칙 미숙지시 7일 차단※
- 3. 욕설 및 비속어 금지
욕설, 비하, 혐오, 성적인 발언, 정치적 조롱 등은 일절 금지합니다. 상대를 직접적으로 공격하거나 조롱하는 행위는 즉시 제재 대상이 됩니다.
- 4. 분쟁 자제
의견 충돌이 발생하더라도 인신공격 없이 논리적인 대화 로 해결하도록 합니다. 지속적으로 분쟁을 유발하는 행위는 경고 또는 차단 조치의 대상이 됩니다.
- 5. 게시글 및 댓글 작성 기준
허위정보, 루머, 도배, 낚시성 게시물 은 삭제될 수 있습니다. 컨텐츠 관련 비판은 허용하되, 사람을 향한 비난은 허용되지 않습니다.
- 6. 공유 링크는 base64로 암호화 필수 (즉 본문 링크는 base64로 복호화 필요)
※연재처의 링크는 암호화 대상에서 제외합니다※
- 7. 닉네임 언급 및 친목 금지.