Twitterã®ã¦ã¼ã¶ã¿ã¤ã ã©ã¤ã³ã®RSSããã¼ã¹ããã¨ãã«ã¨ã©ã¼ãåºãå ´åã®å¯¾å¦æ³
ç¾è±¡
5æ4ã5æ¥ã®ã©ããã§ãTwitterã®åãã¦ã¼ã¶ã¿ã¤ã ã©ã¤ã³ãå¤ãã£ãããã ã
ãã®åãæ£ç¢ºã«ææ¡ãã¦ããªãã®ã ããç¾å¨ã®RSSï¼ãã¨ãã°ç§ã®ãã¤ã¼ãã®RSSã¯こんな感じï¼ã§ã¯ã
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:georss="http://www.georss.org/georss" xmlns:twitter="http://api.twitter.com"> ... <twitter:source> <a href="http://www.atebits.com/" rel="nofollow">Tweetie</a> </twitter:source> <twitter:place/> ... </rss>
ã¨ãã風ã«ãtwitteråå空éãã§ãã¦ããã
ç§ã¯ããã®RSSãå
ã«Rubyã®ã¹ã¯ãªããã§èªåã®ãã¤ã¼ããæ½åºããブログにまとめているã®ã ãããã®åå空éã®ããã§ï¼ï¼ï¼ã¹ã¯ãªããã以ä¸ã®ãããªä¾å¤ãåãããã«ãªã£ã¦ããã
RSS::NSError - prefix <twitter> doesn't associate uri <> in tag <source>: /usr/lib/ruby/1.8/rss/parser.rb:419:in `check_ns' /usr/lib/ruby/1.8/rss/parser.rb:449:in `start_have_something_element' /usr/lib/ruby/1.8/rss/parser.rb:396:in `start_else_element' /usr/lib/ruby/1.8/rss/parser.rb:347:in `tag_start' /usr/lib/ruby/1.8/rexml/parsers/streamparser.rb:24:in `parse' /usr/lib/ruby/1.8/rexml/document.rb:202:in `parse_stream' /usr/lib/ruby/1.8/rss/rexmlparser.rb:22:in `_parse' /usr/lib/ruby/1.8/rss/parser.rb:164:in `parse' /usr/lib/ruby/1.8/rss/parser.rb:79:in `parse' postmytweets.rb:95:in `get_user_timeline' (å¾ç¥)
坾妿³
ãã®å ´åãå ã«çµè«ãè¨ãã¨ãRSS::Parser.parseã使ã£ã¦ãããªãã°ã第äºå¼æ°ã«falseãæå®ï¼バリデーション無しでパースï¼ãããã¨ã§ä¾å¤ãçºçããªããªãã
# ä¾ # idã¨pã«ã¯é©å½ãªæ°åãå ¥ã rssdoc = open("http://twitter.com/statuses/user_timeline/#{id}.rss?page=#{p}").read rss = RSS::Parser.parse(rssdoc, false) # <- ã³ã³ï¼
ããã¾ãç´å¾ã®è¡ã坾妿³ãããªããã©ãRSSãä¿®æ£ãããã¾ã§ã¯ãããããããªãããã ã
解決ã¾ã§ã®çµç·¯ãªã©
å°ã£ã¦ãããã°ã°ã£ã¦ã¿ããã¨ãããã¨ã§ãæ¤ç´¢ããããTwitterã§ä»¥ä¸ã®ãããªããã¨ããçºè¦ã
![]() |
tdtds | RSS::Paeserããtwitterãªãã¦namespaceããããã¤ã£ã¦ããã ãã©ãã¡ããã¨xmlnsãããã ããªãã | 2010/05/04(ç«) 08:28:59 |
![]() |
tdtds | xmlns:twitterã¯ãRSS 2.0ã§ã¯æªãµãã¼ãã¨ããæå³ãããããTwitterå´ã®åé¡? ã§ããªãã§ä»ã¾ã§åãã¦ããã ? | 2010/05/04(ç«) 08:35:00 |
![]() |
ktou | @tdtds ã©ããªæãã«ãªããã§ããï¼ç¥ããªãè¦ç´ ã¯ç¡è¦ããããã«ã§ããæ°ããã¾ãã | 2010/05/04(ç«) 08:38:06 |
![]() |
tdtds | @ktou ãããä¸çªè©³ãã人ç»å ´! ã `check_ns': prefix <twitter> doesn't associate uri <> in tag <source> (RSS::NSError)ãã¨è¨ããããxmlnsãtwitterã®è¦ç´ ãç¡è¦ãããã°ããã®? | 2010/05/04(ç«) 08:40:21 |
![]() |
tdtds | @ktou ã¡ãªã¿ã«Twitterã®user_timelineã®feedã«ããã<twitter:source>ããå å¶ã§ãã | 2010/05/04(ç«) 08:41:25 |
![]() |
tdtds | @ktou Parser::parseã®ç¬¬2ã第3弿°ãfalseã«ãããéã£ã! ãããã¨ã! | 2010/05/04(ç«) 08:45:50 |
![]() |
ktou | @tdtds RSS::Parser.parseã®å¼æ°ã£ã¦ã©ããªã£ã¦ãã¾ããï¼falseã«ããã¨ç¡è¦ããªããªããã§ããï¼ããã©ã«ãã¯trueããã®APIããããã¥ããã¦ãããªãï¼ï¼ | 2010/05/04(ç«) 08:47:08 |
![]() |
ktou | @tdtds ä½ããã¦ããªãã§ããï¼ãã¶ãã第2弿°ãfalseã«ããã ãã§ããã¾ãï¼ | 2010/05/04(ç«) 08:48:41 |
![]() |
tdtds | @ktou ååãªãã³ãããããã¨ãããã¨ãw ã¡ãã£ã¨æéãªããã§ãä»ã®ãã¿ã¼ã³ã¯ãã¨ã§è©¦ãã¦ã¿ã¾ã | 2010/05/04(ç«) 08:50:01 |
念ã®ããã弿°ã®æå³ãRSS Parser::Tutorial.jaã§èª¿ã¹ãã¨ã第äºå¼æ°ã¯ãããªãã¼ã·ã§ã³ãè¡ãï¼trueï¼/è¡ããªãï¼falseï¼ããæå®ãããã®ã¨ã®ãã¨ã
ããªãã¼ã·ã§ã³ããªããã°éãã¨ãããã¨ã¯ãå ã®RSSã¯validã§ã¯ãªãã¨ãããã¨ã«ãªãã®ãï¼
ã¨ããããã§ãW3C Feed Validation Service, for Atom and RSSã«è©²å½RSSãçªã£è¾¼ãã§èª¿ã¹ã¦ã¿ãï¼結果ï¼ã¨ã
ine 17, column 0: Missing namespace for a (20 occurrences) [help]
<a href="http://www.atebits.com/" rel="nofollow">Tweetie</a> </twitter:so ...
ããaã¿ã°ã«åå空éæå®ããªããããã¨ããããã§ä¸ç®çç¶ã§ããã
ã¡ãªã¿ã«ã
第äºå¼æ°ãtrueã«ã第ä¸å¼æ°ãfalseã«ããã¨ã以ä¸ã®ãããªä¾å¤ãã
RSS::NotExpectedTagError - tag <{http://www.w3.org/2005/Atom}link> is not expected in tag <channel>: /usr/lib/ruby/1.8/rss/parser.rb:405:in `start_else_element' /usr/lib/ruby/1.8/rss/parser.rb:254:in `start_link' (å¾ç¥)
ãã®ä¾å¤ãèµ·ããçç±ãããããããªãã®ã ãã©ãªãã§ã ãããããããvalidãããªãã®ã§å¤ãªä¾å¤ãçºçãã¦ããããããªãï¼