Doujin Archiver v2.0 - タイムアウト機能で安定性が向上
2025-10-04
No More Hanging Downloads
整理されたファイル名によるコレクション管理
アップデート内容
同人誌自動ダウンロードツール「Doujin Archiver」をv2.0にアップデートしました。今回のアップデートでは、ユーザーの皆様からご要望の多かったダウンロードタイムアウト機能を実装しました。
v1.0での課題
初版リリース後、以下のような問題が報告されていました:
- 大容量のPDFファイルのダウンロード中にスクリプトが長時間停止する
- 通信が不安定な環境で、特定のファイルで処理が進まなくなる
これらの問題により、せっかく自動化したにも関わらず、手動での介入が必要になるケースがありました。
v2.0の改善:タイムアウト機能
実装内容
1つのPDFダウンロードに5分以上かかる場合、自動的にスキップして次のファイルに進むようにしました。
主な仕様:
- ダウンロード開始から5分経過すると自動的に中断
- 不完全なファイルは自動削除(ディスク容量を無駄にしない)
- スキップされたファイルはログに記録
- 処理完了時にスキップ数を表示
技術的な実装:
DOWNLOAD_TIMEOUT = 300 # 5分
start_time = time.time()
for chunk in pdf_response.iter_content(chunk_size=8192):
elapsed_time = time.time() - start_time
if elapsed_time > DOWNLOAD_TIMEOUT:
logging.warning(f'ダウンロードタイムアウト ({elapsed_time:.1f}秒経過)')
os.remove(filepath) # 不完全なファイルを削除
return False
f.write(chunk)実際の効果
v2.0導入後の変化:
| 項目 | v1.0 | v2.0 |
|---|---|---|
| スクリプト停止 | 週1-2回発生 | なし |
| 自動実行完了率 | 約80% | 100% |
| 平均実行時間 | 不定(最大数時間) | 約15-20分 |
特に夜間の自動実行が確実に完了するようになり、朝起きたら新着が全てダウンロードされているという理想的な運用が実現しました。
ログ出力例
2025-10-04 02:15:32 - INFO - PDFダウンロード開始: https://...
2025-10-04 02:20:35 - WARNING - ダウンロードタイムアウト (303.2秒経過): (C104)[サークル名]作品名.pdf
2025-10-04 02:20:35 - WARNING - このファイルをスキップして次のファイルに移ります
2025-10-04 02:20:38 - INFO - PDFダウンロード開始: https://...使い方
インストール
git clone https://github.com/kiyohken2000/doujin-archiver.git
cd doujin-archiver
pip install -r requirements.txt実行
python doujin_downloader.py実行結果:
処理完了: 52件の新規ダウンロード, 2件スキップタイムアウト時間の変更(任意)
必要に応じてタイムアウト時間を調整できます:
# スクリプト内で変更
DOWNLOAD_TIMEOUT = 600 # 10分に延長アップデート方法
既存のv1.0をお使いの方は、以下の手順でアップデートできます:
cd doujin-archiver
git pull origin mainダウンロード履歴(downloaded_history.pkl)はそのまま引き継がれます。
まとめ
v2.0ではタイムアウト機能の追加により、大容量ファイルや通信不良時でもスクリプトが確実に完了するようになりました。これにより、真の意味での「完全自動化」が実現しました。
既にご利用中の方は、ぜひアップデートをお試しください。新規の方も、GitHubリポジトリから最新版をご利用いただけます。