document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-202470\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"kn\">from<\/span> <span class=\"nn\">calendar<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">timegm<\/span><\/div><div class=\"line\" id=\"LC2\"><span class=\"kn\">from<\/span> <span class=\"nn\">datetime<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">datetime<\/span><\/div><div class=\"line\" id=\"LC3\"><span class=\"kn\">from<\/span> <span class=\"nn\">rfc822<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">parsedate<\/span><\/div><div class=\"line\" id=\"LC4\"><span class=\"kn\">from<\/span> <span class=\"nn\">urllib<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">urlencode<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"kn\">from<\/span> <span class=\"nn\">urllib2<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">urlopen<\/span><\/div><div class=\"line\" id=\"LC6\"><span class=\"kn\">from<\/span> <span class=\"nn\">django<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">template<\/span><\/div><div class=\"line\" id=\"LC7\"><span class=\"kn\">from<\/span> <span class=\"nn\">django.utils<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">simplejson<\/span><\/div><div class=\"line\" id=\"LC8\">&nbsp;<\/div><div class=\"line\" id=\"LC9\"><span class=\"n\">register<\/span> <span class=\"o\">=<\/span> <span class=\"n\">template<\/span><span class=\"o\">.<\/span><span class=\"n\">Library<\/span><span class=\"p\">()<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;<\/div><div class=\"line\" id=\"LC11\"><span class=\"k\">class<\/span> <span class=\"nc\">TwitterNode<\/span><span class=\"p\">(<\/span><span class=\"n\">template<\/span><span class=\"o\">.<\/span><span class=\"n\">Node<\/span><span class=\"p\">):<\/span><\/div><div class=\"line\" id=\"LC12\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">__init__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">user<\/span><span class=\"p\">,<\/span> <span class=\"n\">variable_name<\/span><span class=\"p\">):<\/span><\/div><div class=\"line\" id=\"LC13\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"n\">user<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">variable_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">variable_name<\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC16\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">def<\/span> <span class=\"nf\">render<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">context<\/span><span class=\"p\">):<\/span><\/div><div class=\"line\" id=\"LC17\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">parameters<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"s\">&#39;id&#39;<\/span><span class=\"p\">:<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">user<\/span><span class=\"p\">}<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">encoded_parameters<\/span> <span class=\"o\">=<\/span> <span class=\"n\">urlencode<\/span><span class=\"p\">(<\/span><span class=\"n\">parameters<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC19\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">url<\/span> <span class=\"o\">=<\/span> <span class=\"s\">&#39;http://twitter.com/statuses/user_timeline.json?<\/span><span class=\"si\">%s<\/span><span class=\"s\">&#39;<\/span> <span class=\"o\">%<\/span> <span class=\"n\">encoded_parameters<\/span><\/div><div class=\"line\" id=\"LC20\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">urlopen<\/span><span class=\"p\">(<\/span><span class=\"n\">url<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC21\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">tweets<\/span> <span class=\"o\">=<\/span> <span class=\"n\">simplejson<\/span><span class=\"o\">.<\/span><span class=\"n\">load<\/span><span class=\"p\">(<\/span><span class=\"n\">response<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC22\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC23\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">for<\/span> <span class=\"n\">tweet<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">tweets<\/span><span class=\"p\">:<\/span><\/div><div class=\"line\" id=\"LC24\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">timestamp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">timegm<\/span><span class=\"p\">(<\/span><span class=\"n\">parsedate<\/span><span class=\"p\">(<\/span><span class=\"n\">tweet<\/span><span class=\"p\">[<\/span><span class=\"s\">&#39;created_at&#39;<\/span><span class=\"p\">]))<\/span><\/div><div class=\"line\" id=\"LC25\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">tweet<\/span><span class=\"p\">[<\/span><span class=\"s\">&#39;python_date&#39;<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">datetime<\/span><span class=\"o\">.<\/span><span class=\"n\">fromtimestamp<\/span><span class=\"p\">(<\/span><span class=\"n\">timestamp<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC26\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC27\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">context<\/span><span class=\"p\">[<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">variable_name<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tweets<\/span><\/div><div class=\"line\" id=\"LC28\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"s\">&#39;&#39;<\/span><\/div><div class=\"line\" id=\"LC29\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC30\"><span class=\"k\">def<\/span> <span class=\"nf\">fetch_tweets<\/span><span class=\"p\">(<\/span><span class=\"n\">parser<\/span><span class=\"p\">,<\/span> <span class=\"n\">token<\/span><span class=\"p\">):<\/span><\/div><div class=\"line\" id=\"LC31\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"sd\">&quot;&quot;&quot;<\/span><\/div><div class=\"line\" id=\"LC32\"><span class=\"sd\">    In templates, call like the following:<\/span><\/div><div class=\"line\" id=\"LC33\"><span class=\"sd\">    {% fetch_tweets from your_twitter_username as tweets %}<\/span><\/div><div class=\"line\" id=\"LC34\"><span class=\"sd\">    &quot;&quot;&quot;<\/span><\/div><div class=\"line\" id=\"LC35\">&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">bits<\/span> <span class=\"o\">=<\/span> <span class=\"n\">token<\/span><span class=\"o\">.<\/span><span class=\"n\">contents<\/span><span class=\"o\">.<\/span><span class=\"n\">split<\/span><span class=\"p\">()<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC38\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">bits<\/span><span class=\"p\">)<\/span> <span class=\"o\">!=<\/span> <span class=\"mi\">5<\/span><span class=\"p\">:<\/span><\/div><div class=\"line\" id=\"LC39\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">raise<\/span> <span class=\"n\">TemplateSyntaxError<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;fetch_tweets takes exactly four arguments.&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC40\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC41\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"n\">bits<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"o\">!=<\/span> <span class=\"s\">&#39;from&#39;<\/span><span class=\"p\">:<\/span><\/div><div class=\"line\" id=\"LC42\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">raise<\/span> <span class=\"n\">TemplateSyntaxError<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;The second argument to fetch_tweets must be &#39;from&#39;.&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC43\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC44\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">if<\/span> <span class=\"n\">bits<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span> <span class=\"o\">!=<\/span> <span class=\"s\">&#39;as&#39;<\/span><span class=\"p\">:<\/span><\/div><div class=\"line\" id=\"LC45\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">raise<\/span> <span class=\"n\">TemplateSyntaxError<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;The fourth argument to fetch_tweets must be &#39;as&#39;.&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC46\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC47\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"n\">bits<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC48\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"n\">variable_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">bits<\/span><span class=\"p\">[<\/span><span class=\"mi\">4<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC49\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC50\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"k\">return<\/span> <span class=\"n\">TwitterNode<\/span><span class=\"p\">(<\/span><span class=\"n\">user<\/span><span class=\"p\">,<\/span> <span class=\"n\">variable_name<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC51\">&nbsp;&nbsp;&nbsp;&nbsp;<\/div><div class=\"line\" id=\"LC52\"><span class=\"n\">register<\/span><span class=\"o\">.<\/span><span class=\"n\">tag<\/span><span class=\"p\">(<\/span><span class=\"n\">fetch_tweets<\/span><span class=\"p\">)<\/span><\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/202470/48b180fb9622075c38bfefd9dd78fbdea1033370/fetch_tweets.py\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/202470#file_fetch_tweets.py\" style=\"float:right;margin-right:10px;color:#666\">fetch_tweets.py<\/a>\n          <a href=\"http://gist.github.com/202470\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
