見出し画像

【DUGA】サンプル動画一括ダウンロード方法(Selenium不使用)

概要

DUGA(https://duga.jp/) は大手のFANZAには無いマニアックな作品が多く、一部のマニアから人気の動画サイトになっています。
アフィリエイト素材としてサンプル動画を使うことができるかどうかは確認しておりませんので、各自で判断してください。

ダウンロード方法

年齢確認

まずは年齢確認の仕組みを確認します。
トップページ(https://duga.jp/)にアクセスした時には年齢確認の画面がでますが、どうやらcookieの設定などはしてないようでした。
そのため、作品URLやサンプル動画を直接指定してもダウンロード可能です。
念のためChrome Developer Toolsで確認してもそれらしいcookieはありませんでした。

Chrome Developer Toolsで年齢確認cookie確認

URL構造

作品URL:https://duga.jp/ppv/scute2-0210/
サンプル動画URL:https://duga.jp/prog/download/?id=scute2-0210&viewtype=1&fname=sample/sample_6000_hd.mp4

サンプル動画URL一般化:https://duga.jp/prog/download/?id=VIDEOID&viewtype=1&fname=sample/sample_画質.mp4

VIDEOID:作品ID
画質
HD画質:6000_hd
標準画質:3000_sd
低画質:1000_ld

pythonだとこんな感じでしょうか。
作品URLからVIDEOIDを取り出し、動画ファイルのURLとして組み立てていきます。

video_name = url.split("/")[-2]
video_url = "https://duga.jp/prog/download/?id=%s&viewtype=1&fname=sample/sample_6000_hd.mp4"%video_name

作品URLを"/"で分割して後ろから2番目が作品IDになります。
その作品URLをダウンロードURLに組み込むことで、動画ファイルのダウンロードURLが完成です

URLリスト作成

今回は一括ダウンロードが目的ですので、ダウンロードする作品リストを作ります。

新着順、100件、2ページ目の作品リストURL
https://duga.jp/search/=/sort=new/pageno=1/

人気順、60件、1ページ目の作品リストURL
https://duga.jp/search/=/viewcount=60/

新着順はsort=newがありますが、人気順はこのパラメータがありません。
作品数も100が標準のようで、viewcountが無いと100件のようです。
次に、ここのpagenoがちょっとやっかいです。
1ページ目:pageno=0
2ページ目:pageno=1
3ページ目:pageno=2
のように、pageno=ページ数-1になります。

いくつかアクセスを試した結果、このように一般化できました

https://duga.jp/search/=/sort=new/viewcount=100/pageno=0/

viewcount=100とpageno=0を設定してもアクセス可能でした。
200件、300件と大量ダウンロードする時はこのへんにお気をつけください。

次に、作品リストURLから作品URLの抜き出しですが、先に解説したURL構造を見ると、作品URLには『ppv』というパスが含まれていることがわかります。
これを正規表現でパースするとこんな感じでしょうか。
aタグでリンク先(href)にppvが含まれていて、末尾が/で終わるものを抽出という意味です。

res = requests.get(target_url,cookies=data, headers=header)
soup = bs4.BeautifulSoup(res.text, 'html.parser')
video_list = soup.find_all('a', {'href':re.compile("/ppv/.+/$")}

あとはここで作ったリストを元に、各ファイルをダウンロードすればOK

宣伝

今回紹介した方法を使って実装したソフトウェアをBOOTHで販売しています。ぜひご活用ください!!

https://bit.ly/3wUxiHb

この記事が気に入ったらサポートをしてみませんか?