GAE Blobstore Python API メモ

RIOT APIから取得したChampion情報を、ディクショナリ形式で.pyにして書き出したら低コストでBOTが読めるかも、と思ってBlobstoreを使ってみた。が、Blobstoreのファイルは通常のファイルの様にアクセス出来ないのでimportする方法が見つからず挫折。根本的に何か勘違いしているので素直にMemcache使えと。今後またBlobstoreを使うかもしれないのでメモ。

from google.appengine.api.urlfetch import fetch
from google.appengine.api import files
from google.appengine.ext.blobstore import BlobInfo
from django.utils.simplejson import loads

import webapp2, logging

from setting import RIOT_KEY #RIOT APIのキー

class mainHandler(webapp2.RequestHandler):
    def get(self):
        result = fetch('https://prod.api.pvp.net/api/lol/na/v1.1/champion?api_key='+RIOT_KEY) #Champion情報を取得する
        if result.status_code == 200:
            b = BlobInfo.all().filter('filename =', 'champions.py').get()
            if b is not None:
                b.delete() #更新判定がめんどくs・・高コストなので前のファイルは問答無用で削除
            blob_io = files.blobstore.create('text/x-python', 'champions.py') #書き出すファイルを定義
            with files.open(blob_io, 'a') as f: 
                f.write('champions = {\n')
                js = loads(result.content)['champions'] #JSONパーサに取得したChampionデータを読み込ませる
                for j in js:
                    f.write('\t\''+str(j['id'])+'\': \''+j['name']+'\', \n') #Champion IDとNameをディクショナリ風に書き出し
                f.write('}')
            files.finalize(blob_io)
            module = __import__(BlobInfo.all().filter('filename =', 'champions.py').get()) #無理でした(当たり前)
        else:
            logging.error(result.content)


app = webapp2.WSGIApplication([ ('/champion', mainHandler) ], debug=True)
カテゴリー: 未分類 | コメントする

django-registrationセットアップメモ(CentOS 6.3)

django-registrationセットアップ

sudo pip install django-registration

django-registration2もあるがバージョンが低い(?)のかうまくいかなかった。
テンプレートはここを使わせていただく。
registration/とbase.htmlをtemplates/に以下に配置。
あとはQuick start guideを参考に設定。
urlでindexを指定してないとエラーが出るのでその場合はbase.htmlで該当行を削除。
アクティベーションURLのexample.comはDBのdjango_siteテーブルで変更できる。

vim anpi/settings.py
vim anpi/urls.py
python manage.py syncdb
カテゴリー: 未分類 | コメントする

Djangoセットアップメモ(CentOS 6.3)

WSGIの最新版インストール

sudo wget https://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
sudo tar zxvf mod_wsgi-3.4.tar.gz
sudo yum install httpd-devel
sudo ./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/bin/python
sudo make
sudo make install

Djangoセットアップ

sudo yum install django MySQL-python
python -c "import django; print(django.get_version())"

Djangoのバージョンは1.5.1だった。
バージョンによって仕様がかなり異なるので自分のバージョンにあったドキュメントを参考にする。

Djangoプロジェクト作成

django-admin.py startproject anpi
vim anpi/settings.py
vim anpi/urls.py
vim anpi/wsgi.py
sudo vim /etc/httpd/conf.d/wsgi.conf
sudo service httpd restart
python manage.py syncdb

Djangoアプリ作成

python manage.py startapp accounts
vim accounts/model.py
vim accounts/view.py
python manage.py syncdb
カテゴリー: 未分類 | コメントする

(第33回)Python mini Hack-a-thon

[目標]
HTML5のcanvas要素で実装されている描画処理をPILで書き直す。

[セットアップ]
色々環境足りてないので一緒にインストール。

sudo yum install python-imaging fonts-japanese libjpeg zlib freetype freetype littleCMS gcc python-devel
sudo /usr/bin/pip install pillow

[heatmap.py]
PILから脱線してライブラリに手を出すも上下反転などなど使いこなせず。
heatmap

[PIL]
超簡易的な描画は再現できた。
out

[課題]
・ヒートマップに近づける。
・アルファマップの扱いがよくわからない。

カテゴリー: 未分類 | コメントする

IIJmio VS イオンSIM 速度比較

イオンSIMを契約していたのだがパケ詰りが酷くて超不満。
そこで最大200kbpsに拡充したりと話題のIIJmioを衝動的に契約してみた。

測定条件

  • 測定PC: Lavie Z
  • 測定ルータ: HE-WR-01
  • 測定場所: 山(電波MAX)
  • 測定サイト: SPEEDTEST.NET

・イオンSIM
2772237308
2772238284
2772239249
体感的にはかなり待たされる感がある。

・IIJmio(クーポンOFF)
2772270696
2772271806
2772272877
DL/UP共にイオンSIMより上回っている。

・IIJmio(クーポンON)
2772283746
2772284745
2772285650
キャンペーンでLTEクーポン貰えたので利用してみると流石に早い。
ただこのご時世500MBなんてあっという間で儚い。

同料金でこの差は大きいね。

カテゴリー: 未分類 | タグ: , , , | コメントする

.srtファイルを使った字幕付き動画制作

動画自体に字幕を埋め込むハードサブとYouTubeのCC機能で字幕を表示するソフトサブの両方用意する必要な時の効率的な編集手順を考える。

・編集ソフト: Adobe Premiere Pro CS6
職場のPCに入っていたものでこれ一本で何でもできると思ったらそうでもない。
一応、[ファイル->新規->タイトル] で文字を埋め込む事は出来るが一文章ごとに複製して位置調整も手動でやらなければならないので面倒だ。
そして字幕ファイルに対応していないのでYouTubeで字幕表示する際はまた手動で書き写さなければならない。

・字幕制作: Subtitle Workshop
まずは使いまわせる.srt字幕ファイルを作ろう。
Premiereで編集した動画をwmvで吐き出す。
mp4(x264)は何故かWorkshopで開けなかった。
Workshopでwmvを読み込ませるとこれまた何故か上下反転しているが一度停止してまた再生すると正常になる謎。

コーデックが入っていないだけでした。K-Lite Codec Pack等をインストールすれば、mp4もWorkshopで再生できます。
そして動画再生しながら字幕を書き起こしてもいいのだがおヌヌメはこうだ。

  1. まずはメモ帳等で字幕にしたい文章を全て書き起こす。
    一行を最大何文字にするか大体決めておいた方がいい。(私は27文字にした)
  2. 全て選択&コピーし、Workshopで一行追加しそこに貼り付ける
    左バーの文字エンコードが[Shiftjis]になってないと文字化けるので注意。
  3. [Shift+Ctrl+D] でひたすら分割する
  4. Workshopで動画を再生しながら[Alt+C][Alt+V]で一行ずつ開始時間と終了時間を指定する。
  5. [ファイル->保存->SubRip] で.srtファイルが出力される。

・ハードサブエンコード: Media Coder
次に字幕を動画に焼き付ける作業に入る。
Media Coderは管理者権限で実行しないと正常に動作しないので注意。
[ビデオ][オーディオ][コンテナ]はお好きな形式で。
私はPremiereでmp4(x264&aac)形式で吐き出し、[ビデオ][コンテナ]はPremiere同様にし [オーディオをコピー] にチェックした。
[字幕] では色々指定できるので試しながら調整すればいいだろう。
読み込む.srtはNotepad++TeraPadなどでUTF-8に変換しておかないと文字化けるので注意。

・仕上げエンコード: XMedia Recode
私の環境だけかもしれないが、Media Coderで吐き出されたmp4は何故か正常に再生されないのでXMedia Recodeで再エンコードする。
他にもXMedia Recodeはサイズ変えたりしたくなったときなど再エンコード要員として便利。

こうしてハードサブの動画が完成したのである。
ソフトサブはYouTubeにアップロードして字幕編集ページで.srtを読み込ませるだけ。超簡単。

カテゴリー: 未分類 | タグ: , | コメントする