PythonのフレームワークBottleでcookieの読み書き

2014-05-17
このエントリーをはてなブックマークに追加

Pythonの軽量フレームワークBottleを試してみた」の続き。
せっかく調べたので忘れないようにやったことを書いておこう。

# -*- encoding: utf-8 -*-

from bottle import (
    run,
    default_app,
    route,
    request,
    response
)


@route('/cookie_test')
def cookie_test():

    # cookie取得
    _stamp = request.get_cookie("_stamp")
    if _stamp is None:
        response.set_cookie(
            "_stamp",
            "some value",
            max_age=3888000)

    return 'Hello.'

if __name__ == "__main__":
    run(host="localhost", port=8080, debug=True, reloader=True)
else:
    application = default_app()

get_cookieで読み込み、set_cookieで書き込みます。

max_ageは秒数で、上記の例だとcookieの有効期限は45日後です。指定しないとブラウザを閉じた時にcookieは消えます。

Tags: ,

YouTubeAPIでcuePlaylistを使って連続再生する

2014-05-15
このエントリーをはてなブックマークに追加

YouTubeAPIが面白くて遊んでてて書いたコード。再生リストが作れます。iframe版なのでiPhoneでも連続再生可能。

<!DOCTYPE html>
<html>
 <body>
 <div id="player"></div>
 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <script>
 var tag = document.createElement('script');
 tag.src = "https://www.youtube.com/iframe_api";
 var firstScriptTag = document.getElementsByTagName('script')[0];
 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

 var player;
 function onYouTubeIframeAPIReady() {
 player = new YT.Player('player', {
 height: '360',
 width: '640',
 events: {
 'onReady': onPlayerReady,
 'onStateChange': onPlayerStateChange
 }
 });
 }

 function onPlayerReady(event) {
 player.cuePlaylist([
 '-PLgUlRVLZE',
 '1slFc9G7I74',
 '1w7OgIMMRc4',
 '1XHcPYorSJw',
 '31VwqZtDdIc',
 '5hDZbroaQDc',
 '686A5yPMWrs'
 ]);
 }

 function onPlayerStateChange(event) {
 console.log(event);
 }

 </script>
 </body>
</html>

簡単簡単。プレイヤーアプリでも書こうかな。

Pythonの軽量フレームワークBottleを試してみた

2014-05-13
このエントリーをはてなブックマークに追加

リクエストのルーティングだけしてくれればいいよ、っていう状況で使うフレームワークを探していて出会ったのがBottleでして、面白そうだったので試してみました。

インストールはpip install bottle しただけ。Pythonのバージョンは2.7.5で、Bottleは0.12.5 が入りました。

# -*- coding:utf-8 -*-

from bottle import (
    run,
    route,
    default_app
)


@route('/')
def home():
    return 'Hello Bottle.'


@route('/hello/<param:re:[a-zA-Z]+>')
def hello(param):
    return 'Hello {0}.'.format(param)

if __name__ == "__main__":
    run(host="localhost", port=8080, debug=True, reloader=True)
else:
    application = default_app()

上記をapp.pyとして保存し、起動するのは

python app.py

でOK。

http://127.0.0.1:8080
http://127.0.0.1:8080/hello/World

でアクセスできます。

uWSIGIと起動させたい、という場合も

uwsgi –http :8080 –file app.py

で起動できます。あ、uWSGIのパラメーターは一例です。socketでもちゃんと起動します。

速度に関してはPython、go、Ruby、PHPの各フレームワークでのベンチマークを取って公開されている方がいらっしゃるので、そちらをご覧いただければ。

シンプルなAPIだけとか、2〜3ページくらいのコンテンツだったら十分だと思います。Webアプリ一本作る、ってなるんだったらやっぱりDjangoかPyramid使いたいなぁ。

Tags: ,