LoginSignup
7
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-06

この記事は 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 にクラウドを組み合わせると、いろいろな可能性が見えてくる一例を紹介しました。

7
3
0

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
  3. You can use dark theme
What you can do with signing up
7
3