Posts in 'python'

djangoアプリをつくってherokuに公開しました

タイトル通り,djangoアプリをつくってherokuに公開しました.

kj8recordrecord という趣味全開のアプリです.

URL: https://kj8-record-record.herokuapp.com

githubにコードをあげています.

どんなアプリ?

関ジャニ∞の曲名・CD情報を表示するアプリケーションです(関ジャニ∞だけです)

表示できること

  • CD一覧
  • CDの収録曲
  • 表示された曲と同じ曲名が収録されたCD

作成手順

  1. データ作成
  2. データベースにいれる
  3. 表示機能の作成
  4. herokuにdeploy

それぞれ詳細について書きます.

データ作成

欲しいデータは以下のようなもの.

  • CD : タイトル, シングルorアルバム, 発売日 (model : Disc)
  • 曲 : タイトル, 収録されているCD, CD内の曲順 (model : Song)

早速曲情報データベースから取得しようとしたものの

  • ジャスラック :曲情報だけ
  • MusicBrain:2014年で情報が止まっている
  • freedb: 情報にヌケモレがあるためスクレイピング後にゴミ取り作業が発生する

といった理由から …

flaskをherokuにdeployする

Flaskで作ったアプリをHerokuにデプロイしたかったのだが,色々突っかかったのでメモ.

ファイル一覧

Flaskファイル

Flaskは1つのPythonファイルでアプリを作成できる便利なフレームワーク.

heroku-basic-flaskにならってapp.pyを作成.

  • app.py
    • Hello herokuと時刻を表示させるだけのコード

Herokuに必要なファイル

この記事のメイン.

Herokuに依存関係を特定させるために以下のファイルを作成する必要がある.(以下のファイルはapp.pyと同じ階層に置く)

  • Procfile

    • 実行するコマンドを宣言するファイル
    • gnicornを使うといいみたいなのでpip installしておく
    • 書き方はプロセスタイプ:コマンド という感じ.
    • app.pyを実行してほしい --> web: gunicorn app:app --log-file=-
  • requirements.txt

    • 必要なPythonパッケージを記入
      • Flask,gnicorn etc...
    • バージョンも書いておかないとNo such file or …

dropwhileとtakewhileを使う

pythonの便利ライブラリitertools. その中のdropwhiletakewhileを使うときのメモ.

iteratorの例

100本ノック10章91で用いている単語アナロジー評価データを例に考えます。

このデータ中で": "で始まる行はセクション名を表す.例えば,": capital-common-countries"という行は,"capital-common-countries"というセクションの開始を表している.

言語処理100本ノック 2015より

dropwhile

条件がtrueの間無視(drop)して,falseになった場所からはじめる. 条件はlambda式を使う。

例えばfamilyというセクション以降のデータが欲しい時は下のようになる。

dropwhile(lambda x: x != ': family\n', f)

takewhile

条件がtrueの間に続けて,falseになったら終了.

例えばfamilyというセクションより前のデータだけ取得する時は下のようになる。

takewhile(lambda y: y …