ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2011年7月8日金曜日

PythonでTwitterのフォローしてない人だけを全てフォロー解除してやる(´。◕ω◕。)

どんな処理をしているかというと簡単で

http://api.twitter.com/1/friends/ids.json?&screen_name=screen_nameで取得できるフォロー中のリストから

http://api.twitter.com/1/followers/ids.json?&screen_name=screen_nameで取得でいるフォローされているリストのuser_idを削除して

残りのゆーざー==”自分をフォローしてないゆーざー”

となるわけなので

それらをoauthtwitterで継承して作ったメソッドdestroy_users_from_queryで削除してます。

 

oauthtwitterについてはここをみて下さい。

http://code.google.com/p/oauth-python-twitter2/

 

 

#!/usr/bin/env python
# encoding: utf-8

import urllib2
import simplejson
import oauthtwitter


#format ここにTwitterの登録情報いれる
consumer_key = ""
consumer_secret = ""
oauth_token        = ""
oauth_token_secret = ""
screen_name = ""

class Twitter(oauthtwitter.OAuthApi):
    """oauthtwitter.OAuthApiに下記のメソッドをついかする〜"""
    def DestoryUser(self, user_id, options = {}):
        options['user_id'] = user_id
        self.ApiCall("friendships/destroy", "POST", options)

    
def destroy_users_from_query():
    twitter = Twitter(consumer_key, consumer_secret, oauth_token, oauth_token_secret)
    json1 = urllib2.urlopen("http://api.twitter.com/1/friends/ids.json?&screen_name=" + screen_name)
    json2 = urllib2.urlopen("http://api.twitter.com/1/followers/ids.json?&screen_name=" + screen_name)

    following_list = simplejson.load(json1)
    followed_list = simplejson.load(json2)
    for i in followed_list:
        if i in following_list:
            following_list.remove(i)
            pass
    num = 0
    print "prgress in deleting..."
    for i in following_list:
        try:
            twitter.DestoryUser(i)
            num +=1
        except Exception, e:
            print e
    return "Unfollowed:"+str(num)+" users"

def main():
    print "まじでやる?(´・ω・`)\n"+"put y"
    query = raw_input()
    
    if query == "y":
        print destroy_users_from_query()
    else:
        exit()


if __name__ == '__main__':
    main()

2011年7月6日水曜日

PythonでHTMLをパースする方法

 

HTMLParserの使い方がぐぐってもあんまりいい方法が出てこなかったのでブログに書きます。

よく使うりんくの抽出ならびにそのばりゅーを取得するクラスです。もっとうまくかけるはずだけどめんどいのであしからず。。。。w 必要な方はカスタマイズなさってください(。◕ ∀ ◕。)

#!/usr/bin/env python
# encoding: utf-8

from HTMLParser import HTMLParser

class My_parser(HTMLParser):#

    def __init__(self):
        HTMLParser.__init__(self)
        self.is_a  =False
        self.href = None
        self.val = None
        self.data = []

    def handle_starttag(self,tagname,attribute):
        if tagname.lower() == "a":
            #aタグの始まり時にself.is_aをTrueに
            self.is_a = True
            for i in attribute:
                if i[0].lower() == "href":
                    self.href =i[1]
                    
    def handle_endtag(self,tag):
        if tag.lower() == "a":
            #おわりにはself.is_aをFalseに
            self.is_a = False
            
            self.data.append({
                "url":self.href,
                "val":self.val
                })
            self.href = None
            self.val = None
                    
    def handle_data(self,data):
        #atagの中にいる時だけばりゅーを代入
        if self.is_a is True:
            self.val = data

def main():
    html ="""
	<h3>test</h3>
	<div>
		<a href="hello.html">hello</a>
    		<a href="world.html">world</a>
    	</div>
    """
    parser = My_parser()
    parser.feed(html)
    print [item for item in parser.data]
    #[{'url': 'hello.html', 'val': 'hello'}, {'url': 'world.html', 'val': 'world'}]

            
                
if __name__ == '__main__':
    main()

 

2011年6月16日木曜日

Pythonで htmlを逆escape(unescape)する

日本語のちゃんとした言葉がわからなくて申し訳ないのですが

 

'&amp;''&lt;',  '&gt;'

などを

&,<,>に変更する方法です。

 

import xml.sax.saxutils

xml.sax.saxutils.unescape('&amp;,&lt;,&gt;')


これでunescape出来ます。

 

 

 

ちなみに普通のescapeは

import cgi

cgi.escape(&amp;,&lt;,&gt;')

 

で出来ます。

2011年6月15日水曜日

これからiPhoneAPPを作りたいと考えている方に伝えたいこと2/3

前回の続きです。

前回の記事 これからiPhoneAPPを作りたいと考えている方に伝えたいこと1/3

 

前回は、iPhoneAPP制作のためにはHTMLから始まるweb制作のスキル習得が有効ということを書きました。

まあ、iPhoneAPPを作りたい人はそもそもそんな知識は当たり前のようにお持ちかもしれませんが、僕のような初めてプログラミングの勉強を始める方にはおすすめの勉強法です。

 

そんなこんなで、web制作のおおよそのことを浅く学んだあとは、、、、、ついにObjectice-Cに再挑戦!!

 

しかしまだまだ、スキル不足です。

 

現に僕の場合、約2ヶ月前に挑戦しましたが、見事2度目の挫折を味わいましたw

その時点でなんとなく書いてることは理解できるのできたのですが、長すぎるメソッド名を覚える気になれず(まあ、覚える必要はないんですが)とにかく、挫折しましたw

 

そこで、もう一度寄り道をしようと思い、次に学んだのがPythonです。

Python !!!


いいですよね。響きが。

ぼく、Python 好きです。

PHPがMicroSoftだとしたらPythonはMacです。特に日本だと、まだそれほどメジャーな言語ではないみたいなので、僕はそういう存在感を好みます。(*´∀`)

 

Pythonはオブジェクト指向の見本のような言語です。

僕はまだ勉強中なので人に教える余裕なんてないんですけど、オブジェクト指向を学ぶにはPythonがぴったりだと思います。

 

まあ、既に習得したPHPや、Javascriptももちろんオブジェクト指向なんですけど、HTMLと連携して便利すぎるところが、一体どこがオブジェクト指向なのか分かりづらくなってる気がします。僕の場合はそうでした。

 

僕の所感なので、余り自信はないんですけどオブジェクト指向を学ぶにはやはりPythonが一番のオススメだと思います。

Pythonだとたいがいのことはなんでもできるしね(*´∀`)

 

第一回では、本を読まなくてもWEBで十分と書きましたが、図書館にやさしいPythonという本があって、借りるのが無料だったのでそれを借りて勉強しました。

多分僕が住んでいるど田舎の図書館にあったので、読者の近くの図書館にもあると思います。

この本が実に分かりやすかったです。

Pythonの基本的な構文から、組み込みライブラリの使い方のリファレンスも書いてあっておすすめです。

あと、公式の日本語サイトもおすすめです。

http://www.python.jp/doc/release/

チュートリアルってとこから読み始めるとよいです。

 

Pythonには標準でついているライブラリも盛り沢山ですし、それ以外にも有名なライブラリがたくさんあります。

このライブラリを使うという作業を学ぶことが、のちのちiPhoneアプリを作るにあたって非常に役立つ感覚となります。

 

ライブラリ(設計図のようなもの)をダウンロードして、自分の作ったプログラムに組み込む。。。(importする)

その作業がまさにオブジェクト指向なんです。(多分)

 

うまく説明できてない気がするのが非常に残念なんですが、この作業を出来るようになることが非常に大事!!です。

 

 

標準ライブラリを適当に学んだあとは下記のライブラリで色々遊ぶといいと思います

 

BeautifulSoup

http://www.crummy.com/software/BeautifulSoup/

HTMLのDOMを解析できる便利なラッパーです。

(ラッパーの使い方あってます??自信ないので違ったら突っ込んでください><)

これでWebページの好きな画像だけUrlLibでダウンロードしてむふふな画像を集めたり出来ますw

あと、ブログの記事とか広告なしで見れたりするプログラムとか

多分read it later とかも同じようにDOM操作する仕組みなんだなぁと、その時理解が深まったのを覚えています。

 

Google Apps Engine

http://code.google.com/intl/ja/appengine/

言わずとしれたgoogleの無料で使えるナイスなサービスです。

Pythonを学んでこれを使いこなすだけで、非常に自分の勉強に有意義さを感じるのではないでしょうか?

これはリンクの公式マニュアルに全て書いてあります。

本とかは買う必要ないと思います。それだけ公式マニュアルが非常に分かりやすいです。

とりあえずチュートリアルをこなすといいと思います。

(これはiPhoneAPP制作にはあんま関係ないけど,サーバーサイドの動きが欲しいAPPを作る場合にGAEは便利に使えるかも。。。)

 

wxPython

http://www.wxpython.org/

PythonでwindowsでもMacでも動くGUIを作れるナイスなライブラリです。

多分これの使い方を習得するとXcodeでのiPhoneAPPなんて楽勝ですw

wxPythonでGUIAPPを作るのとxcodeでiPhoneAPPを作るのはほとんど一緒です。

 

pygame

http://pygame.org/news.html

Pythonでゲームが作れるナイスなライブラリです。

マリオのようなゲームが作れます。

インベーダーゲームみたいのだと、ちょっと勉強すれば作れます。

ここでRect(図形描写)という概念が学べると思います。

その概念はiPhoneAPPを作る際、非常に役立ちます。

 

詳しい使い方はググルとたくさん出てきます。

本は買う必要ないと思います。Webの情報で十分です。

 

僕はここまで、無計画に勉強していたのでHTML学習スタート時から上記のPythonの使い方習得まで約半年ほどかかりましたが、頑張って計画的に学べば仕事しながらでも1-2ヶ月で十分学べると思います。

 

ここまで、学んだら次にやっとxcodeを使ってiPhoneAPPを作ります。

もう、あとは楽勝です。多分w

一見関係ないと思える他の言語を学ぶことがiPhoneAPP制作の近道!!

その言語とは特にPython!

これが僕の持論ですね。

 

今回の記事でだいたいのことを書いてしまいましたが次回は

xcode関係の話を書いていこうと思います。

(正直ネタ切れですw全2回にすればよかった。)

 

なにか間違ったことを書いていたらツッコミしてくれるとありがたいです。(^_^;)

では。

2011年5月11日水曜日

base64の使い方 --python--

'''base64の使い方'''

part = base64.b64encode('pass')

print(part)#cGFzcw==
print(base64.b64decode(part)) #pass

'''URLのパラメータとして使う場合は下記'''
part = base64.urlsafe_b64encode('pass')

print(part)#cGFzcw==
print(base64.urlsafe_b64decode(part))#cGFzcw==

md5,shaの使い方 --python--

'''md5の使い方'''

m = md5.new('pass-word')

print (m) #
print (m.hexdigest()) #ed0eacb4e34e50c1c53f9698600d4b86

import urllib

'''多分クオートしないとエラーになる...'''
try:
	print m.digest()
except UnicodeDecodeError:
	print u'UnicodeDecodeErrorなのだ'


'''URLのパラメータとして使用する場合はクオートする必要がある'''
quoted =''.join([urllib.quote_plus(x) for x in m.digest()])

print quoted #%ED%0E%AC%B4%E3NP%C1%C5%3F%96%98%60%0DK%86
'''shaの使い方'''

m = sha.new('pass-word')

print (m) #
print (m.hexdigest()) #ed0eacb4e34e50c1c53f9698600d4b86

import urllib

'''多分クオートしないとエラーになる...'''
try:
	print m.digest()
except UnicodeDecodeError:
	print u'UnicodeDecodeErrorなのだ'


'''URLのパラメータとして使用する場合はクオートする必要がある'''
quoted =''.join([urllib.quote_plus(x) for x in m.digest()])

print quoted #%ED%0E%AC%B4%E3NP%C1%C5%3F%96%98%60%0DK%86

pickleの使い方--python--

'''pickleの使い方'''

'適当なオブジェクトを用意する'
o = [1,2,3,(1,2,3),{1,2,3,4,(1,2)}]

print o #[1, 2, 3, (1, 2, 3), set([(1, 2), 1, 2, 3, 4])]


"""書き込みモードで開く"""
opened = open('test.dump','w')

'''pickle化'''
pickle.dump(o,opened)		
'''同ディレクトリにtest.dumpとして保存されている'''

opened.close()

'''dumpファイルを開く'''
opened2 = open('test.dump')

o2 = pickle.load(opened2) 

print o2 #[1, 2, 3, (1, 2, 3), set([(1, 2), 1, 2, 3, 4])]
'''ちゃんとオブジェクトとして再現できる'''
print o2[3][2] #3

o2.append({'hoge':'foo'})

print o2 #[1, 2, 3, (1, 2, 3), set([(1, 2), 1, 2, 3, 4]), {'hoge': 'foo'}]
opened2.close()

opened3 = open('test.dump','w')
	
'再度保存するときはdump'
pickle.dump(o2,opened3)

2011年4月25日月曜日

google.appengine.api メモ

覚えられないのでブログでメモしてみる

from google.appengine.api import users

でインポートする。

user = users.get_current_user()

でインスタンスを作って。。。

インスタンスメソッド

user.user_id()

Googleにおけるユーザー独自のIDを取得するメソッド

user.nickname()

ニックネーム(@の前を取得)を取得するメソッド

user.email()

ユーザーのemailアドレスを返すメソッド

create_login_url(dest_url)

訪問したユーザーに Google アカウントでログインするように促し、それから dest_url で指定した URL にリダイレクトします。この URL はリンク、ボタン、リダイレクトに適しています。

dest_url は、URL のフルパスとユーザー アプリケーションのドメインの相対パスのどちらでも構いません。

create_logout_url(dest_url)

訪問したユーザーをログアウトさせ、それから dest_url で指定した URL にリダイレクトします。この URL はリンク、ボタン、リダイレクトに適しています。

dest_url は、URL のフルパスとユーザー アプリケーションのドメインの相対パスのどちらでも構いません。

get_current_user()

現在のユーザー(処理中の要求を行ったユーザー)がログインしている場合は、そのユーザーの User オブジェクトを返し、そのユーザーがログインしていない場合は None を返します。

is_current_user_admin()

現在のユーザーがログインしており、このアプリケーションの管理者として現在登録されていれば、True を返します。

関数

nickname()

ユーザーの「ニックネーム」(表示名)を返します。ニックネームは、そのユーザーのメール アドレスがアプリケーションと同じドメインにある場合はそのユーザーのメール アドレスの「名前」部分、それ以外の場合はそのユーザーのメール アドレスそのものになります。

email()

ユーザーのメール アドレスを返します。アプリケーションが表示名に nickname を使用するようにしてください。

user_id()

ユーザーの一意で永続的な ID、str を返します。この ID は、ユーザーが自分のメール アドレスを変更した場合でも、常に同一です。

参考したURL

http://code.google.com/intl/ja/appengine/docs/python/users/userclass.html

http://code.google.com/intl/ja/appengine/docs/python/users/functions.html

2011年4月23日土曜日

pygameでのflag = not flagの使い方になるほどと思った。


flag = not flag

if flag:
	print "Trueの時の動作"
elif:
	print "Falseの時の動作"
呼び出される度にTrueとFalseが入れ替わるので便利です。