音響Python

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だけで毎日朝に聴いてる音楽や癒し映像のルーティン再生も可能になります。

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

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

こうたろう

音大を卒業後ピアニストとして活動。 日本で活動後北欧スウェーデンへ。 アーティストLindha Kallerdahlと声帯とピアノによる即興哲学を研究。 その後ドイツ・ケルンに渡りAchim Tangと共にアルバム作品制作。 帰国後、金田式DC録音の第一人者:五島昭彦氏のスタジオ「タイムマシンレコード」にアシスタントとして弟子入り。 独立後音楽レーベル「芸術工房Pinocoa(現:Kotaro Studio)」を結成。 タンゴやクラシックなどアコースティック音楽作品を多数プロデュース。 大阪ベンチャー研究会にて『芸術家皆起業論~変化する社会の中、芸術家で在り続けるために』を講演。 その後、秋山庄太郎氏後継の写真スタジオ「村上アーカイブス」でサウンドデザイナー兼音響担当として映像制作チームに参加。 村上宏治氏の元で本格的に写真、映像技術を学ぶ。 祖父母の在宅介護をきっかけにプログラムの世界に興味を持ち、株式会社 ジオセンスの代表取締役社長:小林一英氏よりプログラムを学ぶ。 現在はKotaro Studioにて『あなたのためのアートスタジオ』音と絵をテーマに芸術家として活動中。 2023年より誰かのための癒しの場所『Curanz Sounds』をプロデュース。