なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

python twitter モジュールを使ってハッシュタグ検索したい2

昨日の続き。
やっぱりtwitter.pyだとハッシュタグ検索が難しいみたいなので、とりあえずこのモジュールは使わない方針に
切り替える。

それでもtwitter APIは使いやすいので簡単にコードが書けた。苦労したのはjsonフォーマットの文字列の処理。
そもそもjsonなんか扱ったことなかったが、ただの文字情報フォーマットでしかなく、jsonモジュールを使って
変換するとpythonのデータ型に変換できる。まあ、その変換したデータからツイートの文字列だけをとりだすのに苦労したが…

以下、指定したハッシュタグを含むつぶやきを最大100件表示するコード。
ただし、あまり古いつぶやきが検索にかからなくなっているので全てのつぶやきを
取得できるわけではないことに注意。

import urllib,json

d = urllib.urlopen("http://search.twitter.com/search.json?q=%23☆ここにタグ名を入れる☆&since=2011-01-20&rpp=100")
r = d.read().decode("utf-8")
l = json.loads(r)
for s in l["results"]:
print s["text"]


urlでの引数の指定によって結果を変えられる。

sinceは指定した日付以降のつぶやきのみを表示
rppは取得するつぶやきの件数(最大100件らしいが未確認)
他にもuntilとかいう引数もある。詳しくはtwitter APIを参照されたし。

あと、同じくURLの %23 は # を表しているものだと思われる。

以上。
スポンサーサイト

python twitter モジュールを使ってハッシュタグ検索したい

twitter apiを簡単にpythonで扱うことのできるモジュールがあるんだけど
いまいちハッシュタグ検索のやりかたがわからない、というか調べているうちに
できないような気もしてきたのだが…

とりあえず完全にではないがそれっぽいことができたのでメモメモ。

実行環境はWindows Vista

まずtwitterモジュールを使うためにダウンロードしてきてインストールしてこないといけないんだけど
twitterモジュールのほかに依存するモジュールが2,3個あるのでそれもインストールすること
依存モジュールはtwitterモージュールをおいてるページにリンクを書いてくれてるのでそれを参考に。

私はここで少しハマッてしまった。依存モジュールをインストールするときに不安定版のモジュールを入れてしまい
import twitter でエラーがでてしばらく困った。もちろん安定版の依存モジュールをいれてやればうまくいった。


このtwitterモジュールはかなり使いやすく、今回のハッシュタグ検索っぽいことをして結果をファイルに書き出すだけの作業だとかなり簡潔に書けてします。以下今回書いたコード


import twitter

w = open("text.txt","w")
api = twitter.Api()
result = api.GetSearch("#1000yen")
for s in result:
w.write(s.text.encode("cp932")+"\n")




以下は出力されてたファイル


1.23.16.32 モントレ一階の自販機でドリンコ。 MY343135N 1.21.19:03 渋谷の東急中にある蜂蜜屋さんラベイユで蜂蜜買う。 #1000yen
01.21.20時頃 渋谷の仙台やでご飯。 MY343133N 1.21.19:03 渋谷の東急中にある蜂蜜屋さんラベイユで蜂蜜買う。 #1000yen
kw861168a 2011/1/19 18:30ころ。立川のheartbeatでcornersのライブを見るのと引き換えに手放す。これは、2011/1/14 17:00山梨信用金庫でおろしたもの。 #1000yen


うーん。少し結果がおかしいが今日はこのへんで切り上げるとする。


久しぶりにwxPythonさわったのでメモ

久しぶりにTkinterではなくwxPythonの方でGUIプログラムを書きたくなったのでwxPythonの勉強を始めた.

Tkinter ではなくwxPython を使う理由はやっぱり見た目が優れているのと扱えるウィジェットも多そうだから.


しばらく使ってて分かったことは,JavaのSwing(だっけ?)みたいにフレームの上にパネルをのせて,パネルの上にボタン等のウィジェットを置く感じ.レイアウトもSizerっていうのがあってやっぱJavaっぽい気がする.

サンプルコードは次回以降に回すとして今回はwxPythonについて調べているうちに分かったこと感じたことを書いておく.

まずwxPythonに関するまとまった日本語の情報はほとんどない.英語だとある程度チュートリアルは用意されているが,懇切丁寧に説明しているというほどではないので,複雑なGUIを作るにはチュートリアルだけれなく,別に提供されているwxPythonのデモ集をダウンロードしてソースを呼んで理解する必要がありそう.
それでもTkinterよりも見た目が良いのでwxPythonを調べる価値は十分ある.

USB Bluetoothアダプタ買ってみた

USB BluetoothアダプタとBluetoothがほぼ標準で搭載されているAndroid携帯でPCの遠隔操作をするアプリの制作を計画中。

で、今日そのアダプタが届いて、PythonにPyBluezというBluetoothのラッパーモジュールを追加。
それで
import bluetooth
dev = bluetooth.deiscover_devices()
とやれば近くのデバイスが検出されるはずなのだが、できない!



それでいろいろ試行錯誤したりして3時間後


付属されていたCDからインストールしていたドライバが原因だったらくし
アンインストールしてVistaデフォルトのドライバをつかったらすんなりいった。3時間返せ東芝!
あと注意するのがdiscover_devicesするときはAndroid端末のBluetooth設定で検出可能に設定して
おかないとやっぱりできないみたい。

ubuntu でGUIユーザー追加ツール1人版

ubuntuとかlinuxで有効なユーザー追加ツール。
グループIDは適宜書き換えてください。


main.py

#!/usr/bin/python
#coding:utf-8
from tkMessageBox import showinfo
from Tkinter import *
import os,sys
import getUsers,add

def reg():
username = e1_str.get()
if username == "":
showinfo(message=u"名前を入力してください",title=u"失敗")
return
if e2_str.get() == "":
showinfo(message=u"パスワードを入力してください",title=u"失敗")
return
if e2_str.get() == e3_str.get():
users = getUsers.getUsers()
if users.count(username) != 0:
showinfo(message=u"既にその名前は使われています",title=u"失敗")
return
else:
w = open(".newuser.tmp","w")
w.write(username+":"+e2_str.get()+"\n")
w.close()
add.addUser(".newuser.tmp")
os.system("rm .newuser.tmp")
showinfo(message=u"登録完了",title=u"成功")
else:
showinfo(message=u"パスワードが間違っています\n入力しなおしてください",title=u"失敗")
return

#check uid is root?
if os.getuid() != 0:
showinfo(message=u"このプログラムは管理者権限で実行してください",title=u"失敗")
sys.exit()

root = Tk()
root.title("AddNewUser")
e1_str = StringVar()
e2_str = StringVar()
e3_str = StringVar()
label1 = Label(text="UserName")
label1.pack()
entry1 = Entry(textvariable=e1_str)
entry1.pack()
label2 = Label(text="pass")
label2.pack()
entry2 = Entry(textvariable=e2_str,show="*")
entry2.pack()
label3 = Label(text="pass again")
label3.pack()
entry3 = Entry(textvariable=e3_str,show="*")
entry3.pack()
button1 = Button(text="OK",command=reg)
button1.pack()

root.mainloop()



add.py

#coding:utf-8
import os

def addUser(userlist):
r = open(userlist,"r")
GIDS = "4,20,21,24,25,26,29,30,44,46,104,1005"
users = []
for line in r:
users.append(line[:line.index(":")])
for user in users:
os.system("useradd " + user)
os.system("usermod -G " + GIDS+" "+user)
os.system("mkdir /home/" + user)
os.system("chown -R :" + user + " /home/" + user)
os.system("chown -R " + user + " /home/" + user)
os.system("chmod 700 /home/" + user)

os.system("chpasswd < " + userlist)



getUsers.py

import os
def getUsers():
r = open("/etc/passwd","r")
users = []
for line in r:
users.append(line[:line.index(":")])
return users


Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。