夏休みの自由研究 MP4-Gif変換のWEBアプリ版をデスクトップアプリ化!
前回、WEBアプリ化しましたが、毎回ローカルサーバーを立ち上げるのが面倒なので、デスクトップアプリ化する手順を自分のためにメモしておきます。
WEBアプリ版とデスクトップ版の共存
フォルダの構成を変更
WEBアプリ版とデスクトップ版を別々のフォルダに分け、コアになる変換コードのフォルダも別にして共有化します。
mp4-to-gif-converter/
├── desktop_app/
│ ├── main.py # デスクトップアプリの起動スクリプト
│ ├── app.py # Flaskアプリケーション本体 (API, 画面表示)
│ ├── requirements.txt # デスクトップアプリ化に必要なライブラリ類
│ ├── templates/
│ │ ├── index.html # ブラウザの表示用HTML
│ │ └── licenses.html # ライセンス表示用HTML
│ ├── static/ # CSSや画像などの置き場
│ └── __pycache__/ # pythonコードのキャッシュ用のフォルダ
│ └── ...
│
│── core_converter/
│ └── conversion.py # FFmpegを使った変換処理のコアロジック
│
│── webapp/
│ ├── app.py # Flaskアプリケーション本体 (API, 画面表示)
│ ├── requirements.txt # WEBアプリ化に必要なライブラリ類
│ ├── tasks.py # celeryのバッググラウンドのタスク処理を行う
│ └── templates/
│ ├── index.html # ブラウザの表示用HTML
│ └── licenses.html # ライセンス表示用HTML
│
├── pywebview_config.json # アプリケーション設定ファイル
├── tasks_db.json # タスク履歴の保存ファイル
└── .venv/ # Python仮想環境WEBアプリ版をローカルで起動
ローカルサーバーを立ち上げてブラウザで開く手順をメモ。
仮想環境を作る
VSCodeのターミナルで、mp4-to-gif-converterディレクトリに移動し、仮想環境を起動。
python -m venv venv
.\venv\Scripts\activateWEBアプリ版に必要なライブラリをインストール
pip install -r webapp/requirements.txtRedisサーバーの起動
3つのターミナルを使ってローカルサーバーを起動します。
①ドッカーを起動
②ターミナル1:Dockerでredisを起動
docker run -d -p 6379:6379 redis③ターミナル2:Celeryワーカーを起動
celery -A webapp.tasks worker --pool=solo -l info④ターミナル3:Flask Webサーバーの起動
python webapp/app.py起動して、変換できました。

デスクトップアプリをターミナルで検証
仮想環境に設定
python -m venv venv
.\venv\Scripts\activateデスクトップアプリに必要なライブラリをインストール
pip install -r desktop_app/requirements.txtVSCodeのターミナルでmain.pyを起動
まずは、ターミナルからデスクトップアプリを起動します。
cd c:\k3_data\python\test\mp4-to-gif-converter\desktop_app
python main.py※以下のコマンドでデバッグツール付きで起動できます。
python main.py --debugデスクトップ版は保存先やファイル名を設定可能に修正
WEB版では変換はサーバーで行われるため、変換後のファイルはブラウザでダウンロードする必要がありましたが、デスクトップ版はダウンロードではなく、保存先フォルダや保存ファイル名を設定できるようにしました。

デスクトップ版は、スタンドアローンなので、ファイルや保存先フォルダを指定すると場所を記憶するようにしました。
また、gifに変換したファイル名は、デフォルトで、mp4の名前.gifになるようにしました。

変換後は、保存先フォルダを開くボタンを置くようにしました。

デスクトップアプリ版をビルド
ターミナルでの検証が終わったので、いよいよ、exeファイルにしてデスクトップアプリ版を作ります。
pyinstallerをインストール
pythonをビルドするのに必要なpyinstallerをインストールします。
pip install pyinstallerffmpeg.exeとffprobe.exeを用意
映像をコントロールするのに必要なffmpegとffprobeをdesktop_app/bin/に配置します。
.specを使ってビルド
ビルド時に毎回長いコマンドを使用するのは大変なので、MP4-to-GIF-Conveter.specというファイルに記述して、ビルドします。
pyinstaller MP4-to-GIF-Converter.spec
アプリ化されました。

前のアプリより断然便利になりました!
やっぱり自分好みはいいですね。コツコツ作っていきますわ。
誰かの参考になれば幸いです。
