ç´ äººå¤§å¦çãhatenaAPIãã¤ã¸ã£ã¦ hatenastarã®ã¯ã¦ãã©ã³ãã³ã°botä½ã£ã¦ã¿ãã
ãç´ äººå¤§å¦çãã¨ããçç¾ãªé¿ãã§ãããæ®å¿µãªããç·ã§ãã
è¶£å³ã§ããã°ã©ãã³ã°(ãããåæ©)ããã£ã¦ãã ãã®å¤§å¦çã§ãã¾ã æ
å ±ç³»ã®å¦é¨ã«æå±ãã¦ããããã§ããªãã§ããªããã§ããããããªtwitter botãä½ã£ã¦ã¿ã¾ããã
æ¯æ0åããã«ã¯ã¦ãªã®ãããã¨ã³ããªãåå¾ãããããã®ãã³ã¡ã®ä¸ã§hatenastarãå¤ãä»ãã¦ãããã¤ã¼ããéç¥ããbotã§ãã
14æã®1ä½(117pts)luxsuperpoor:ãªãã¦è©³ç´°ãªããè¦ããªãã http://t.co/iV2KtjyVud
— hatenastar_ranking (@HatenastarRank) 2014, 6æ 2514æã®2ä½(87pts)megazalrock:ã¯ã¦ãã£ã¦å®å
¨ãªå ´æããç³ãæããã·ã¹ãã ã§ããï¼ http://t.co/iV2KtjyVud
— hatenastar_ranking (@HatenastarRank) 2014, 6æ 2514æã®3ä½(68pts)asazuki508:ãåèã®å¥³æ§ãã¨ããæ¨©å¨ã使ã£ãã¬ããªãã¯ãç§èªèº«ã¯ãããã£ã¦è¨è«ãæ¼ããã¤ãããã¨ãæ¹å¤ãããã¨ãããããã£ã¨ã¾ããããããªããã¨æè¿æãå§ãã¦ãããä¾ãã°ã権åè
ãæ¹å¤ããªãåâ¦â¦ http://t.co/iV2KtjyVud
— hatenastar_ranking (@HatenastarRank) 2014, 6æ 25ã»
ã»
ã»
14æã®9ä½(45pts)managon:å®ã«æ¥æ¬ãããã®ããæè¦ã¨æãã¾ããããããç©ã¿éãªãã¨æ¹å¤ã¨æè¦ã®åºå¥ãã¤ããªããªããè°è«ããã§ããªãé°å²æ°ãã§ããããã®ã ã¨æãã¾ããæ¹å¤ãããªã§ã¯ãªãæ¹å¤ãããå´ãé ·ãã¦ãã¾ãããâ¦â¦ http://t.co/iV2KtjyVud
— hatenastar_ranking (@HatenastarRank) 2014, 6æ 2514æã®10ä½(38pts)kyoumoe:鿬¡ã¯å¥ã«ãã£ã¬ã³ã¸ãããããããªãã¦åã«åæ§ä¸å£ãªèªåããããåºããã ããªã®ã§ããããå¦ã¶ã¹ããã¨ã¯ä½ããªãã®ã§ã¯ http://t.co/iV2KtjyVud
— hatenastar_ranking (@HatenastarRank) 2014, 6æ 25ãã£ããä½ã£ãã®ã§ãã¦ãã¦ã®ä¼æã宣ä¼ãå ¼ãã¦è¨äºãæ¸ãã¦ã¿ããã¨æãã¾ãã
åæ©
æ°æ¥åãããªè¨äºãã¯ã¦ãã§ãããã¨ã³ããªå
¥ããã¦ãã¾ãããã
ã¯ã¦ãAPIã§webãµã¼ãã¹ãä½ãããå
¨ã¦ã®äººã«åãã¦æ¸ãã¾ãã - Syncer
twitterã®apiã¯gemã§ãããªãã«ç°¡åã«(çè§£ãã¦ããªãã¦ã)使ããããä¸åº¦ã¯ã¦ãã®apiã使ã£ã¦ã¿ããã¨æã£ã¦ããã¨ããã ã£ãã®ã§ãã¾ãã«èªåã®ããã®è¨äºã§ã¯ãªããã¨ãå³å¹ãã¯ãããããã§ãã
1000è¶
ãã¨ããé©ç°çãªãã¯ãæ°ã§ãããããããå¤ãã®äººãããã¨ã§èªããç¶æ
ã«ãªã£ã¦ãããã¨ã®ãå¤åã«æ¼ãããåãããã¯ãããã¯ãããã©ä½ä½ããâ¦ãã¨èãããã§ãã¾ããã¨ã«ã
ããã§æãã¤ããã®ã¯ãã¯ã¦ããã¨ãããã¯ã¦ãªæã®æå¤§ã®ç¹å¾´ã§ãã大åå©ã¨ããã«ä»ããhatenastarãåã¯å¼±å°ãªã®ã§ä¸é¢¨å ã§é£ä¸æ¯ã«ãªã£ãæ(åèï¼ã¯ã¦ãªããã¯ãã¼ã¯ - ææ¥æ°èãã¸ã¿ã«ï¼ã©ã¼ã¡ã³ã®ãä¸é¢¨å ãç·æ¬åºã§é£ä¸æ¯ãå¶æ¥åæ¢ï¼æ¥ - 社ä¼)ãããããæãããããã¯ã¤ããªãã®ã§ãããå¤ãã®äººã風åºããã¸ã£ã¬ãåã¦ä»ãæ³¢åã«ãã£ã¦hatenastarã稼ããã¨ç»çãã¦ããã®ãã¯ã¦ãªæã§ãããã
ãã ãhatenastarã¯åè¨äºå
ã§ã®ã©ã³ãã³ã°ããè¦ããªãããããã人æ°ãã¿ããå¿
ãããã©ã³ãã³ã°ãåæ ãã¦ããããã§ã¯ãªã(ã½ã¼ãããã¦ããããã§ã¯ãªã)ããªã©ãªã©ã®çç±ããããããããªè¨äºã§ã®hatenastarãæ¯è¼ãããæ¥½ããããããªããã¨æããhatenastarãã©ã³ãã³ã°ã«ããããã䏿éã«ä¸åéç¥ããbotãä½ããã¨æãè³ã£ã訳ã§ãã
botã®æ¦è¦
è¨èª:Ruby
ç°å¢:Heroku
説æ:ã䏿éãã¨ã«ã¯ã¦ãã®ãããã¨ã³ããªå
å
¨ã¦ã®ã¨ã³ããªã¼ã§ãä»ããããã¯ã¦ãªã¹ã¿ã¼ã®ã©ã³ãã³ã°top10ãéç¥ããbotã§ãã[é»è²ãç·ã赤ãé]ããããã[1,3,6,10]ãã¤ã³ãã§ããã
使¥è¨é²
ã½ã¼ã¹ãªã©ã¯https://github.com/mazamachi/hatenastar_tweetã«ä¸ãã£ã¦ã¾ããè¦ã¦ããã ããã°ãããã¨æãã®ã§ããããªãã¸ã§ã¯ãæåã¨ãããã®ãå
¨ãåºæ¥ã¦ããããæ»
è¶è¦è¶è¦ã¥ããã§ãã
ã¨ããããTwitter botã¯ä½ã£ããã¨ããã£ãã®ã§ããã®æé ã追ãã¾ããã
$ heroku create
ã§heroku appãä½ããgitã§è²ã
ã(ããåãã£ã¦ãªã)ãgem 'twitter'ã使ãã¨ã
ãªã®ã§èå¿ãªã®ã¯ã¯ã¦ãªã®apié¨åãªã®ã§ãããæ¬å½ã«ãã¶ã®åå¿è
ãªã®ã§ãããããJSONã¨ãããã®ãããåãããªãã¬ãã«ãJavascriptã«é¢ãã¦ã妿 ¡ã§è§¦ã£ã¦ã¿ãã¨ãã«ã¤ãã§ã«ã¡ãã£ã¨åå¼·ããã¬ãã«ãªã®ã§ãã¾ãã¡è¦ãç®ãããåãããªãã
ã§ãããããªäººã§ã大ä¸å¤«ããããrubyãªããã
rubyã«ã¯ãã¨ãã¨module JSONãããã®ã§ãJSON.parse(url)ã§JSONãå
ã«ããã·ã¥ãã§ãã¾ãã
(主ã«ãã®è¾ºã®ãã¨ã¯ãã¡ãã®ãµã¤ããåèã«ãã¾ãã:Rubyã§ã¯ã¦ãªã®ããã¯ãã¼ã¯ã®APIãå©ç¨ãã¦ã¿ã - yk5656 diary)
JSONãåå¾ããããã®urlã¯ã¨ã³ã³ã¼ããã¦ãããªãããªããªãã®ã§ããããããrubyãªã require 'uri'ããã¦ããã° URL.escape(url)ã§OK.
ãã³ã¡ã®ãã¼ããªã³ã¯ã使ããã®ããããã¯ãã¼ã¯æ
å ±ããç°¡åã«åºæ¥ã¾ããã
ããã¾ã§å®è¡ãã¦ã¿ãã¨403ã¨ã©ã¼ãåå ã¯ããããããªããã§ãããå¤å䏿°ã«500åãJSONãåå¾ãããªãã¦ã©ãèãã¦ãã¢ã¯ã»ã¹ãããã§ãããã
ããã§urlã&=ã§ã¤ãªããã¨æã£ãã®ã§ãããä»åº¦ã¯éã«URLãé·éãã414ã¨ã©ã¼ã
çµå±ããã¼ããªã³ã¯ã200åãã¤ç¹ãããã¨ã§è§£æ±ºãã¾ããã
ã¤ãã«ãããã¨ã³ããªã®åå¾ã§ãããããã¯RSSãRSSã使ã£ããã¨ã¯ãã£ãã®ã§ãããã©ããããã®ãªã®ãã¯å
¨ãç¥ãã¾ããã§ããã
ã§ã大ä¸å¤«ããããrubyãªããã
JSONã®å ´åã¨åããRSSã¢ã¸ã¥ã¼ã«ãããã®ã§ãfeedã®url(feed_urlã¨ãã¾ã)ãä¸ããããæã
RSS::Parser.parse(feed_url)
ã§ãããç°¡åã«ããã·ã¥åã§ãã¾ãã
ãã ããã³ã¡ã®ãã¼ããªã³ã¯ããJSONãåå¾ããã¨ããã®ãã³ã¡ãã©ã®ãã¼ã¸ãããã¯ãã¼ã¯ãããã®ãªã®ãããããªããããã¯æå¾ã«ãã¤ã¼ãããã¨ãã«å°ãã¨æãã["(ãã³ã¡ã®URL)",ã¹ã³ã¢,"(entry_url)"]ã¨ããé åãæä½ããããã«ãããã¨ã§è§£æ±ºãã¦ãã¾ãã
ããã¦æå¾ã®ãã¤ã¼ãé¨åã
ã¨ã³ããªã¼ã®URLã¨ã¦ã¼ã¶ã¼åã¯ããã£ã¦ããã®ã§ç°¡åã«ã³ã¡ã³ãã¯åå¾ã§ãã¦ããã¤ã¼ããç°¡åã«ä½æã§ããâ¦ãã§ãããtwitterã«botã§æç¨¿ããã¨ãã®æå¤§ã®æµã140æåãåã³ãéè¤ç¦æ¢ãã
éè¤ç¦æ¢ã¯ãã¤ãéãåæé帯ããã¤ã¼ãã«è¿½å ãããã¨ã§ã©ãã«ããªã£ããã§ãããå°ã£ãã®ã¯140æåãurlã¯ã©ããã¦ãä»å ãããã£ãã®ã§ããããã¯ãã¯ãæå¾ã«ç½®ããããæ¬å½ã¯Twitterã§ä½¿ç¨ãã¦ããt.coã®é·ãã使ãããã£ãã®ã§ãããTwitterã¯ã©ã¹ã®ä½¿ãæ¹ããã¯ãããåãããªããOauthèªè¨¼ãå¿
è¦ãªã¨ãã®ã¡ã½ããã®ä½¿ãæ¹ã£ã¦ã©ããããã ããï¼
ã¨ãçµå±ããããªãã¾ã¾ãªã®ã§bit.lyã使ããã¨ã«ãã¾ãããããããã¯ãgemãç¨æããã¦ããã®ã§ç°¡åã
åèã«ãããµã¤ãã¯ãã¡ãï¼Rails3ã§ãbitly.comãå©ç¨ããç縮URLã使ãã - Qiita
ãããã¤ããã°ãã¤ã¼ããçæã§ããã®ã§ããã¨ã¯ãã¤ã¼ãããã ããç°¡å(使¥æéå¤åãã¼ã¿ã«ã§10æéããã)ã
ããã ãã§ãè¯ãã£ãã®ã§ããããã£ãããªã®ã§é«éãã©ãã¼æ©è½ãã¤ãã¦ã¿ã¾ãããããã«ã¤ãã¦ã¯åã«æ¸ããè¨äºãè¦ã¦ã¿ã¦ãã ãã(twitterã®Streaming APIã使ã£ãé«éèªåãã©ãã¼è¿ã with ruby on Heroku - ã¯ãã§ããã¼ãã«ãªæ¥è¨)ã
ææ³ã¨å¿æ®ã
JSONã¨ãRSSãããã·ã¥åããã¨è¶
楽ï¼ä½ãã§ããªããã¨ã¯ãªãã®ã§ã¯ãªããã¨æã£ã¦ãã¾ãã¬ãã«ã§ããããã¾ããããã£ã±ãRubyã¯æ¥½ããï¼ï¼
ãã ããã¯ãã½ã¼ã¹ãæ±ãããªãã¸ã§ã¯ãæåãããã£ã¦ããªããgitã¨ãã®ãã¼ã«ãå
¨ã使ãããªããªãããªã©ãªã©ã®åçç¹ã¯å¤ãã§ãã
ãã ããä»ã¾ã§ç´ å æ°åè§£ããã ãã®ç´ æ°æè¨bot(@today_prime_bot)ãæååæ¤ç´¢ããã ãã®åå¨çã«ã¬ã³ãã¼BOT(@today_pi_bot)ããä½ããªãã£ãã¨ããããèããã°ãã¾ããããªãã«æç¨ãª(?)BOTãä½ããããã«æé·ã§ããã®ããªã¨æãã¾ãã
ä»å¾ã¯ãã®ã©ã³ãã³ã°ã«ç»å ´ããåæ°ãã¾ãã©ã³ãã³ã°ã«ãã¦ã¿ããããã®ã楽ããã®ããªã¨ãèãã¦ã¾ãã
ãã¨ãæã®è²ã«å¯¾ãããã¤ã³ããã©ãããã°ããã®ãã¨ããã¾ãã¡ãããããã«ã©ã¼ã¹ã¿ã¼ã®æ±ããçµæ§è»½ããªã£ã¦ãã¾ãã¾ããã
ãªãããããã¹ãã ã¿ãããªã®ãããã°è¨ã£ã¦ãã ããã
ã¯ã¦ãªæã®çãããmixiãdisã£ããæ±äº¬ã§æ¶èãããå¢ç°æå¦ãæ¹è©ããããã¦æ¥½ããhatenastar ã©ã¤ããéããæä¼ããã§ãããå
æ ã§ãã
ããããã¼ã(å°å£°)
åèã«ãããµã¤ãã¾ã¨ã
http://syncer.jp/hatebu-api-matome
http://d.hatena.ne.jp/yk5656/20140318/1395563717
http://developer.hatena.ne.jp/ja/documents/star/apis/entry
http://developer.hatena.ne.jp/ja/documents/bookmark/apis/getinfo
http://qiita.com/ysk_1031/items/50c8055951c9b990b7c9
ã¢ã¤ã³ã³ã«ã¤ãã¦

ã¢ã¤ã³ã³ãæãæµ®ãã°ãªãã£ãâ¦â¦13! = 6227020800ã§ãããããªã«æã¤ããã¨ã¯ã¾ããªãã§ãããã
ãªããã¤ã¤ã¢ã¤ã³ã³ããã°ãã ãã(æé¡)