Browse Source

Merge branch 'mrvdb-mrb/shortener'

master
The Dod 11 years ago
parent
commit
68679ddc2b
  1. 1
      README.md
  2. 2
      conf-example.py
  3. 12
      feed2twister.py

1
README.md

@ -5,6 +5,7 @@ Feed2twister is a simple script to post items from RSS/ATOM feeds to [Twister](h @@ -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

2
conf-example.py

@ -6,6 +6,8 @@ RPC_URL = 'http://MYRPCUSER:MYRPCPASSWORD@127.0.0.1:28332' # change to rpcuser a @@ -6,6 +6,8 @@ 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 = False # to enable this, you need gdshortener: https://github.com/torre76/gd_shortener/
SHORTENER_STATS = True # tell is.gd to publicly show statistics for the shortened url
FEEDS = [ # Use your own feeds, of course :)
'https://swatwt.com/favs/rss/en',
'https://github.com/thedod.atom'

12
feed2twister.py

@ -2,6 +2,12 @@ from conf import * @@ -2,6 +2,12 @@ from conf import *
import feedparser,anydbm,sys
from bitcoinrpc.authproxy import AuthServiceProxy
if USE_SHORTENER:
try:
import gdshortener
except ImportError:
USE_SHORTENER = False
### 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.'''
@ -36,8 +42,10 @@ def main(max_items): @@ -36,8 +42,10 @@ 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 = gdshortener.ISGDShortener().shorten(url=e.link, log_stat=SHORTENER_STATS)[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 :(

Loading…
Cancel
Save