Pandora Pocket

IT系と日常系の備忘録。三日坊主。

YouTube Musicに自動で音楽ファイルをアップロードしてくれるアプリ「YT Music Uploader」

Google Play MusicのころはGoogle Play Music Managerを利用してローカルの音楽ファイルをアップロード可能でした。

しかしYouTube Musicに移行してからは現時点でアップロードソフトウェアが公開されておらず、ブラウザから手動でアップロードするしかありません。

ブラウザでやれるなら非公式APIなりでやれるだろうし、同じようなことを考えている人はいるだろうと思って調べたところ、ytmusicapi なるものを発見。

これはこれで要件を満たせそうではあるものの、Pythonを使い慣れてないこと、自動アップロードもしてほしいこともありほかのソフトウェアを探したところ、こちらを発見。

f:id:Ovis:20210303003326p:plain

Windows向けアプリなのでLinuxやMacでは(Wineでも使わない限り)使えませんが、私はWindows環境なので問題なし。
Watch Folders に音楽ファイルがあるフォルダを指定しておけば、あとは勝手にアップロードしてくれます。

Connected Standby(InstantGo)によるディスプレイ電源OFF時のスリープを回避したい

普段デスクトップパソコンで作業をしているのですが、Twitterや音楽を流すために別途タブレットを用意して、そちらを24時間稼働させています。

24時間とはいっても寝ている間もディスプレイの電源をつけっぱなしにしておくのはもったいない。なので指定した時間になったらディスプレイの電源をオンオフするアプリを作って使っているのですが、表題の通りConnected Standbyが有効になっているとディスプレイの電源が切られるとスリープになってしまいます。

これまでは下記の記事のようにレジストリをいじって回避していたのですが、Windows 10 May 2020 Update あたりからこの設定が使われなくなってしまい、スリープされるようになってしまいました。

仕方がないのでフィードバックハブで要望を投げつつディスプレイをつけっぱなしにしていたのですが、フィードバックハブでほかのユーザーの方から情報をいただきました。

続きを読む

Azure Functionsでサフィックスが「_EXTENSION_VERSION」のアプリケーション設定はスワップ対象外?

タイトルがすべて。

Azure Functions v2がEOLとなり、FUNCTIONS_EXTENSION_VERSION の値を ~2.0 としていたアプリがありました。
当然EOL状態を放置することはできないため、v3に対応する修正を実施し、開発環境では正常に動くことを確認。
本番に向けステージング環境にデプロイ後、FUNCTIONS_EXTENSION_VERSION の値を ~3 に変更したうえでスワップを実施しました。

が、ここで本番環境でエラーが発生することが発覚し、急遽再スワップを実施して戻すことに。

発生したエラーは下記の通り。

Could not load type 'System.IAsyncDisposable' from assembly 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

IAsyncDisposable がライブラリにないぞと。
該当の処理はawait usingステートメントでSQLトランザクションを行っており、少なくとも開発環境では正常に動いている。

なんぞこれはと悩んでいたのですが、ここでアプリケーション設定の FUNCTIONS_EXTENSION_VERSION の値が ~2.0 のままになっていることが発覚。
スワップ時はダブルチェックでスロット設定を確認していたのになぜ・・・?と調査したところ、こちらのIssueが。

Any app setting that ends with _EXTENSION_VERSION will be treated as slot setting. This behavior has been added a while ago prior to when we introduces capability for users to mark settings as slot settings.

_EXTENSION_VERSIONで終わるアプリケーション設定はスロット設定にチェックを入れている入れていないにかかわらず、スロット設定として扱われると。

このためスワップしたときに切り替わらなかったようです。

開発環境は直接設定の上デプロイしたため正常に動き、本番はスワップ元で設定後デプロイして実行したものの、この段階では設定が ~3 と正しかったためにこちらも問題なく稼働。

スワップしたものの上記理由により FUNCTIONS_EXTENSION_VERSION が 入れ替わらず、 ~2.0 のままだったために.NET Core 3.1から利用可能になった処理で躓いてしまったのが今回の問題だった模様。

検証

検証のためにFunctionsを作成。

スワップ先になるプロダクション環境。スロット設定は無し。
f:id:Ovis:20201206134306p:plain

ステージング環境。 f:id:Ovis:20201206134351p:plain

スワップ処理。
構成変更には FUNCTIONS_EXTENSION_VERSION が表示されているので変更されるように見える。
f:id:Ovis:20201206134656p:plain

スワップは正常終了。
f:id:Ovis:20201206135108p:plain

プロダクション環境のアプリケーション設定を確認すると、 WEBSITE_CONTENTSHARE の値は変わっているのに FUNCTIONS_EXTENSION_VERSION は変わっていない。
f:id:Ovis:20201206135529p:plain これは罠だ・・・。