pythonでちょろちょろツールを作っていますが、コマンドラインのものばかりなのでGUIアプリみたいなものも作ってみたくなりました。
ちょっと前にpygameでポーカーアプリに挑戦しましたが、処理で頓挫しているのでこれは置いておいて、映画情報投稿ツールの方をアプリ化したいと思います。
こっちはAPI取得とテキスト処理だけなのでGUI化も簡単そうです。
GitHub - masashi69/movietweet: 映画情報をツイート
せっかくなら自作apkファイルを作成を目指して進めます。
kivy
Androidアプリを作るにはkivyというフレームワークがナレッジが多かったです。
スマホで動かすにはkivy Launcherというアプリ経由でも使えるのですが、apkファイルを作りたいのでビルドツールであるbuildozerを使います。(こちらは次回)
コード
githubにアップロードしました。
5月から書き始めてさぼりさぼり作っていましたが、ようやくプロトタイプ的なものができました。
主な処理はmainの方に書いてデザイン系はkivy languageでまとめることにしました。
また、リポジトリには保存してませんが、過去に作成したmovietweetをモジュールとして使用しています。
- 映画情報のpost
- postした映画タイトルのget
が主な機能ですが、今の段階では2つめの機能しかkivyで作り込めていません。
動かしてみる
動かすとこんな感じです。
(kivy) masashi@PC-ubuntu:~/movietweetapp_for_android$ python main.py
起動直後のいわゆるメニュー画面です。
GET infoでツイートの取得画面に映ります。
ツイートした年を入力してsubmitすると私が投稿した視聴タイトルがずらっと表示されます。
画像で撮ってませんがスクロールもできますよ。
ちょうど昨日見たソプラノズも取得できてますね。
2022-07-03に「The Many Saints of Newark」を視聴しました。
— masashi (@palomax69) 2022年7月3日
Infomation
---
Year: 2021
Genre: Crime, Drama
Director: Alan Taylor
Actors: Alessandro Nivola, Leslie Odom Jr., Jon Bernthal
Production: N/A
---
こっちは未完成のpost画面。柄だけです。
詰まったところ
未完成の状態ではありますが上記の処理をさせるだけでも結構つまりました。
- 自作ライブラリのインポート
APIキーや関数等自作ライブラリをファイル内でimportしあっているのですが、Not foundになったり少しハマりました。
pythonのpath関連をググって解決。 - モジュールからコマンドライン引数処理を行う
これは以前の記事で解決。
pythonでコマンドライン用の引数処理をモジュールから使う - paloma blog - 戻り値を別のクラスへ渡す
post、getを分けられるようマルチウィンドウとして作ったのですが、kivyの仕様でウィンドウ毎に別のクラスになります。
getした情報を別のクラスに渡す方法がどうしてもできず、1画面で完結させることにしました。
本当はgetinfoしてから別の画面いっぱいに情報を出したかったのですが諦めました。
postも同じ感じになりそうです。
とりあえず動くものを作りながら継続調査ですね。
まとめ
一応アプリっぽく動くところまで作りました。
デザインはそんなに凝るつもりはありませんがもう少し見栄えをよくしたいところです。
いったん仮完成ということで次回buildozerでapkファイルを作ってみたいと思います。