YouTubeの、クリッププログラム
目次から、本分または、学習法を検索し、
あれば、時間をクリップ、
無ければ、60sで、クリップするという、
プログラムを作りました。^^
ChatGPTに、レービューを依頼したのですが。。
高度すぎて、よくわかりませんでしたので、^^;
かなり冗長ですが、
ひとまず、動いたものを、
アップします。^^
よろしくお願いします。
# Run
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('C:\chromedriver')
driver.get('https://www.youtube.com/watch?v=n5zNGvvrg4Q')
# ブラウザが展開されるまで、20s待つ
sleep(20)
#もっと見る をクリックして、リンクを展開
element_target = driver.find_element_by_id("expand")
element_target.send_keys(Keys.ENTER)
# 比較用の配列の準備
element_t = []
# 最大10秒間、テキストが"element_id"の要素がDOMに現れるまで待つ・テキスト取得
for i in range(9, 19):
element_t.append(WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "#description-inline-expander > yt-attributed-string > span > span:nth-of-type(" + str(i) + ")"))
))
# 表示秒数字 初期化
e_s = ""
# 検索結果の表示
for i in range(10):
if "本文" in element_t[i].text:
# 要素が見つかった後の処理
# 要素のテキストを取得
element_text = element_t[i-1].text
# 時間文字列の秒を取得
e_s = element_text[3:]
# 時間文字列の分を取得
e_m = element_text[:2]
# 秒に変換
e_s = str(int(e_s) + 60 * int(e_m))
break
if "学習法" in element_t[i].text:
# 要素が見つかった後の処理
# 要素のテキストを取得
element_text = element_t[i-1].text
# 時間文字列の秒を取得
e_s = element_text[3:]
# 時間文字列の分を取得
e_m = element_text[:2]
# 秒に変換
e_s = str(int(e_s) + 60 * int(e_m))
break
else:
e_s = "60"
# 動画のURLに、クリップ時間の追加
ul = "https://www.youtube.com/watch?v=n5zNGvvrg4Q"
ul = ul + "&t=" + e_s + "s"
# クリップ済みの動画を開く
driver2 = webdriver.Chrome('C:\chromedriver')
driver2.get(ul)
driver.close()