敵のいない勉強部屋

日々学んだことや感じたことを書きます

2022-08-01から1ヶ月間の記事一覧

英語字幕DB作成への道_Docker編① (Ubuntuメジャーバージョンアップ)

docker-desktopが対応しているubuntuのバージョンは21.10か22.04。 私のノートPCのUbuntuのバージョンは20.04...ということで、Ubuntuのメジャーバージョンアップをしました。参考サイトはこちら itsfoss.com私の英語力でもわりとスラスラ読めるサイトでした…

英語字幕DB作成への道_Test編① (pytest)

今日はpythonのテストツールであるpytestを使ってみました。 テストツールは色々ありましたが、flaskのtest関連のページで紹介されていたのがpytestだったのでこれにしました。参考ページはこちら docs.pytest.orgtest_と名前のついたファイルや、Testから始…

英語字幕DB作成への道_SQLite編③ (bulk_insert)

今日はこちらを参考に、bulk_insertを実装してみました。 docs.python.org data = [ ("Monty Python Live at the Hollywood Bowl", 1982, 7.9), ("Monty Python's The Meaning of Life", 1983, 7.5), ("Monty Python's Life of Brian", 1979, 8.0), ] cur.ex…

英語字幕DB作成への道_SQLite編② (Flaskとの連携)

今日はこちらのサイトを参考に、FlaskとSQLiteを連携してみました。 flask.palletsprojects.comポイント① DBのコネクションを使いわす & 必ず閉じる import sqlite3 from flask import g DATABASE = '/path/to/database.db' def get_db(): db = getattr(g, '…

英語字幕DB作成への道_SQLite編① (Tutorial)

こちらのサイトを参考に、はじめてSQLite3を使ってみました。 docs.python.orgデフォルトのモジュールに含まれているらしく、 pipでインストールすらいらないことに驚きました。テーブル作成とINSERT import sqlite3 con = sqlite3.connect('example.db') cu…

英語字幕DB作成への道_Flask編③ (Variable Rules)

前回作成したコードには問題がありました。 それは、URLから取得した変数の値が、すべてstr型になってしまっていること。解決策はこちらにありました。 flask.palletsprojects.com from markupsafe import escape @app.route('/user/<username>') def show_user_profil</username>…

英語字幕DB作成への道_Flask編② (API with JSON)

今回はFlaskを使って、簡単なAPIの雛形を作ってみました。 import json import uuid from flask import Flask from flask import request app = Flask(__name__) @app.route( "/disneyplus/tv_show/<series_name>/<season_num>/<episode_num>", methods=["POST"] ) def fetch_vtt_with_epicode_num(</episode_num></season_num></series_name>…

英語字幕DB作成への道_Flask編① (QuickStart)

seleniumで字幕データをダウンロードすることができるようになったので、 後はこれをAPIで呼び出せるようにしたい。ということで前々から気になっていたFlaskを使ってみることにしました。 flask.palletsprojects.com評判通りとてもシンプル! 今までDjangoを…

英語字幕DB作成への道_Selenium編⑩ (selenium-wire)

DisneyPlusの動画を再生すると、ブラウザが裏側で .vtt という字幕ファイルをダウンロードします。このファイルを手動でダウンロードするには、開発者ツールを開いて、Networkタブを開いて、 .vtt のURLをコピーして、wgetする必要があります。なんとかこれ…

英語字幕DB作成への道_Selenium編⑨ (ElementClickInterceptedException)

要素が画面上に表示されているのに、クリックすると ElementClickInterceptedException で失敗するときの解決方法が見つかりました。 それはexecute_script()。Before element = driver.find_element_by_css_selector('a.small-btn') element.click() After …

英語字幕DB作成への道_Selenium編⑧ (explicit_waitの一本化)

下記の通り、waitの処理を一本化してみました! def find_element(driver, *args, **kwargs): element = WebDriverWait(driver, timeout=120).until( lambda d: d.find_element(*args, **kwargs) ) return element def find_elements(driver, *args, **kwargs…

英語字幕DB作成への道_Selenium編⑦ (Xpath関数)

今日は初めてXpathの関数を使いました。 //button[starts-with(@data-testid, 'season-') and contains(@data-testid, '-button')] とても便利でよいのですが、ends-withもしくはmatchみたいな関数も欲しかったです。 starts-withとcontainsだけでもなんとか…

英語字幕DB作成への道_Selenium編⑥ (Profile)

やっとログイン情報を使い回すことに成功しました。こんな簡単なコードで実装できました。 options = webdriver.ChromeOptions() options.add_argument("user-data-dir=./profile") driver = webdriver.Chrome(options=options) これでChromeを立ち上げるた…

英語字幕DB作成への道_Selenium編⑤ (Profile)

一度ログインしたときの認証情報をそのまま使う方法が、Cookie以外にないかを調べていると、 プロファイルに関する記事が何個か見つかりました。これを使えば、普段Chromeを使っているときと同様、 一度訪れたサイトの情報を保存してくれるそうな。これがい…

Azurenのお勉強② (Zabbix)

社内勉強会の準備として、今日はZabbixサーバーを構築してみました。久しぶりにCentOSを触りました。 dnfとか言う謎のコマンドが導入されてて少し手こずりました。Zabbixの公式インストール手順も、MySQLがすでにインストールされているのが前提になっていた…