ブログトップ 記事一覧 ログイン 無料ブログ開設

にーやんのブログ 2 RSSフィード

2011-07-04

AvsP 日本語化ファイルを使うと AvsPmod v2.2.0 がクラッシュする問題に対応(暫定)

しばらく更新していなかった AvsP 用の日本語化ファイルですが、AvsPmod v2.2.0不具合が発生するようになったようです。

AvsPmodを2.2.0更新したらErrorで起動しない.なんでかなと思ったらどうも日本語化用言ファイルが原因くさい.2.1.8まではavisynth.infoにあるniiyanさんのAvsP日本語化用言ファイル日本語化できるけど2.2.0は起動すらしない.

https://twitter.com/#!/K4095/statuses/86665451949654017

ためしに AvsPmod v2.2.0 に AvsP v2.0.2 用の日本語化ファイルを入れてみたところ、たしかに AvsPmod が強制終了しました。

エラーログを見ても原因がよくわからなかったのですが、たまたま原因とおぼしき箇所を発見したので、さきほど修正したファイルをアップしました。

https://skydrive.live.com/redir.aspx?cid=adc0ad43e645aeed&resid=ADC0AD43E645AEED!105

avsp_ja_v2.0.2_rev2 というのが新しくアップしたものです。一度、お試しください。

今回の更新は、クラッシュを防ぐための暫定的なものです。問題の箇所以外は変更していませんので、一部のメニューは未訳のままとなっています。あらかじめ、ご了承ください。

ちなみに、問題の箇所は、

    "Zoom" : u"ズーム",

でした。

この部分の日本語訳を削除すると、AvsPmod が起動するようになりました。

2010-07-05 22:58 追記

AvsPmod の開発者の一人である ANGEL_SU 氏によると、今回の問題は AvsPmod v2.2.0 のバグだとのことです。次のバージョンでは修正されるものと思われます

以下、引用です:

@niiyan

My bad. It is actually a bug in AvsPmod v2.2.0. Thanks for your report.

http://forum.doom9.org/showthread.php?p=1511634#post1511634

2011-05-25

tweepy を使って Twitter API で検索

とりあえず AviSynth 関連のツイートを取得することを目的としているので、Twitter API検索する方法を調べた。

tweepy v1.5 documentation*1 によると、API.search() で検索ができるらしい。戻り値は、SearchResult オブジェクトリストJSON ではない)。

以前保存しておいた tweepy v1.5 のドキュメントから引用(少し古いバージョンのものです):

API.search(q[, lang][, locale][, rpp][, page][, since_id][, geocode][, show_user])

Returns tweets that match a specified query.

Parameters:

q – the search query string

lang – Restricts tweets to the given language, given by an ISO 639-1 code.

locale – Specify the language of the query you are sending. This is intended for language-specific clients and the default should work in the majority of cases.

rpp – The number of tweets to return per page, up to a max of 100.

page – The page number (starting at 1) to return, up to a max of roughly 1500 results (based on rpp * page.

geocode – Returns tweets by users located within a given radius of the given latitude/longitude. The location is preferentially taking from the Geotagging API, but will fall back to their Twitter profile. The parameter value is specified by “latitide,longitude,radius”, where radius units must be specified as either “mi” (miles) or “km” (kilometers). Note that you cannot use the near operator via the API to geocode arbitrary locations; however you can use this geocode parameter to search near geocodes directly.

show_user – When true, prepends “<user>:” to the beginning of the tweet. This is useful for readers that do not display Atom’s author field. The default is false.

Return type:

list of SearchResult objects

SearchResult オブジェクトがどんな属性を持っているのか tweepy のドキュメントを見てもわからず、小一時間調べる。python - Tweepy API: how to get a user’s id from a status SearchResult object? - Stack Overflow とかで一部わかったが、まだ全体は見えず。

よくよく考えてみると、TwitterAPI を使いやすくしているライブラリなんだからTwitterAPIドキュメントを見ればいいかも、と気づく。

GET search | dev.twitter.com

全部使えるわけではないみたいだけど、「Example requests」のところが参考になった。

# モジュールのインポート
import tweepy
import urllib # URL エンコード

# Twitter の認証を行う
# auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
# auth.set_access_token(access_key, access_secret)
# api = tweepy.API(auth)
api = tweepy.API() # Search API は認証不要

# 検索
query = u"foo" # クエリ
results = api.search(urllib.quote_plus(query.encode('utf-8')))

# 結果を整形
for result in results:
    print result.text # とりあえず表示するだけ

こんな感じで、つぶやきの本文を取り出すことはできた。

GET search | dev.twitter.com によると、Requires Authentication が false になっているので、Search API を使うだけなら認証は必要ないみたい。

また、クエリURL エンコード必須で、複数のクエリを使用する場合は + で連結する必要がある。そのため、urllib.quote_plus() を使っている。OR 検索場合は、"abc+OR+def" になる。

次回からは、

をやる予定。

参考にしたページ

*1現在は削除されていて見られない。

2011-05-18

tweepy ライブラリのインストール

TwitterAPI を利用するにあたって、tweepy を使うことにしました。以下、インストールしたときメモです。

ダウンロードインストール

tweepy/tweepy - GitHub からソースダウンロード

joshthecoder-tweepy-X.X.X-XX-XXXXXXXX.zip (または .tar.gz)を解凍して、tweepy フォルダをまるごと web2py/site-packages にコピーする。

INSTALL.txt より引用:

bundle with your application

----------------------------

You may also download a source archive or checkout via Git.

Then just include the tweepy package folder inside your application's source folder.

json モジュールへのパスを通す

» Google App EngineでTwitterを活用する: エスキュービズム ラボ Blog によると、json モジュールへのパスを通す必要があるらしい。

tweepy/utils.py にある import_simplejson 関数を見てみる。

def import_simplejson():
   try:
       import simplejson as json
   except ImportError:
       try:
           import json  # Python 2.6+
       except ImportError:
           try:
               from django.utils import simplejson as json  # Google App Engine
           except ImportError:
               raise ImportError, "Can't load a json library"

   return json

Google App EngineGAE)用に django からインポートする処理が含まれている。

このままではエラーが出たので、gluon.contrib.simplejson からインポートするようにした。

            except ImportError:
               try:
                   from gluon.contrib import simplejson as json  # Google App Engine
               except ImportError:
                   raise ImportError, "Can't load a json library"

これも ImportError が出たが、サーバーブラウザ再起動したら、エラーは出なくなった。

tweepy がインポートできない

ここでいったん wev2py のサーバーストップ。ためしに GAEサーバーを起動してみると、今度は tweepy 自体インポートできない。

ImportError: No module named tweepy

調べてみると、site-packages からインポートができないという話題が見つかった。

importing modules from site-packages on GAE - web2py-users | Google グループ

ここに投稿されていた次のコードを gaehandler.py に追加すると、GAEローカルサーバーではエラーが出なくなった(ように見えた)。

sys.path.append(os.path.dirname(__file__))
sys.path.append(os.path.join(os.path.dirname(__file__),'site- packages')) 

上のコード追加は関係ない?

上述のように gaehandler.py にコードを追加すると tweepy モジュールインポートできるようになった……と思ったのですが、毎回ではないものの、その後も GAE の開発環境で tweepy がインポートできない旨のエラーが出ることがありました。

その場合に、gaehandler.py を変更なしで上書き保存しただけで動くようになったりしたので、上のコードの追加は関係なかったのかもしれません(実際、今は追加したコードを削除した状態で問題なく使えています)。

そしてエラーが出なくなった

いつからかわかりませんが、開発をつづけるうちに ImportError に遭遇することがなくなりました。上で追加したコードは削除した状態です。

なぜエラーが出なくなったのか。理由はよくわからないのですが、エラーが出なくなった頃に以前と変えたことといえば、次の 2 つが思い当たります。

追記

2011-05-19 0:08

tweepy のページの URL が変更になっていたようなので、修正。

2011-05-16

Twitter にアプリを登録する

この時点ではまだトップページしか存在しないが、OAuth を使った部分を作成するためには、まずアプリを登録する必要がある。

以下、登録にあたって参考にしたページ。

一部よくわからない入力箇所もあったが、あとで修正できるようなので、あまり気にしないことにした。

次回は tweepy を使って、実際に Twitter APIアクセスしてみます。

2011-05-15

web2py 導入メモ(5): デフォルトの URL を変更する

http://foo.example.com/ にアクセスしたときに、http://foo.example.com/welcome/default/index にリダイレクトされてしまう。これを http://foo.example.com/ のままにしたい。

調べたところ、router.py または routes.py のどちらかで設定すれば、デフォルトURL を変更できるらしいことがわかった(どこで見たかは忘れた)。

web2py のトップディレクトリに router.example.py と routes.example.py という 2 つのサンプルが含まれているので、これを参考にするといい。どちらを使えばいいのかわからなかったが、とりあえず routes.py で設定したらうまく行ったっぽい。

こんな感じ。

実際には default_application 以外にも設定できるところがあるので、これでは不完全なのかもしれない。しかし、いろいろいじってもうまく行かなかったので、とりあえずはこのままで。また後日調べ直す予定。