search
LoginSignup
3

More than 5 years have passed since last update.

posted at

updated at

容量の気になる iPhone から、Pythonista で S3 に動画を保存

この記事は Pythonista Advent Calendar 2017 の7日目の記事です。
ファイルサイズが大きくて扱いが難しい動画ファイルを、Pythonistaで AWS S3にアップしてみた話です。

概要

iPhone8で4k60pの動画が撮れるようになりましたね!
同じスペックで撮れるデジタルカメラがそう多くない状況で、身近なiPhoneが最新の映像規格をリードするのは非常に刺激的です。

iPhoneだけで短編映画を撮った作品で使われるほどに高品質なFilmic Proと言うアプリがあるのですが、
4k60pの動画ファイルをローカルストレージに保存しておくと、すぐに容量がいっぱいになってしまいます。
そこで、クラウドストレージの使用を検討してみました。

初めはGCPのストレージを使うつもりでAPI周辺のドキュメントを読んでいたのですが、
コマンドラインツール以外で認証させる仕組みがわからず、途方に暮れていました。
今回、AWSのS3を選んだ理由は、botoモジュールを使う事でiPhoneだけでシンプルにアップロードする事が出来たからです。

順を追って説明して行きます。

📱 iPhoneサイドの準備

  • Pythonista
  • stash
  • boto モジュール

stashは bashをPythonで実装したサードパーティモジュールです。
以下のスクリプトを実行すると、pip が使えるようになります。

import requests as r; exec(r.get('http://bit.ly/get-stash').text)

Pythonistaを再起動したら、stash上で以下コマンドを実行します。

pip install boto3

これでクライアント側の準備は整いました。

🖥 AWSサイドの準備

S3をセットアップして行きます。既に環境をお持ちであれば読み飛ばしていただいて大丈夫です。

1. バケットを作成

backet.jpg

今回は、qa-movie2017 と言うバケット名にしました。

2. アクセスキーを作成

secure.jpg

ユーザ名 > セキュリティ認証情報 から、

アクセスキータブ > 新しいアクセスキーの作成でキーを作成。

3. バケット名とアクセスキー、秘密鍵

IAM_Management_Console.gif

バケット名とアクセスキー、秘密鍵を控えておきます。
csvファイルをダウンロードできるので、Pythonista内に保存して読み込んでも良いかもしれません。

🐍 Pythonista側

控えておいたキーを入力します。

# uploadS3.py

import os
import appex
from boto.s3 import connection, key


BUCKET_NAME = ""
ACCESS_KEY = ""
SECRET_KEY = ""


def upload():

  # 登録するファイル
  filename = appex.get_file_path()
  _f=os.path.basename(filename)

  # コネクションの作成
  conn = connection.S3Connection(ACCESS_KEY, SECRET_KEY)

  # バケットの取得
  bucket = conn.get_bucket(BUCKET_NAME)
  k = key.Key(bucket, _f)

  # ファイル名を指定してアップロード
  size = k.set_contents_from_filename(filename)
  return size

if __main__ == __main__:
  upload()

Pythonista 右上のボタンより、
Share > Run Pythonista Script で、 uploadS3.py を登録しておきます。

あとは OpenIn からPythonistaに登録しておいたこのスクリプトを実行するだけで、
動画に限らず様々なフォーマットのファイルを S3の指定バケット内に保存することが出来ます。

まとめ

Pythonistaとbotoモジュールを使う事で、
AWSのS3をiPhoneだけで操作することが簡単に出来ました。

スマートフォンでクラウドをがっつり操作できれば、効率はさておきiPhoneだけで仕事する事も可能かもしれません。

ただ、AWSはGCP等と比べ料金が割高になる傾向にあるため、
長期的に保存する用途では、DropBoxなど他のストレージサービスを検討する方が良いと思います。

iPhone と Pythonista にクラウドを組み合わせると、いろいろな可能性が見えてくる一例を紹介しました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3