見出し画像

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

【本記事は2022/8/1現在の情報を元に記載しています、MGS動画側の仕様変更があった場合は挙動が異なる場合があります】

【2022/09/04追記】
今回紹介している内容を実装したソフトウェアをBOOTHで販売開始しました。ぜひご活用ください!!
https://bit.ly/3TRNAum

概要

MGS動画(https://www.mgstage.com/)という、アダルトアフィリエイト界隈では有名なサイトがあります。大手のDMM(FANZA)では扱っていない作品が多く、成人男性の間では人気のサイトになっています。
MGS動画ではサイト内にあるサンプル動画をダウンロードして素材として利用することが認められています。(https://www.mgstage.com/affiliate_exp/affiliate_exp_movie.php)
そのため、WebサイトやTwitterでアフィリエイトリンクをクリックしてもらうために動画素材が活用できます。(画像よりも動画の方が遡及できるのでありがたいですね!)

そうはいっても動画をダウンロードして、投稿するのは思いのほか面倒で時間がかかります。

そこで、現役エンジニアの筆者がサイトを解析して、効率的なダウンロード方法を見つけたので公開します。

他の記事ではSeleniumというブラウザ自動化の仕組みを使っていることが多いようですが、こちらは効率的とは言えません。(その理由は後述します)

本記事では、サーバ(Linux/Ubuntu)で動画投稿&アフィリエイトリンク投稿をするシステムを前提に記述していきます。

自動ダウンロード方法

手動でTwitterでサンプル動画とアフィリエイトリンクを投稿する場合、このような流れになると思います。

  1. 作品を決める

  2. アフィリエイトリンクを生成(控えておく必要あり)

  3. サンプル動画ダウンロード

  4. 動画投稿

  5. 動画ツイートに返信としてアフィリエイトリンクを投稿

問題点

さて、手動で行う場合の問題はどこでしょうか。
(筆者は面倒くさがり屋のため、1番から面倒です)
一番の問題点は「自分が動く必要がある」というところです。
インターネットの世界、アフィリエイトの世界は自分が仕事してる間も寝てる間も動いています。ライバルが多いなか、”投稿するだけ”に時間を使うのはもったいない!ライバルの一枚上をいくためにはどうすれば良いかを考えるところに時間を使ってください。

解決手法 その1(Selenium)

ブラウザ操作を自動化する場合、一番に思いつくのはこのSelenium(https://www.selenium.dev/)です。
Pythonをはじめ、Java、Node、Rubyなど多くのメジャーな言語から扱うことができます。

Seleniumはブラウザ上で人が行う操作を自動化できます。
WebサイトAを開いて、XXをクリック -> YYをクリック -> ZZをクリックなど順番やタイミングも制御できるので、とても便利です。

サンプルコードはこちら。

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

### 初期化
driver = webdriver.Chrome()
actions = webdriver.common.action_chains.ActionChains(driver)

### 作品URLをセット
driver.get("https://www.mgstage.com/product/product_detail/XXX/")

### 年齢確認
element = driver.find_element(By.ID, "AC")
element.click()

### 「サンプルムービー」ボタンをクリック
element = driver.find_element(By.CLASS_NAME, "sample_movie_btn")
element.click()

### スリープ
time.sleep(2)

### ビデオメニューをクリック
element = driver.find_element(By.ID, "SamplePlayerPane")

### ダウンロードボタンをクリック
actions.move_to_element_with_offset(element, 320, 150).click().perform()
actions.move_to_element_with_offset(element, 300, 50).click().perform()

### ダウンロード待ち
time.sleep(5)

### 終了
driver.quit()

回線状況や処理待ちを考慮して、各所に待ち(sleep)を入れてあります。

ここから先は

5,878字 / 6画像

¥ 500

この記事が気に入ったらチップで応援してみませんか?