敵のいない勉強部屋

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

2022-01-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がすでにインストールされているのが前提になっていた…

Azureのお勉強① (Azure VPN Gateway)

会社の勉強会で発表するために、Azureを触ってみました。会社のPCでデモをするのに、仮想マシンに安全に接続する方法が必要だったので、 VPN Gatewayを使ってみることにしました。公式ドキュメント通りに手順を進めれば結構簡単に設定できました! docs.micro…

英語字幕DB作成への道_Selenium編④ (Cookie)

DisneyPlusのCookieを使い回せない問題。 これはDisneyPlusのクローリング対策なのでは...?と思い始めました。結局今日もCookieの使い回しは実装できなかったのですが、 新しいことを1つ学びました。それはpickle。 pythonのオブジェクトをバイナリファイル…

英語字幕DB作成への道_Selenium編③ (Cookie)

Selenium最初の壁にぶち当たりました。Cookieを使いまわしてログイン処理を省くことができない..ログインするところまでは自動化できたのですが、 その時のCookieを保存しておいて、次回サイトにアクセスするときにそのCookieを使うことができません。私が想…

英語字幕DB作成への道_Selenium編③ (XPATH)

要素を見つけるときにidもnameも使えない状況に陥りました。そんなときに使えるのがXPATH。 www.selenium.dev今回は button要素の data-testid という属性を検索したかったので、こんな記述になります //button[@data-testid='password-continue-loginXPATH…

TVサーバーのパフォーマンス問題③(ネットワーク帯域_RaspberryPi)

TVサーバーのライブ視聴時の画面のカクつきがひどいので、 ネットワークの帯域を調べてみました。使用したのは iperf3 ノートPCとRaspberryPiの両方にインストールして、 ノートPC(Client)→RaspberryPi(Server)の方向で通信して帯域を測ってみました。 $ sud…

英語字幕DB作成への道_Selenium編② (Explicit Wait)

Elementが作成されるのを待たずにElementを探しに行ってしまい、NoSuchElementExceptionが出てしまう問題を解決するために、ExplicitWaitの勉強をしました。www.selenium.dev他にもImplicitWaitとFluentWaitという方法がありますが、ExplicitWaitが使えれば…

TVサーバーのパフォーマンス問題②(CPU冷却_RaspberryPi)

Amazonから届くのを楽しみにしていたこちらが、ついに届きました。 www.amazon.co.jp早速取り付けて、その冷却性能を見てみました。 BeforeAfterすごい..! 一気に半分くらいまで温度が下がりました!!しかし... 画面のカクつきは治りませんでした... 温度の問…

英語字幕DB作成への道_Selenium編①

英語の字幕データを集めてDBを作れば英語の勉強も捗ると思い、 今日から少しずつ作っていくことにしました。字幕データはNetflixやDisneyplusから、Seleniumを使ってとっていこうと思います。公式サイトを見ながらゆっくり進めていくことにしました。 www.se…

TVサーバーのパフォーマンス問題①(RaspberryPi4×Ubuntu×Mirakurun)

先日構築したTVサーバーで、番組再生時に画面がカクつく問題が発生しています。 htop コマンドで調べたところ、ffmpegのCPU使用率が高すぎて処理が遅くなっていることがわかりました。ライブ視聴が難なくできるくらいのパフォーマンスを出したいので、 これ…

TVサーバー構築(Mirakurun×UbuntuServer_22.04)

RaspberryPiにインストールしたUbuntusServerの上にTVサーバーを構築しました。 お手軽とうわさのDockerを使いました。Dockerはほんとにお手軽でした! ミスのしようが無いくらいに。MirakurunサーバーのクライアントにはEPG-Stationを選びました。 こっちの…

USB Bootへの道②(RaspberryPi4/UbuntuServer_22.04)

SSDにUbuntuServerのイメージを書き込むところから再開。 書き込めたら、RaspberryPiからSDカードを抜いて、USBにSSDを挿して起動。 やることはこれだけでした。起動に成功! 案外簡単だった!あとはwifi接続をして今日の作業は完了。 netplanの設定のgateway4…

USB Bootへの道①(RaspberryPi4/UbuntuServer_22.04)

■概要 RaspberryPiの動きが微妙にカクついていたので、ディスクをSDカード→SSD(USB)に変えてみたくなりました。手順は、検索して最初にヒットしたこちらのサイトに従うことにしました。 Boot Ubuntu Server 21.10 from External USB SSD on Raspberry Pi4 Ub…

Wifi接続に苦戦しました(UbuntuServer_20.04)

【感想】念願のRaspberryPi4を手に入れ、UbuntuServer20.04をインストールして色々遊ぼうと思っていたところ、wifi接続の作業に2時間も悪戦苦闘しました。激戦の末たどり着いた解決方法は、Wifiルーターの再起動...やっと繋がった!! という嬉しさと、そんな…