Tag/Python

bit.lyのAPIを試してURLを短縮してみた

参考にしたサイト:

Python: URL短縮サービスbit.lyのAPIを使ってみた

上記サイトにある「bitly_test.py」を見れば大体どんな事が出来るのかが解る。

一応APIのドキュメントを自分のメモ用に下記リンク先へまとめておいた。

短縮URLサービス bit.lyのAPI

上記にまとめた内容を元に色々試してみる。

1.「URLを短縮」

まずは自分のサイトで「URLを短縮」を試してみる。

import sys, os, re, urllib, urllib2
import simplejson
url       = "http://kishi-r.com/"
info_url  = "http://api.bit.ly/%s?version=2.0.1&%s=%s&login={自分のAPI用ログイン名}&apiKey={自分のAPIKey}"
url_data  = urllib2.urlopen(info_url % ("shorten", "longUrl", url)).read()
url_info  = simplejson.loads(url_data)
print url_info

これで短縮された内容がjson形式で返ってくる。その結果が下記になる。

{u'errorCode': 0, u'errorMessage': u'', u'results': {u'http://kishi-r.com/': {u'shortKeywordUrl': u'', u'hash': u'SOC0w', u'userHash': u'Oyrgz', u'shortUrl': u'http://bit.ly/Oyrgz'}}, u'statusCode': u'OK'}

ここで短縮されたURLはそのまま使用するので、適当な変数へ入れておく事にする。

bitly_url = url_info["results"]["http://kishi-r.com/"]["shortUrl"]
print bitly_url

2.「短縮したURLから元のURLを取得」

先ほど短縮したURLから元のURLを取得する。

info_url = "http://api.bit.ly/%s?version=2.0.1&%s=%s&login=kishir&apiKey=R_b23e6cb3351dc3d73c1bb5091c622e4c"
url_data = urllib2.urlopen(info_url % ("expand", "shortUrl", bitly_url)).read()
url_info = simplejson.loads(url_data)
print url_info

結果が下記

{u'errorCode': 0, u'errorMessage': u'', u'results': {u'Oyrgz': {u'longUrl': u'http://kishi-r.com/'}}, u'statusCode': u'OK'}

3.「URL先の情報を取得」

URL先のサイト情報を取得する。
info_url = "http://api.bit.ly/%s?version=2.0.1&%s=%s&login=kishir&apiKey=R_b23e6cb3351dc3d73c1bb5091c622e4c"
url_data = urllib2.urlopen(info_url % ("info", "shortUrl", bitly_url)).read()
url_info = simplejson.loads(url_data)
print url_info

結果が下記

{u'errorCode': 0, u'errorMessage': u'', u'results': {u'Oyrgz': {u'hash': u'SOC0w', u'keywords': [], u'shortenedByUser': u'kishir', u'exif': {}, u'userHash': u'Oyrgz', u'contentLength': u'', u'id3': {}, u'calais': {}, u'longUrl': u'http://kishi-r.com/', u'version': 1.0, u'htmlMetaDescription': u'\u30ec\u30b3\u30fc\u30c9\u3068\u30b9\u30b1\u30dc\u30fc\u3068\u672c\u3068\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u305f\u3061\u3092\u66f8\u3044\u3066\u3044\u308b\u30d6\u30ed\u30b0\u3002\u30ec\u30b3\u30fc\u30c9\u306f\u8272\u3005\u306a\u30b8\u30e3\u30f3\u30eb\u3092\u805e\u3044\u3066\u3044\u308b\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u306fPython\u3084Django\u30fbjQuery\u306e\u4e8b\u3092\u66f8\u3044\u3066\u3044\u308b\u4e8b\u304c\u591a\u3044\u3002', u'htmlMetaKeywords': [u'kishi-r', u'kishi', u'python', u'Django', u'jQuery', u'sk8', u'record'], u'calaisId': u'', u'thumbnail': {u'large': u'http://s.bit.ly/bitly/SOC0w/thumbnail_large.png', u'small': u'http://s.bit.ly/bitly/SOC0w/thumbnail_small.png', u'medium': u'http://s.bit.ly/bitly/SOC0w/thumbnail_medium.png'}, u'contentType': u'text/html; charset=utf-8', u'users': [u'kishir'], u'globalHash': u'SOC0w', u'htmlTitle': u'kishi-r.com', u'metacarta': [], u'mirrorUrl': u'', u'keyword': u'', u'calaisResolutions': {}, u'surbl': 0}}, u'statusCode': u'OK'}

MetaDescriptionやキーワードなんやらも含まれているみたいだ。

他にもエラーコード取得などもあるが、今回はここまででいいやぁ。

とりあえず試して出来たので、必要なパラメーターなどを設定して返ってくるクラスでも作っておけば、何かと使えそうだなぁ。

Posted at: 
2009/05/19 12:32:18
0 Comments
0 TrackBacks
Tags: 
API
Python
Trackback: 
http://kishi-r.com/2009/05/19/bit_ly_api/trackback/

Pythonでlivedoorクリップ数とはてブ数とYahooブックマーク数を取得

Pythonで書かれている参考ってあんまり無いので、やってみた。(ってかあれか、別に書くほどの事じゃないからみんな書かないのかwでもPerlはあるんだよなぁー。)

livedoorとはてブは「XML-RPC」で取得しています。

YahooブックマークはXMLで返ってくるので、そいつをBeautifulSoupなんかでパースすればOK

livedoor

URI → http://rpc.clip.livedoor.com/count

methodName → clip.getCount

parameters → 件数を取得したい URL を指定(最大 50 件まで指定可能)

のようなので、実際に試してみると下記のようになる。

>>> import xmlrpclib
>>> server = xmlrpclib.ServerProxy('http://rpc.clip.livedoor.com/count')
>>> TARGET_URL = 'http://kishi-r.com/2008/04/pythonlxmlamazonapi/'
>>> server.clip.getCount(TARGET_URL)
{'http://kishi-r.com/2008/04/pythonlxmlamazonapi/': 1}

1件だけあるみたいw

はてなブックマーク

URI → http://b.hatena.ne.jp/xmlrpc

methodName → bookmark.getCount

parameters → 件数を取得したいURLを指定(複数指定可能/50件まで)

のようなので、実際に試してみると下記のようになる。

>>> server = xmlrpclib.ServerProxy('http://b.hatena.ne.jp/xmlrpc')
>>> TARGET_URL = 'http://kishi-r.com/'
>>> server.bookmark.getCount(TARGET_URL)
{'http://kishi-r.com/': 4}
>>> server.bookmark.getTotalCount(TARGET_URL)
118

のようです。 サイトトップのブックマーク数は「4件」で、サイト全体の場合は「118件」なのか。 まぁーそんなブックマークされる事も書いていないし、そんなもんかw

試しにMokujiを見てみる。
>>> TARGET_URL = 'http://mokuji.deckkr.jp/'
>>> server.bookmark.getCount(TARGET_URL)
{'http://mokuji.deckkr.jp/': 311}
>>> server.bookmark.getTotalCount(TARGET_URL)
345

うん。やっぱオレのブログより全然多いねw

・Yahooブックマーク(本家に無いのかな?ちゃんと探してないからわからん) ※参考URL:blog.katsuma.tvを参考にしました。

URI → http://num.bookmarks.yahoo.co.jp/yjnostb.php?urls=調べたいURL

のようなので、実際に試してみると下記のようになる。

>>> url = 'http://num.bookmarks.yahoo.co.jp/yjnostb.php?urls=http://kishi-r.com/'
>>> xml = urllib2.urlopen(url).read()
>>> xml'
<?xml version="1.0" encoding="utf-8" ?>\n<results>\n<SAVE_COUNT u="http%3A%2F%2Fkishi-r.com%2F" ct="0" />\n</results>\n<!-- bm-num11.ssearch.kks.yahoo.co.jp uncompressed/chunked Mon Feb  9 17:06:50 JST 2009 -->\n'>>>
寂しいことに「ct="0"」となっているので、0件なのね。 じゃーMokujiで試してみる。
>>> url = 'http://num.bookmarks.yahoo.co.jp/yjnostb.php?urls=http://mokuji.deckkr.jp/'
>>> xml = urllib2.urlopen(url).read()
>>> xml
'<?xml version="1.0" encoding="utf-8" ?>\n<results>\n<SAVE_COUNT u="http%3A%2F%2Fmokuji.deckkr.jp%2F" ct="25" />\n</results>\n<!-- bm-num11.ssearch.kks.yahoo.co.jp uncompressed/chunked Mon Feb  9 17:09:02 JST 2009 -->\n'

お、「25件」あるみたいっすね。

他必要そうなのって「delicious」くらいかな?

でもサイトがリニューアルしてるから、何かと変わってるんだろうなぁー。

Posted at: 
2009/02/09 17:30:51
0 Comments
1 TrackBack
Tags: 
Python
Trackback: 
http://kishi-r.com/2009/02/09/bookmark_api/trackback/

Django1.0リリース

出たなー

色々やらないとね

http://www.djangoproject.com/

Posted at: 
2008/09/05 01:34:34
0 Comments
0 TrackBacks
Tags: 
Django
Python
Trackback: 
http://kishi-r.com/2008/09/05/django_release/trackback/

GoogleCodeからjqueryに関連するものを引っ張ってこようっと(その1)

とりあえずGoogleCodeにアクセスして、最初のページのURLとタイトルを持ってくる。

# vim: encoding=utf-8 :

import urllib2
from BeautifulSoup import BeautifulSoup

GOOGLE_CODE_URL  = 'http://code.google.com/hosting/search'

def get_google_code_list():
    search = '?q=jquery&projectsearch=Search+Projects'
    url = GOOGLE_CODE_URL + search
    opener = urllib2.build_opener()
    r = opener.open(url)
    soup = BeautifulSoup(r)
    list = {}
    for div in soup('div', {'class':'name'}):
        for a in div('a'):
            list[a.string] = a.get('href')
    return list

1.まずはGoogleCodeのサイトにアクセスしてjqueryで検索を掛ける。

2.それをBeautifulSoupでパースして「URL」と「タイトル」のセットをリストへぶち込み

3.それをpirntして確認

{
    u'jquery-ajaxq\n - AJAX request queueing for jQuery': u'/p/jquery-ajaxq/',
    u'jquery-lightbox\n - Lightbox style effects in a jQuery plugin': u'/p/jquery-lightbox/',
    u'jquery-em\n - Monitor Font Size Changes with jQuery': u'/p/jquery-em/',
    u'jquery-flickr\n - jQuery Flickr plug-in is a JavaScript interface for Flickr Services AP...':
    u'/p/jquery-flickr/', u'jquery-color-utils\n - jquery-color-utils': u'/p/jquery-color-utils/',
    u'jquery-domec\n - jQuery DOM elements on-a-fly': u'/p/jquery-domec/',
    u'jquery-session\n - Simulate session vars in jQuery': u'/p/jquery-session/',
    u'jquery-decorated\n - jQuery plugin to transform simple HTML components into more complex on...': u'/p/jquery-decorated/',
    u'jquery-aop\n - Aspect Oriented Extensions for jQuery': u'/p/jquery-aop/',
    u'jquery-dropj\n - A jQuery plugin to add drop caps (large floating initial capital lette...': u'/p/jquery-dropj/'
}

とりあえず出来たので、次はページがあるまで取得するのをやるが・・・明日にするかなw

・全ページのデータを取得してDBにて管理

・以前のデータと比較して更新されていればアップデート、そうでなければ何もしない

・もしURLもしくはプロジェクトが存在しなければ、削除フラグを立てて、更新しなくする

というのをCronに登録しておけば、自動的にどれが更新されているかとかが解るリストが作れるな。

Posted at: 
2008/08/07 23:57:27
0 Comments
1 TrackBack
Tags: 
Python
Trackback: 
http://kishi-r.com/2008/08/07/google_jquery_1/trackback/

[pyspa]温泉行ってきました

移行した時にエントリーを追記するの忘れてたw なのでもう一度書いておこうっと。

djangobook
Getしました。
一人分足りないですがorz
今回は参加されないとの事でした。
来ている方からは頂きました。

うれしいっすなぁ〜。
サインを書いて下さったみなさん、ありがとうございました!
pyspa01
温泉ではブログをPicoLogへ移行して、
まだドメインの移管など残タスクがあるので、
これ以降はあまり書きたくないなw
幹事のVoluntasさんとkuma8さんお疲れ様でした。
そしてありがとうございました。

Posted at: 
2008/07/08 17:36:28
0 Comments
0 TrackBacks
Tags: 
Django
pyspa
Python
Trackback: 
http://kishi-r.com/2008/07/08/pyspa3/trackback/

Python「lxml」でAmazonAPIを使ってみた

やってみた。
おもしろかった。

だけどもっとレスポンスが速い方法があるはず。
誰か教えてw

下記にまとめてみた。

http://pod-head.net/wiki/amazonapi_python

早くブログを移行したいけど、
時間が余りないせいか、自分自身にゆとりがないので、
出来てないorz

Posted at: 
2008/04/01 23:17:43
0 Comments
0 TrackBacks
Tags: 
Python
Trackback: 
http://kishi-r.com/2008/04/01/pythonlxmlamazonapi/trackback/

昨日はスノボー、今日はPythonNerima

昨日は、
前の会社の人たちと湯沢の神立へスノボーしに行ってきた。

楽しかった!
来年は泊まりだな。って言ってた。
なんならマイクロバス借りてみんなで、
行けたらおもしろいかも。

いつもはクアハウスで温泉に入って休憩所でのんびりしてから、
寝るのだが・・・

やってねー!
なんか暗いからおかしいと思ったんだよねw

しょうがなく近くの健康ランドへGO!

けっこうぼろいけど、
ちゃんと寝られたからよかった。
(すげ〜イビキかいているやつがいたけど・・・。)

ゲレンデのコンディションはそれなりに良かった。
(春スキーだけどと言うことで。)
天候は微妙だったが、
かなりの本数を滑れたのが、
なによりですね。

筋肉痛も軽くあるぐらいで、
思ったよりも全然動ける。

良かったよぉ〜。

今日はPython練馬って事で、
練馬区練馬で飲んできた。

集まったのは、

@MiCHiLU
@aohta
@kishir(自分)

の合計3人。
人数は少ないけど、
多いと誰と喋ろうかすごい迷って、
あまり話せないので、
良かった。
軽い感じで日常会話っぽいのも
なんか新鮮だったな〜。
技術のことよりも、
雑談って感じかなw

後、
みんな練馬に来れば良いよ。
良いところだよ。
なんなら大泉学園にも来れば、
最高にうまい焼鳥屋があるんだけどな。
(近いと自分が帰るのが楽だからってのが重要w)

さて、
今日はまだ作業が残っているのでやらないと。
本当はドラゴンボールGTを見たいけど、
我慢、我慢。

Posted at: 
2008/03/31 00:00:43
0 Comments
0 TrackBacks
Tags: 
Python
sk8
Trackback: 
http://kishi-r.com/2008/03/31/pythonnerima/trackback/

PyhonでYahooAPI関連検索を試してみた

Yahoo!デベロッパーネットワーク

というページがあり、
ここにはウェブ検索や画像検索などのAPIの
詳細が書かれている。

関連検索ワードWebサービスは下記から。

http://developer.yahoo.co.jp/search/webunit/V1/webunitSearch.html

使用するのには、
アプリケーションID
が必要みたいなので登録した。

後気をつけなければいけないのが、

関連検索ワードWebサービスは、
24時間中1IPアドレスにつき50000件のリクエストが上限となっています。

なるほど。
お金を払って商用とかに使えるのかな?
今度聞いてみたいな。

今回は以前使用した「BeautifulSoup」を使って、
早速やってみる。
(nobuさんにlxmlで良くない?って言われてたな。。。今度はそっちでやってみよう。)
>>> import urllib2
>>> from urllib import quote
>>> from BeautifulSoup import BeautifulSoup
>>> opener = urllib2.build_opener()
>>> yahoo_url = u'http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch?'
>>> yahoo_id = u'appid=登録したアプリケーションID'
>>> search_tag = u'python'<br />
>>> yahoo_query = 'u&amp;amp;amp;amp;amp;amp;query=' + quote(search_tag.encode('utf-8'))
>>> yahoo_html  = opener.open(yahoo_url + yahoo_id + yahoo_query).read()
>>> yahoo_soup  = BeautifulSoup(yahoo_html)
>>> print yahoo_soup

実際に取得した値を表示させるとこんな感じ。
< ?xml version='1.0' encoding='utf-8'?>
monty python
colt python
python インストール
python 制限
python cgi
python 入門
python ダウンロード
<!-- pls139.search.tnz.yahoo.co.jp uncompressed/chunked Thu Feb 14 23:52:57 JST 2008 --><br />
<!-- ws0.search.bbt.yahoo.co.jp uncompressed/chunked Thu Feb 14 23:52:57 JST 2008 --><br />
上記から
<result>の部分のみを取得する。

>>> yahoo_obj = []
>>> for yobj in yahoo_soup.findAll('result'):
...  yahoo_obj.append(''.join([str(t) for t in yobj.contents[:]]))


こんな感じかな。
とりあえず取れた。

Posted at: 
2008/02/14 23:13:16
0 Comments
0 TrackBacks
Tags: 
Python
Trackback: 
http://kishi-r.com/2008/02/14/pyhonyhooapi/trackback/

Pythonではてなダイアリーキーワード自動リンクAPIを試してみた

はてなダイアリーキーワード自動リンクAPI
今作成中のブログに使えないか考えてたので、
試してみた。

サンプルは、
Perlしかなかったので、
Pythonで書いてみた。

#まずxmlrpclibをインポートします。
>>> import xmlrpclib
#次にurlを指定します。
>>> server = xmlrpclib.ServerProxy('http://d.hatena.ne.jp/xmlrpc')
#次は実際リンクを貼りたい内容と各属性を指定しています。
>>> result = server.hatena.setKeywordLink({'body': 'はてなでスケボーやレコードなどを検査するとどんなレスポンスが返ってくるのだろう?', 'score': '20', 'a_target': '_blank', 'a_class': 'keyword'})
#最後にレスポンスを表示してみる
>>> print result<
<a>はてな</a><a>スケボー</a><a>レコード</a>などを検査するとどんなレスポンスが返ってくるのだろう?
こんな感じで返ってきたっす。

指定するパラメーターなどははてなに記載されていました。
uri : http://d.hatena.ne.jp/xmlrpc
encoding : utf8
methodName : hatena.setKeywordLink
parameters : 以下を参照
body(string): キーワードを抽出するテキストを指定します。
score(int): 0〜50。キーワードスコアのしきい値を指定します。指定された値よりもスコアが大きいキーワードのみが抽出されます。省略可。
cname(array): キーワードのカテゴリーを指定します。指定があった場合、「一般」と指定されたカテゴリーのキーワードが抽出されます。指定が無かった場合は、全カテゴリーとなります。book,music,movie,web,elec,animal,anime,food,sports,game,comic,hatena,clubが指定可能です。省略可。
a_target(string): アンカー(a)タグのtarget属性値を指定します。省略可。例:_blank
a_class(string): アンカー(a)タグのclass属性値を指定します。省略可。例:keyword

今回指定したのは、

・body : 'はてなでスケボーやレコードなどを検査するとどんなレスポンスが返ってくるのだろう?
・score : 20
・a_target : _blank
・a_class : keyword

です。
これをブログに組み込んだら面白いかな?
と考え中です。

Posted at: 
2008/02/09 00:15:39
0 Comments
0 TrackBacks
Tags: 
Python
Trackback: 
http://kishi-r.com/2008/02/09/pythonapi/trackback/

Social Graph API をPythonでやってみた

気になったのでやってみた。
自分のtwitterのページでFollowされているのを取得する。

まずはベースとなるURLが

http://socialgraph.apis.google.com/lookup

こちらは、
GoogleCodeに記載されている。
http://code.google.com/apis/socialgraph/

で引数を決める。
今回使用したのは、

・pretty(インデント・改行される。)
・callback(コールバック関数を指定)
・edo(FollowしているURLを表示させる)

In [1]: base_url = 'http://socialgraph.apis.google.com/lookup?q=http://twitter.com/kishir&pretty=1&callback=foo&
edo=1'

In [2]: html = opener.open(base_url).read()

In [3]: print html
foo({
 "canonical_mapping": {
  "http://twitter.com/kishir": "http://twitter.com/kishir"
 },
 "nodes": {
  "http://twitter.com/kishir": {
   "attributes": {
    "url": "http://twitter.com/kishir",
    "profile": "http://twitter.com/kishir",
    "rss": "http://twitter.com/statuses/user_timeline/kishir.rss",
    "atom": "http://twitter.com/statuses/user_timeline/kishir.atom"
   },
   "nodes_referenced": {
    "http://kishi-r.com/": {
     "types": [
      "me"
     ]
   },
    "http://twitter.com/kano_e": {
     "types": [
      "contact"
     ]
    },
    "http://twitter.com/soundkitchen": {
     "types": [
      "contact"
     ]
    },
    "http://twitter.com/tasukuchan": {
     "types": [
      "contact"
     ]
    },
    "http://twitter.com/yoshuki": {
     "types": [
      "contact"
     ]
    }
   }
  }
 }
});

なんでだろう?
Followされているユーザーが全て表示されない。
引数「q」に他のURLを加えると増えるのだが、
それも良くわからないなぁ~。

もうちょっと試してみるかな。

Posted at: 
2008/02/04 18:24:01
0 Comments
0 TrackBacks
Tags: 
Python
Trackback: 
http://kishi-r.com/2008/02/04/social_graph_api_python/trackback/

あわせて読みたい 人気ブログランキング - kishi-r.com track feed

Categories