Revision: 4440 Author: hans URL: http://bknr.net/trac/changeset/4440
update twitter status once for every posting, include tiny url U trunk/projects/planetwit/http-client.clj U trunk/projects/planetwit/planetwit.clj
Modified: trunk/projects/planetwit/http-client.clj =================================================================== --- trunk/projects/planetwit/http-client.clj 2009-07-22 18:21:41 UTC (rev 4439) +++ trunk/projects/planetwit/http-client.clj 2009-08-19 17:36:33 UTC (rev 4440) @@ -31,5 +31,5 @@ (String. (. (Base64.) (encode (. basic-authorization getBytes)))))))) (let [response (. client call request)] {:status (. response getStatus) - :content-type (. response getContentType) + :content-type (. response getHeader "Content-Type") :body (. (. response getBlockingBody) readString)}))) \ No newline at end of file
Modified: trunk/projects/planetwit/planetwit.clj =================================================================== --- trunk/projects/planetwit/planetwit.clj 2009-07-22 18:21:41 UTC (rev 4439) +++ trunk/projects/planetwit/planetwit.clj 2009-08-19 17:36:33 UTC (rev 4440) @@ -29,39 +29,42 @@ (defn feed-to-zip [url] (zip/xml-zip (xml/parse url)))
-(defn update-twitter-status [auth-file status] - (http/simple-http-request +twitter-url+ - {:method :post - :basic-authorization (read-file auth-file) - :content-type "application/x-www-form-urlencoded" - :content (format "status=%s&source=planetlisp" (java.net.URLEncoder/encode status))})) +(defn update-twitter-status [status] + (try + (http/simple-http-request +twitter-url+ + {:method :post + :basic-authorization (read-file +twitter-auth-file+) + :content-type "application/x-www-form-urlencoded" + :content (format "status=%s&source=planetlisp" (java.net.URLEncoder/encode status))}) + (catch java.io.FileNotFoundException _ + (println (format "could not update twitter status (no auth file):\n%s\n" status)))))
-(defn maybe-post-twit [items] - (let [twitter-status (cond - (< 1 (count items)) - (format "%d new items posted" (count items)) - (= 1 (count items)) - (format "new: %s" (first items)))] - (when twitter-status - (update-twitter-status +twitter-auth-file+ twitter-status)))) +(defn post-twits [urls titles] + (when titles + (update-twitter-status (format "%s %s" (first titles) + (:body (http/simple-http-request + (format "http://tinyurl.com/api-create.php?url=%s" + (first urls)) + nil)))) + (recur (rest urls) (rest titles))))
(defn poll "Poll planet lisp, check for new postings, update Twitter status when new postings have appeared" [] (save-data - (let [old-data (load-data) + (let [old-urls (load-data) process - (fn [items new-data new-items] + (fn [items new-urls new-titles] (if items (let [item (first items) guid (first (xml-> item :guid text)) ] (recur (rest items) - (conj new-data guid) - (if (old-data guid) - new-items - (conj new-items (first (xml-> item :title text)))))) + (conj new-urls guid) + (if (old-urls guid) + new-titles + (conj new-titles (first (xml-> item :title text)))))) (do - (maybe-post-twit new-items) - new-data)))] + (post-twits new-urls new-titles) + new-urls)))] (process (xml-> (feed-to-zip "http://planet.lisp.org/rss20.xml") :channel :item) #{} []))))