こんにちわ。
curlが公式クライアントのSNS「ネオアスタルテ」のクライアントをPythonで作ってます。
配布はまだ考えてませんが、欲しい人がいるなら配布するかもしれないかもしれない。
今回はアプリの仕様とかをまとめておこうと思う。
開発環境
PythonでUIはKivyで制作。
対象プラットフォームはAnroidとWindowsで、Andrdoidに関してはBuildozerを使用してapkファイルにしている。
Win向けのパッキングは未定。
現在できること
コードを工夫しているおかげでWindowsでもAndroidでも同じコードが動く。
と思う。
TLの閲覧
現在ネオアスタルテのAPIがPublicTimeLineしかTLの取得ができないので、とりあえず実装。今後TLが増えたときのために切り替えができるように組んでるつもり。
右上のボタンは未実装だが、TLが増えたらここから切り替えができるようにしたいなって思ってる。
思ってるだけ。
プロフィールの表示
TLのアイコンを押すとプロフィールの表示ができる。
名前とBIO、アイコンとヘッダーが取得可能。
ちなみにTLのアイコンとかプロフィールの画像はキャッシュしているので、2回目以降の読み込みはそこそこ早い。
投稿
投稿ができる。POSTを押すと上のテキストを送信できる。
テキストボックスが日本語に対応してないので、くそみたいな操作性になっているので、公開するまでになんとかしたいところ。
プロフィールの更新
プロフィールの更新ができる。
開いた時点で現在の設定が入っているので、編集する形で編集できる。
UIがくそ。テキストボックスもくそ。
総じてUIがくそな気がするので、もう少し見直そうと思ってる。
躓いたところ
Buildozerでビルドしたアプリがネットにつながらない。
Androidでアプリがネットにつながらなかったので1日消費してしまった。
原因としてはbuildozer.specの記載不足。
このアプリはrequestsでネオアスタルテと通信しています。
requestsの依存関係を一つ一つrequirements に入れないとコードが動かなかった。
requirements = python3,kivy , requests , urllib3 , charset-normalizer , idna , openssl
あと、ネットのアクセス権が標準では除外されているため、
android.permissions = INTERNET
を追加。
デバッグ方法
adbのインストールは簡単にできたものの、全ログを拾って何がなんだかわからない状態からのスタートだった。
これに関しては、ログを出力するときに文字列「python」でフィルタをかけてやるとかなり見やすくなった。
adb -s デバイスID logcat python:v *:S
でPythonから出力されたエラーのみを拾うことができるので、これを使ってデバッグを行った。
今後の実装予定の機能
会員登録、ログイン画面の作成
現状このへんをやってないので、ぼくのアカウント専用クライアントと化してる。
もし誰かが使うならこの機能は必須だと思う
プロフィール更新時のアイコン・ヘッダーのプレビュー
URLを直接入力する形でプロフィールを入力・確認するので、プレビューがないとわかりにくいかなって思ったり思わなかったり。
まとめ
スパゲティにならないように気を付けたいけど、結局スパゲティになるんだろうなぁって思ったり。
まあ、仕事じゃなくて趣味でやってるものだし、動けばいいよね。
まだまだ開発中のSNSなので今後に期待したいところ・