Seleniumを使ってYoutube動画を自動再生するテスト

最終更新日

ポイントseleniumとchromedriverを使って、Google Chromeの自動操作と、お好きなチャンネルをPythonから再生できるBotを作っていきます。
icon image

こちらの記事ではより細かいアクションのやり方などを記載していますので、是非参考にしてみてください。

Seleniumを使ってGoogle検索 ~ サイトの巡回までをプログラムする

準備編

M1 Mac以降の Python 環境構築 [完全保存版]

seleniumのインストール

pip install selenium
# インストールできているかの確認
pip3 show selenium

WARNING: Package(s) not found: seleniumが返ってきたらインストールできていません。

ChromeDriverをダウンロード

まずは使用予定のChromeのバージョンをチェックします。

このバージョン部分の数字と同じドライバーをダウンロードします。

https://chromedriver.chromium.org/downloads

バージョンを指定するとこのように任意のOSのドライバーをダウンロードできますので、管理しやすいパスに解凍してください。

ポイントここまででとりあえず準備完了ですが、度重なるエラーに苦しんだためエラー解決案をいくつか掲載しておきますので、役立ててください。

Bot作成

from selenium import webdriver
from time import sleep
# chromedriverのパスを入力
PATH = 'chromedriver'
CHANNEL_URL = '開きたいURL'

class作成

ポイント今回は好きなチャンネルのページに行き、動画ページを開き、動画を順番に再生するというプログラムを組みます。
      
  1. チャンネルのホームに移動
  2.   
  3. 動画リストに移動
  4.   
  5. リストの動画を順番に再生
  6.   
  7. チャンネルのホームに移動

を繰り返します。

# class名は好きな名前を決めてください。
class kotarostudio():
    def __init__(self):
        self.browser = webdriver.Chrome(PATH)
        self.__home()
    def __home(self):
        self.browser.get(CHANNEL_URL)
        sleep(4)
    def __videoPage(self):
        self.browser.get(CHANNEL_URL + '/videos') # 動画リストの要素を加えます
        sleep(4)
    def __videoID(self, elementNumber):
        self.ids = self.browser.find_elements_by_id('details') # こちらはサムネイルの要素です
        sleep(4)
        return self.ids[elementNumber]
    def watchVideo(self, videoNumber, watchTime):
        self.videoNumber = videoNumber
        self.watchTime = 30 # 視聴時間を指定します
        self.__home()
        self.__videoPage()
        thumbnailElem = self.__videoID(self.videoNumber)
        thumbnailElem.click()
        sleep(self.watchTime)
myBot = kotarostudio()
for i in range(10): # 何個の動画を視聴するか決めます
    myBot.watchVideo(i, 2)
メモ各要素は右クリックの検証から抽出してください。
動画リストの要素やサムネイルの要素は更新されることがあります。
      
  1. チャンネルのホームに移動
  2.   
  3. (4秒後)動画リストに移動
  4.   
  5. (4秒後)リストの動画を順番に再生
  6.   
  7. (30秒視聴後)チャンネルのホームに移動

これが任意の回数繰り返されるBotが完成しました。

エラー対処法

importエラー

Import "selenium" could not be resolved from source

VS codeでPythonを走らせるとこのようにエラーが出る場合があります。

seleniumがimport出来ていません。

この場合はVScode画面左下が(‘base’: conda)になっているかチェックしてみてください。

エラーが出る方はGlobalになっているかと思います。
M1 Macで環境構築した場合はGlobalに設定しているかもしれませんので確認し、Condaに変更してください。
これでimportできるはずです。

chromedriverが開けない

悪質なソフトウェアかどうかをAppleでは確認できないため

と表示され開けない場合はシステム設定のセキュリティーから許可してください。

システム→セキュリティーとプライバシー→一般タブ

パスが通らない

selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. 

このメッセージが出た場合はパスが通っていません。

import chromedriver_binary

上の一文を追加してから実行してみてください。

バージョンエラー

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version

この場合はchromedriverのバージョンとお使いのChromeのバージョンが一致していません。

もう一度バージョンが一致しているか確認し同じバージョンのchromedriverを使ってください。

インストール済みのchromedriverのバージョン確認方法はこちらで。

pip3 show selenium

まとめ

これで大好きなチャンネルを面倒な操作をせずにプログラムを実行するだけで流せます。

もちろん要素を変更したりして任意の再生リストを再生することもできますし、classを作らなくてもseleniumとchromedriverだけで毎日朝に聴いてる音楽や癒し映像のルーティン再生も可能になります。

特に音楽関係や落語関係のチャンネルなどではいいかもしれません。

メモ実行は自己責任で行なってくださいね。