アイデアの小槌Bot

このエントリーをはてなブックマークに追加

twitterアカウント samuraiapps から,8時間に1度,アイデアを創発させるようなつぶやきをします.

このサービスには,下記のAPIを使用しています.

Google 急上昇ワード


Web Services by Yahoo! JAPAN

連想検索エンジン reflexa

はてなキーワード連想語API

Google急上昇ワードからキーワードを取得し,それから連想される言葉をランダムに組み合わせてつぶやきます.ぜひ,samuraiappsをフォローしてください.

つぶやき例

アイデアの小槌: 慎重 と 発言 from #ideamaker http://samurai-apps.com

ソースコードも公開してます.以下のスクリプトをcronで起動してます.Pythonで,yahoo,はてな,reflexaのAPIにアクセスし,twitterにつぶやくご参考になれば幸いです.ご質問があればお問い合わせ下さい.

参考にさせていただいたサイト:良いもの。悪いもの。

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import os, sys
import urllib
import time
import datetime
import random
import simplejson
import oauth2
import pickle
from xml.etree.ElementTree import ElementTree
from urllib import urlopen
from oauthtwitter import OAuthApi
import xmlrpclib

def twitter():
    if os.path.isfile(KEY_FILE):
        access_token = pickle.load(file(KEY_FILE))
    else:
        tw = OAuthApi(CONSUMER_KEY, CONSUMER_SECRET)
        request_token = tw.getRequestToken()
        authorization_url = tw.getAuthorizationURL(request_token)
        print authorization_url
        tw = OAuthApi(CONSUMER_KEY, CONSUMER_SECRET, request_token)
        oauth_verifier = raw_input("What is the PIN? ")
        access_token = tw.getAccessToken(request_token,oauth_verifier)
        pickle.dump(access_token, file(KEY_FILE, "w"))
    print("oauth_token: " + access_token['oauth_token'])
    print("oauth_token_secret: " + access_token['oauth_token_secret'])
    return OAuthApi(CONSUMER_KEY, CONSUMER_SECRET, access_token['oauth_token'], access_token['oauth_token_secret'])


def getyahoo(keyword):
    appid = 'xxxxyahooappidxxxx'
    ekeyword =  urllib.quote(keyword.encode('utf-8'))
    url = 'http://search.yahooapis.jp/AssistSearchService/V1/webunitSearch?appid=%s&query=%s&results=50' % (appid, ekeyword)
    xml = ElementTree(file=urlopen(url))
    result = xml.findall('{urn:yahoo:jp:srchunit}Result')
    if len(result) != 0:
        ideaword = ((result.text.strip(keyword)).strip()).encode('utf-8')
    else:
        ideaword = None
    return ideaword

def gethatena(keyword):
    s = xmlrpclib.ServerProxy("http://d.hatena.ne.jp/xmlrpc")
    res = s.hatena.getSimilarWord({'wordlist':keyword})
    result = [ ]
    for r in res['wordlist']:
        result.append(r['word'])
    print len(result)
    if len(result) != 0:
        ideaword = result.encode('utf-8') 
    else:
        ideaword = None
    return ideaword

def getreflexa(keyword):
    url = 'http://labs.preferred.jp/reflexa/api.php?q=%s&format=xml' % keyword
    xml = ElementTree(file=urlopen(url))
    result = xml.findall('//word')
    if len(result) != 0:
        ideaword = (result.text).encode('utf-8')
    else:
        ideaword = None
    return ideaword

#get from google
googleKWURL = 'http://www.google.co.jp/m/services/trends/get'
xml = ElementTree(file=urlopen(googleKWURL))
query = xml.findall('//query')

keyword1 = query.text
keyword2 = query.text

encodekeyword1 = urllib.quote(keyword1.encode('utf-8'))
encodekeyword2 = urllib.quote(keyword2.encode('utf-8'))

keywordlist1 = [ ]
keywordlist2 = [ ]
#Yahoo!
keywordlist1.append(getyahoo(keyword1))
keywordlist2.append(getyahoo(keyword2))

#hatena
keywordlist1.append(gethatena(encodekeyword1))
keywordlist2.append(gethatena(encodekeyword2))

#reflexa
keywordlist1.append(getreflexa(encodekeyword1))
keywordlist2.append(getreflexa(encodekeyword2))

try:
    keywordlist1.remove(None)
except:
    pass

try:
    keywordlist2.remove(None)
except:
    pass

CONSUMER_KEY = "xxxx"
CONSUMER_SECRET = "xxxx"
KEY_FILE = "/path/to/twitter_key.dat"

if len(keywordlist1)!= 0 and len(keywordlist2)!=0:
    selectkeyword1 = keywordlist1
    selectkeyword2 = keywordlist2

    twit = 'アイデアの小槌' + ': ' + selectkeyword1 + ' ' +  'と' + ' ' + selectkeyword2 + ' from #ideamaker http://samurai-apps.com'
    print twit
    tw = twitter()
    tw.UpdateStatus(twit)
© 2017 samurai-apps. All rights reserved. Powered by WordPress Entries RSS Comments RSS