Tag/Google
GAE(Google App Engine)でpython-twitterを使ってタイムライン取得
そういえばあまり「GAE(Google App Engine)」を触っていなかったので、久々にやってみた。
# というよりも、アプリなんか作ったことないんだけどねw
とりあえず、Twitterのタイムラインでも取得するか!って事で、以前使った「python-twitter」でやってみる。
なんか調べると多少ファイルが必要になったり、 一部変更が必要なみたいなので、メモメモ。
- python-twitterのファイルをダウンロードし設置
そこに入っている、
- twitter.py(ファイル)
- simplejson(ディレクトリ)
が必要となるようだ。 なのでまずはこいつをGAEのアプリのドキュメントルートへ設置する。
./
../
app.yaml
index.yaml
main.py
simplejson/
twitter.py
- APIクラスでのファイルキャッシュ処理のせいで、正常に実行されないために上書き
普通にドキュメントに書かれているとおりやると、
- AttributeError: 'module' object has no attribute 'getlogin'
- ImportError: No module named _multiprocessing
などのエラーが出るので、main.pyに下記を記述する。
import twitter
# twitter.Api.__init__ method for override.
def twitter_api_init_gae(self,
username=None,
password=None,
input_encoding=None,
request_headers=None):
import urllib2
from twitter import Api
self._cache = None
self._urllib = urllib2
self._cache_timeout = Api.DEFAULT_CACHE_TIMEOUT
self._InitializeRequestHeaders(request_headers)
self._InitializeUserAgent()
self._InitializeDefaultParameters()
self._input_encoding = input_encoding
self.SetCredentials(username, password)
# overriding API __init__
twitter.Api.__init__ = twitter_api_init_gae
こいつについては、
python-twitterのIssue 59と pengineの Issue 1504 に記載されておりました。参考URL :
Lazycozy's Blog - Twitter Bot を作ってみる <その1> -Reinvention of the Wheel - Google App Engineでpython-twitterが動かない件について -
- pythonのバージョンは「2.5」
ローカルのPythonがPython2.6の場合、GoogleAppEngineLauncherでPython Pathを記述出来るので、そちらへPython2.5を設定する。
#GAE上のPythonは2.5なので併せた。
- ImportError: No module named _ctypes
調べたところ、デプロイしたものであれば、とりあえず動作するようだが、原因がわかっていないので調査する。
# 2010.03.26追記
GAEのPythonPathが2.5では無く2.6を見ていたらしい。。。
実際に行った対応は、GAELauncherを起動して

gae_python25 posted by (C)kishir
GAELauncherの環境設定のPythonPathを設定する項目へ、 Python2.5のパスを入力する。
この後に「Enter(エンター)」を押さないと、設定が反映されないようだ。。。
その後にLauncherを再起動する。
で再度、環境設定のPythonPathを確認して設定されている事を確認。設定されていればオッケー。
これで正常に動作しました。
- main.pyへロジックを記述
下記のロジックでタイムラインを取得する事が可能。
#!/usr/bin/env python
#!-*- coding:utf-8 -*-
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import os
import twitter
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template
# twitter.Api.__init__ method for override.
def twitter_api_init_gae(self,
username=None,
password=None,
input_encoding=None,
request_headers=None):
import urllib2
from twitter import Api
self._cache = None
self._urllib = urllib2
self._cache_timeout = Api.DEFAULT_CACHE_TIMEOUT
self._InitializeRequestHeaders(request_headers)
self._InitializeUserAgent()
self._InitializeDefaultParameters()
self._input_encoding = input_encoding
self.SetCredentials(username, password)
# overriding API __init__
twitter.Api.__init__ = twitter_api_init_gae
class MainHandler(webapp.RequestHandler):
"""
get.
"""
def get(self):
user = users.get_current_user()
if user:
u = 'ユーザー名'
p = 'パスワード'
api = twitter.Api(username=u, password=p)
statuses = api.GetUserTimeline()
l = []
for s in statuses:
l.append(s.text.encode('utf-8'))
template_values = {
'list': l,
}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
else:
self.redirect(users.create_login_url(self.request.uri))
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
今回はテンプレートモジュールを使用しているので、main.pyと同じディレクトリへ、 「index.html」を設置して対応した。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>GAEでTwitter</title>
<meta name="description" content="GAE Twitter" />
<body>
<div id="name">
{% for l in list %}
{{ l }}
{% endfor %}
</div>
</body>
</html>
これでタイムラインがとりあえず取得可能となるので、後は色々といじくることが可能となりそう。
ちなみに取得したタイムラインはHTML上に下記のように表示された。
@komagata 埼玉の人にもらっちゃえば良いよ @komagata 高いっすよねー。まいっちんぐですよ。 そっかpython2.5なのか・・・。2.6じゃだめかw
今日はGAEと戯れてみる バナナマンのpodcastを全部聞いてしまったせいか、寂しいな・・・。 雨が降ってる。。。やだよー。。。
ファックな事に雨が降ってる。。。 次は「3DS」なのかー RT @fladdict: あ、本物だった → Nintendo 3DS 発表。
http://j.mp/9Y7del RT @fladdict: Googleが中国での稼働状況公開ページを作っとるw http://www.google.com/prc/report.html#hl=en
RT @whosaysni: RT @kernel_thread: RT @niryuu: 日本語訳来た Google Japan Blog: 中国における事業展開について http://bit.ly/cA1A44
いいなーこういうの。RT @skmt09: おもろい。http://bit.ly/6ipn6F RT @umelns: おっと! - 米Amazon、早くもiPad用Kindleアプリの情報提供開始 -
http://goo.gl/kKPc - グーグル、中国の検索サイト停止 - http://bit.ly/dCXnE2 @yoshuki おつでしたー 子供をお風呂に入れたー
あ、今日はカバチ最終回か。嫁さまが楽しみにしているドラマなのに・・・。 タスクが6つほどあるな・・・。どうさばくかなー。
おっと、OAuthのバグのせいなのかw 光が丘に「おはしCafeガスト」が出来てたので、来てみた。
メニューの内容が体に良いものがあるので、いまの自分には丁度良いなー デパートみたいにガヤガヤしているところだと、
携帯に掛けても気づかれないんだよなー。。。
- Posted at:
- 2010/03/24 01:13:48
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://kishi-r.com/2010/03/24/gae_python_twitter/trackback/
SafariでGmailを見ると日本語フォントがおかしくなっていた対処メモ
先日遂にSnowleopardにしたのだが、どうもSafariでGmailを見ると日本語の表示がおかしい・・・。
なんか小さい「っ」とかが上に来ていたり、表示が全体的にずれとる。

すのうれぱーど posted by (C)kishir
ここはGoogle様に聞いてみるしかないと思い、 検索してみたらやっぱり同じ現象の方がいた。
別にSnowlepoardに関わらずSafariでの現象らしい。
[N] Gmailでおかしくなった日本語フォントを戻す方法対処方法はアプリケーションにあるフォントブックに登録されている「Arial Unicode MS」というのを切れば良いらしい。 実際にやってみた。

safari_font_arial_unicode posted by (C)kishir
こんな感じ。
前にLeopardにした時ってやったっけかな?
すぐに忘れてしまうのでメモ
- Posted at:
- 2009/11/04 12:36:23
- 0 Comments
- 0 TrackBacks
- Trackback:
- http://kishi-r.com/2009/11/04/safari_gmail_font/trackback/
GoogleDeveloperDay2008の続き

今週はウイルス性の風邪?にやられていて、
嘔吐なども激しく何も出来ませんでした。。。
まさか会社を早退して病院で注射を打ち、30分位病院で寝るとは思わなかったorz
ってな事でやっと治ったので、
この間の続きを書くことにする。
Google Gadgets API
これは今度使う必要があるので聞いておきたかった。
けど知ってることばっかり。
調べれば誰でも出来ることの紹介だったので、
ちょっと残念だったなー。
でも1つおもしろいのを教えて貰った。
iGoogleがver.2というのが開発されていて、
今なら誰でも触れるとのことだったので早速試してみた。
Googleアカウントにログインしてから下記URLへアクセス。
http://www.google.com/ig/sandbox
アクセスするとSandboxへのサインアップを求められるので、
入力。
現在は英語しか対応していないとの事なので、英語で設定する。
YouTubeにも上がってた。
http://jp.youtube.com/watch?v=H6KVwATfCdM
上記を見ると解るとおり、
従来は上部にタブがあったのが左サイドに変更されている。
ちょっと気分を変えたくなったら的なノリで使ってみる。
Googleソフトウェアエンジニアの日常
これはかなり興味があった。
実際にどのような流れで一日を過ごしているのかを
発表者自らのスケジュールを公開してくれた。
みんなも興味があったみたいで、
かなりの人数が居たし質疑応答ではかなりみんな積極的に質問していた。
この後は懇談会があったみたいだが、
自分は体調が最悪だったので速効帰った。
そういえば、
帰宅してからなんかもらったなーと思って中身を確認したら、
Tシャツなどが入ってた。

でも町中じゃー着れないよなーw
- Posted at:
- 2008/06/15 12:07:29
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2008/06/15/googledeveloperday2008%e3%81%ae%e7%b6%9a%e3%81%8d/trackback/
GoogleDeveloperDay2008に参加してきました
今日のGoogleDeveloperDay2008

10:00〜12:00
基調講演
12:00〜12:45
GoogleAppEngine
12:45〜14:00
お昼休憩
14:00〜14:45
Androidアプリケーションの構築(基礎編)
15:00〜15:45
Android Dalvik VMの内側
16:00〜16:45
Google Gadgets API
17:00〜17:45
Googleのソフトウェアエンジニアの日常
この流れで参加しました。
後半はタバコ休憩もろくに行かずにメインホールに入り浸りですw
まずは、
「GoogleAppEgine」
こちらは出た当初に弄っておいたので、
話がスムーズに解って良かった。
このGoogleAppEngine自体の目的は、
Webアプリの開発って面倒だよね。
何故か?
サーバの設定やホスティングなど色々な問題があるから。
ではそれを解決しよう!
という目的でつくられたのがGoogleAppEngineなんですよね。
下記講演・質疑応答にて気になったものを列挙してみた。
・現状はPythonのみだが、他の言語の対応も今後は考えている。
・分散型データストア(Joinに対応していない)
・今後、バッチ処理が出来るようにも考えている。
・このさきずっと無償である。
・全文検索は日々考えられているが、詳細は言えない。
・サーバのホスティングはどこで行われているかの詳細は言えないが、
全世界の人が使用できるように努力している。
・DOS攻撃には何らかのツールなどで対応出来るように考えている。
・セキュリティに関しても詳細は言えないが、Googleで最善を尽くす。
(現状はHttps,SSLはサポートしていない。)
・申し込みに関しては、現在日本の通信会社に問題があるとされているので、
すぐに対応出来るようにしたい。
次にAndroid
実際言葉は知っていたが、
そもそも何かを全然知らなかったwので聞いてみました。
「オープンで無償の初めてのモバイル プラットフォーム」
http://code.google.com/intl/ja/android/
こちらに詳しく記載されています。
ただ言語がJAVAだと言うことで、
ちょっとショック。。。
JAVAほとんど触ったことが無いっすよorz
でもこれがあれば機能面では、
iPhoneにも勝てるのではないでしょうか?
実際に動かしているところを見てかなり興味が惹かれたっす。
そういえば、
Android Developer Challengeが
今年の末か来年の初めに第2回が開催されるらしいです。
賞金が
Android デベロッパー チャレンジ I では、4月14日までに応募された中から最も有望な 50 のアプリケーションのデベロッパーに、
その開発をさらに促す資金として 25,000 米ドルの賞金が提供されます。
選ばれた 50 のデベロッパーはさらに選抜され、
10 デベロッパーに27 万 5,000 米ドル、もう 10 デベロッパーに10 万米ドルの賞金が提供されます。
らしいですよー。
興味がある人は是非!
残りは長くなりそうだから、
明日にするかなw
- Posted at:
- 2008/06/10 22:29:09
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2008/06/10/googledeveloperday2008%e3%81%ab%e5%8f%82%e5%8a%a0%e3%81%97%e3%81%a6%e3%81%8d%e3%81%be%e3%81%97%e3%81%9f/trackback/
GoogleさんからPINコードが届きました
以前メールでGoogleさんから
このたび、郵送にて個人識別番号 (PIN) をお送りいたしました。
のようなメールが届きました。

で、
今日実際に届いたっす。
これは、
Google AdSenseを使っている人は、
識別番号を入力してね。
って事らしい。
なので、
早速Google AdSenseの管理画面で入力しておこう。
そうしないと・・・
4 か月以内に PIN の入力がない場合、お客様のウェブ ページに公共サービス広告 (英語) が表示されるようになります。 6 か月以内に PIN を入力いただけない場合、お客様のアカウントは無効になり、未払いの収益は、しかるべき広告主様に払い戻されます。
らしいっすよ。
- Posted at:
- 2008/02/15 23:31:16
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2008/02/15/googlepin/trackback/
GoogleGearsを試してみた
この間のPython Unconference Tokyo 1にて、
michiluさんのプレゼンを観て興味を持ったGoogleGearsを試してみた。
自分の中ではすごく勘違いをしていて、
どのサイトでもローカルのSQLiteに
キャッシュを保存してくれるものだと思っていたが、
そんな都合の良いものでは無いのですね。。。
まずGoogleGearsとはなんだろう?
ってのがちゃんと解っていなかったので、
検索してみると
http://itpro.nikkeibp.co.jp/article/COLUMN/20070911/281645/?ST=swd-tech
なんてのがあるのでこちらを読むと解る。
サンプルも載っているので実際に試してみた。
おぉ〜確かにすごいなぁ〜。
ちゃんとオフラインでも表示されるのが確認が出来た。
しかし実際にページのキャッシュを残すには、
同じサーバ内にgears_init.jsと、
どのページをキャッシュに残すのかを書いたjsが必要になる。
なら、
自分のブログとかで試してみれば良いのか?
でもあんま必要無いなぁ〜。。。
そういえばDjangoオンラインドキュメント和訳には、
あるってのを言ってたので試してみた。
ん〜どこにあるんだろう?
って思ってたら右上にあったw

こいつをクリックすればOK
おぉ〜すげぇ〜カウントが始まってる。
全部読み込めたら完了なので、
実際にオフライン作業にしてみる。
まずFireFoxnメニューのファイルにある
「オフライン作業」
をクリックしてみる。
それから、どこかページを適当に開くと
「オフラインモードになってます」
って言われページが表示されない。
次にDjangoオンラインドキュメント和訳を開いてみる。
ちゃんと表示されている。
これならネットに繋がっていなくてもドキュメントが確認出来る。
素敵。
GoogleGearsはこちらからインストールが可能っす。
- Posted at:
- 2007/12/19 00:17:14
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2007/12/19/googlegears/trackback/
Google AdSenseのブラックリスト日本語版Betaを試す
「少しでもグーグルアドセンスのクリック単価を高めたい方へ」
と言う事で、
「Google AdSense」の「ブラックリスト日本語版Beta」を実際に試してみた。
リストの表示方法は、下記のサイトに入って
http://www.webpersons.info/adsbl/
内で条件を決めて、ただボタンをクリックするだけで表示される。
そのリストをコピーして「Google Adsense」の「AdSense設定」→「フィルタ」の空欄部分に貼り付けるだけでOK。
すげぇ~簡単だったので、物は試しだぁ~!!!
って事でやってみました。
反映には「24時間から48時間」らしい。
まぁ~サイトに「各自の自由と責任を持って対処してください。」とか書いてあるので、
「利用にあたって」をちゃんと読んでから使いましょう。
参考サイト
http://gigazine.net/index.php?/news/comments/20070124_adsense_black_list_jp/
- Posted at:
- 2007/01/24 15:01:55
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2007/01/24/google_adsensebeta/trackback/
Google以外にも有効なサイトマップを作ってみよ~
GoogleSitemapsのフォーマットに合わせて「sitemap.xml」を吐き出してあげることによって 、
Googleに登録されやすくなるサイトマップ「sitemap.xml」。
「sitemap.xml」以外にもYahooやMSNにも登録されやすくなるというサイトマップ「ROR」というファイルがあるみたい。
「ROR」とはResources of a Resourceの略らすぃ~。
こちらは全ての検索エンジンに有効とされるサイトマップ。
MovableTypeで「ROR」を自動で作るように出来るらしいので、「ロリポップでMovableType3.3実験室」を参考に導入。
まず「メイン・メニュー > サイト名 > テンプレートのインデックス」に
●テンプレート名:ror.xml
●出力ファイル名:ror.xml
というファイルを作成。
上記のファイルのソースがこちら
<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<!-- This file is a ROR Sitemap for describing this website to the
search engines. For details about the ROR format, go to
www.rorweb.com. -->
<rss version="2.0" xmlns:ror="http://rorweb.com/0.1/" >
<channel>
<title>ROR Sitemap for <$MTBlogURL encode_xml="1"$></title>
<link><$MTBlogURL encode_xml="1"$></link>
<item>
<title>ROR Sitemap for <$MTBlogURL encode_xml="1"$></title>
<link><$MTBlogURL encode_xml="1"$></link>
<ror:about>sitemap</ror:about>
<ror:type>SiteMap</ror:type>
</item>
<MTEntries lastn="9999">
<item>
<link><$MTEntryPermalink encode_xml="1"$></link>
<ror:updated><$MTEntryModifiedDate utc="1"
format="%Y-%m-%dT%H:%M:%SZ"$></ror:updated>
<ror:updatePeriod>day</ror:updatePeriod>
<ror:sortOrder>0</ror:sortOrder>
<ror:resourceOf>sitemap</ror:resourceOf>
</item>
</MTEntries>
</channel>
</rss>
こちらを保存して、各ページの<head>と</head>の間に
<link rel="alternate" type="application/rss+xml" title="ROR"
href="<$MTBlogURL$>ror.xml" />
を挿入して、サイトを再構築するだけという簡単な作業。
これで登録されやすくなるのかなぁ~。
とりあえず様子見かな・・・。
参考URL 「ロリポップでMovableType3.3実験室」
http://smdl.jp/blog/2006/09/google.html
- Posted at:
- 2006/12/22 12:22:14
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2006/12/22/google/trackback/
Google AdSenseの続き

先日やっとGoogleからのテスト用入金も確認出来てたので、登録。
サイトにGoogleAdSenseを表示出来るようになりました・・・・・・が
すぐにサイトを移転してしまったため(「Kishi-R's Blog」から「kishi-r.com」)
また再度申し込まないとなぁ~と思い、GoogleAdSenseの規約を読んだ所
同じアカウントでは追加で申し込むことが出来ないと書いてありました。
残念。。。。。なので、違うアカウントを作成!!!
で申請♪・・・その次の日にGoogleからメールが来ました。
その内容は
お申し込みが承認されなかった理由は次のとおりです。
問題点:
- 重複した登録住所によるお申し込み
とのことなので、どうすれば良いのかGoogleに確認しました。
下記がメールで送られてきました。
AdSenseに登録されているURLを変更するには、お客様のAdSenseアカウントの
メールアドレスより下記2点を改めてお知らせ下さい。
現在ご登録のURL:
新しく登録を希望するURL:
Googleでご連絡のウェブサイトを確認いたしました後、ご案内いたします。
Google のプログラム ポリシー (http://www.google.com/adsense/policies)
に従っているウェブ サイトであればどこでも Google 広告や AdSense 検索ボックスを
表示していただけます。 再度 Google の審査を受ける必要はありません。
広告コードやサーチ コードをコピーしてお客様のウェブ サイトに貼り付けるだけで、
Google で新しいサイトを自動的に検出して広告が掲載されます。
ようするにもう一回審査は受ける必要は無いけど、プログラムポリシーに
引っかかっていないか確認するね。
OKならそのまま以前登録したアカウントで使っていいよってことかな。
なので確認事項を記載して再送しました。
GoogleAdSenseチームから登録完了のメールが送られてきて、
登録完了です。
結構疲れましたが、GoogleAdSenseチームの対応していただいた方も
ご苦労様でした。そしてありがとうございました。
- Posted at:
- 2006/12/15 23:12:32
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2006/12/15/google_adsense_1/trackback/
Google「Picasaウェブアルバム」の日本語版が登場

オンライン画像共有サービス「Picasaウェブアルバム」
の日本語版を公開されましたね。
英語だとやっぱ避けてしまう人も多いはずなので(自分も)、
使う人がまた増えそう。
(英語版で一応一回は使ってみました。)
Googleアカウントを取得すれば、画像のアップロードなど
利用が可能とのことらしいです。
保存可能容量は250Mバイトあり画像をブログなどに埋め込む
HTMLコードを出力することもできるので、結構便利。
Googleは結構最近色々な機能が増えてきて、
使いやすくなりましたね~。
他にもGoogleのトップを自分好みに変えられる
「パーソナライズド ホーム 」もおもしろいなぁ。
こちらは自分でコンテンツを作成することが可能。
BookMarkも出来るしメールもG-Mailがあるので、
一回ログインしておけば色々と機能が使える。
他にも英語版しかないものが日本語化されれば、
どんどんユーザー増えていきそうです。
- Posted at:
- 2006/12/08 22:04:40
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://kishi-r.com/2006/12/08/googlepicasa/trackback/


