見出し画像

夏休みの自由研究 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\activate

WEBアプリ版に必要なライブラリをインストール

pip install -r webapp/requirements.txt

Redisサーバーの起動

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.txt

VSCodeのターミナルで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 pyinstaller

ffmpeg.exeとffprobe.exeを用意

映像をコントロールするのに必要なffmpegとffprobeをdesktop_app/bin/に配置します。

.specを使ってビルド

ビルド時に毎回長いコマンドを使用するのは大変なので、MP4-to-GIF-Conveter.specというファイルに記述して、ビルドします。

pyinstaller MP4-to-GIF-Converter.spec

アプリ化されました。


前のアプリより断然便利になりました!

やっぱり自分好みはいいですね。コツコツ作っていきますわ。

誰かの参考になれば幸いです。


使用ツール

いいなと思ったら応援しよう!