Python
yt-dlp を使えば可能だった。 import sys from yt_dlp import YoutubeDL def download_video(video_url): ydl_opts = { "format": "best", } with YoutubeDL(ydl_opts) as ydl: ydl.download([video_url]) def download_audio(video_url): ydl_opts = { "for…
はじめに 感想系のブログ記事は、たまに次のような手順で書くことがある。 iPhone のボイスメモで考えていることをダラダラ話して録音 文字起こし 修正してブログ記事にする ただ、2 の文字起こしが面倒。文字起こしアプリをいくつか試したけど、どれも残念…
requests と標準ライブラリだけを使って書いてみた。 パラメータの指定、特に oauth_signature の作成がシンドイ。 Authorization の指定も。 # -*- coding: utf-8 -*- from random import getrandbits from time import time import hmac import hashlib im…
Elasticsearch の Python クライアントを使って、 CloudWatch からダウンロードしたメトリクスの データポイントを 1 件ずつ登録していたけど、さすがに遅い。 遅すぎる。 我慢して使えるレベルではなかったので、 Elasticsearch のバルクインサートを使って…
CloudWatch からダウンロードした RDS インスタンスのメトリクスを、 Elasticsearch に突っ込んで、 Kibana のダッシュボードで可視化するところまではできた。 tnakamura.hatenablog.com RDS インスタンスは今後増えていく予定で、 Kibana のダッシュボード…
CloudWatch のメトリクスを Elasticsearch に突っ込むスクリプトを Python の標準ライブラリだけ使って書いたけど、 Elasticsearch クライアントを使えばよかったことに今さら気付いた。 pip install elasticsearch でインストールしたら、スクリプトはこん…
はじめに 前回、さくら VPS 1G の CentOS に Apache と mod_wsgi をインストールしてベンチマークをとってみた。 さくら VPS 1G の CentOS に Python と Apache と mod_wsgi をインストールしてベンチマークとってみた - present いろいろな構成でベンチマー…
はじめに Python2.7 で開発した Web サービスをホストする予定なので、CentOS に Python2.7 をインストールする。Web サービスを動かす構成としては nginx + gunicorn が流行りだけど、まずはド定番の Apache + mod_wsgi を試してみる。 Python2.7.3をインス…
内製ライブラリのビルド担当者になっているので、ビルド依頼が来るたびに Jenkins のリリースビルド用ジョブを実行 Wiki に書いているライブラリのリビジョン情報を更新 という作業を行っている。ビルド自体は Rake と Jenkins で自動化したけど、Wiki の更…
例えば、Django で下記のモデルを定義したとする。 from django.db import models from django.contrib.auth.models import User class Category(models.Model): user = models.ForeinKey(User) name = models.CharField(max_length=255) class Entry(models…
「Product Advertising API を使った Web サービスを作って小遣いを稼いでやる!」っていうのは半分冗談で、半分本気。Web サービスを作るってのが本気で、小遣い稼ぎが冗談。そんなに甘いモンじゃないからね。Python で Product Advertising API を呼び出す…
pip bundle -r requirements.txt project.pybundleを実行すると Cannnot find command 'hg'っていうエラーが出るときがある。中身に .hg ディレクトリが混入しているパッケージをバンドルしようとすると発生するみたいだ。pip の不具合として報告されてた。 …
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ <Webアプリケーションフレームワーク(以下 WAF)を公開したお。 | |r┬-| | これでやる夫もギークの仲間入りだお。 \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"〜〜``'ー--、 -一''''''…
Django のクラスベース汎用ビューの CreateView や UpdateView で、下のような FormSet を使いたくなりました。 from django.forms import ModelForm from django.forms.models import inlineformset_factory from receipts.models import Receipt, Detail c…
データベースから「A OR B」っていう条件で絞り込んでデータを取得するのって、Django ではどうやるんだろう。「A AND B」なら filter や exclude でいいんだけど…。困ったときは Django の公式ドキュメントを見るべし!ってことで調べてみたら、ちゃんと書…
Django で新しく Web サービスを作成する場合、タグやユーザー登録といった汎用的な機能は、自分で実装しなくても PyPI や GitHub を探せば Django アプリケーションが見つかります。ただ、そのままでは使えなくて多少の修正を加えることがあるので、 Django…
Django の汎用ビューの使い方を調べるために公式ドキュメントを読んだんですが、今更ながら Django1.3 で汎用ビューが関数からクラスに変わっていることを知りました。1.3 リリースは今年の3月23日だから、8か月近く知らなかったことになるかな。ハズカシイ…
django-taggit を使ってモデルにタグをつけたり、タグでモデルを検索したりが、簡単に実現できました。これだけでも便利なんですけど、django-taggit-templatetags というアプリを使えばさらに便利になります。 というのも、taggit の Tag クラスは、タグが…
Web アプリケーションにタグ機能を実装したくて、いい Django アプリケーションがないか探したみたら、django-tagging っやつが真っ先に挙がってきました。でも、あまり評判よくないっぽい? さらに調べてみたら django-taggit というのも発見。日本語の情報…
はじめに Python と Java でそれぞれ AppEngine アプリを何個か作ってきましたが、AppEngine の利用方針を変更したことだし、このタイミングでそれぞれの開発を振り返ってみます。 Python での開発 フレームワークは AppEngine に特化した Kay Framework を…
先日、AppEngine 向けには自分用のツールだけを開発すると宣言しました。 AppEngine 新料金体系を受けて方針変更 - present 自分用のツールなら Kay みたいなヘビー級のフレームワークを使うまでもないです。なので、Flask を使っています。 ただ、Flask は…
前回、非常に苦労して Pjax を試しました。 Pjax に挑戦したら思っていた以上に苦労した話 - present ページ移動を非同期で行えるようになったので、次はフォームの submit 後も同じようにページを移動したい、と考えてしまうのは当然ですよね。これも Pjax …
GitHub が採用している、非同期でぬるぬる動く画面遷移、これ pushState と Ajax を組み合わせたテクニックで実現されているんですね。その名も Pjax。HTML5 の history.pushState を使うからブラウザの履歴にも対応でき、しかも URL がキレイ。Pjax につい…
AppEngine/Python では長らく Kay Framework を使っていたんですが、最近は Flask に浮気気味です。Flask は URL マッピングをビューのデコレーターで記述できるのがステキですよね。Kay だと作成したビューに割り当てる URL パターンを urls.py に書き忘れ…
App Engine アプリ用のプロファイラである Appstats は、Django 用ミドルウェアだけでなく、WSGI 用ミドルウェアも提供していました。考えてみれば、webapp フレームワークで使えないと SDK で提供しても意味無いですしね。だから Flask でも使えます。 apps…
先日に引き続き、Trac 月 1.6.0 から Trac Lightning 3.1.1 にアップグレード中です。 Trac 月 1.6.0 から Trac Lightning 3.1.1 にアップグレードしたけどマルチリポジトリが使えない - present 上書きインストールだと上手くいかなかったので、 Trac 月の…
Trac 月から Trac Lightning にアップグレードする際、すべてのプロジェクトの trac.ini に、inherit セクションの追加と、チケットのカスタムフィールドの修正をしないといけません。プロジェクトが1個ならまぁ手作業でもいいんですが、10個くらいあるので…
Jinja2 って、テンプレート内で他のテンプレートを読み込めるんです。テンプレートを共通化する方法は継承だけじゃないんですよ。私も最近調べて知ったんですけどね。 Template Designer Documentation — Jinja2 2.7-dev documentation この機能を使えば、ペ…
はじめに AppEngine/Python で CGM 系の Webサービスを作っているんですが、運営しているうちにデータ数が多くなりそうです。いや、なりますね。1ページに何百何千もデータを表示すると、見づらいし表示が遅いので、ページングを実装しなければいけません。 …
リストに詰めたデータを、Jinja2 を使って 5列×n行*1 のテーブルで出力しなければいけなくなりました。 インデックス付きループを使って「横に5個出力したら次の行へ」という処理を書けばいいんですが、インデックス付きループに必要な enumerate が Jinja2 …