diff --git a/README.md b/README.md index 50a4e72..afd64e4 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Feed2twister is a simple script to post items from RSS/ATOM feeds to [Twister](h * [Twister](http://twister.net.co/) (of course) * [python-bitcoinrpc](https://pypi.python.org/pypi/python-bitcoinrpc/) * [feedparser](https://pypi.python.org/pypi/feedparser/) +* [gdshortener](https://github.com/torre76/gd_shortener/) (optional) ### Installing diff --git a/conf-example.py b/conf-example.py index 90ef61e..4f8f9bd 100644 --- a/conf-example.py +++ b/conf-example.py @@ -6,6 +6,7 @@ RPC_URL = 'http://MYRPCUSER:MYRPCPASSWORD@127.0.0.1:28332' # change to rpcuser a DB_FILENAME = 'items.db' # db is mainly there to keep track of "what not to post again" :) (debugging too, I guess) MAX_URL_LENGTH = 100 # this leaves 36 characters and a ... to get to 140. If we don't have that, we skip the item :( MAX_NEW_ITEMS_PER_FEED = 3 # we don't want to flood more than that in a single run. +USE_SHORTENER=True FEEDS = [ # Use your own feeds, of course :) 'https://swatwt.com/favs/rss/en', 'https://github.com/thedod.atom' diff --git a/feed2twister.py b/feed2twister.py index 4ee8430..651b48a 100644 --- a/feed2twister.py +++ b/feed2twister.py @@ -2,6 +2,9 @@ from conf import * import feedparser,anydbm,sys from bitcoinrpc.authproxy import AuthServiceProxy +if USE_SHORTENER: + import gdshortener + ### truncated_utf8() is based on http://stackoverflow.com/a/13738452 def _is_utf8_lead_byte(b): '''A UTF-8 intermediate byte starts with the bits 10xxxxxx.''' @@ -26,6 +29,8 @@ def get_next_k(twister,username): def main(max_items): db = anydbm.open(DB_FILENAME,'c') + if USE_SHORTENER: + s = gdshortener.ISGDShortener() twister = AuthServiceProxy(RPC_URL) for feed_url in FEEDS: logging.info(feed_url) @@ -36,8 +41,11 @@ def main(max_items): if db.has_key(eid): # been there, done that (or not - for a reason) logging.debug('Skipping duplicate {0}'.format(eid)) else: # format as a <=140 character string - if len(e.link)<=MAX_URL_LENGTH: - msg = u'{0} {1}'.format(e.link,e.title) + # Construct the link, possibly with shortener + entry_url = s.shorten(e.link)[0] if USE_SHORTENER else e.link + + if len(entry_url)<=MAX_URL_LENGTH: + msg = u'{0} {1}'.format(entry_url,e.title) if len(msg)>140: # Truncate (and hope it's still meaningful) msg = msg[:137]+u'...' else: # Link too long. Not enough space left for text :(