diff options
-rw-r--r-- | feedgetter.py | 32 | ||||
-rw-r--r-- | pyAggr3g470r.py | 20 |
2 files changed, 34 insertions, 18 deletions
diff --git a/feedgetter.py b/feedgetter.py index 276b6116..3d23b7a5 100644 --- a/feedgetter.py +++ b/feedgetter.py @@ -30,11 +30,22 @@ class FeedGetter(object): """ """ def __init__(self): + """ + Initializes the base and variables. + """ + # Create the base if not exists. + self.conn = sqlite3.connect("./var/feed.db", isolation_level = None) + self.c = self.conn.cursor() + self.c.execute('''create table if not exists rss_feed + (article_id text PRIMARY KEY, article_date text, \ + article_title text, article_link text, article_description text, \ + feed_title text, feed_site_link text)''') + self.conn.commit() + self.c.close() + # mutex to protect the SQLite base self.locker = threading.Lock() - self.retrieve_feed() - def retrieve_feed(self): """ Parse the file 'feeds.lst' and launch a thread for each RSS feed. @@ -64,21 +75,19 @@ class FeedGetter(object): Executed in a thread. SQLite objects created in a thread can only be used in that same thread ! """ + # Protect this part of code. self.locker.acquire() self.conn = sqlite3.connect("./var/feed.db", isolation_level = None) self.c = self.conn.cursor() - self.c.execute('''create table if not exists rss_feed - (article_id text PRIMARY KEY, article_date text, \ - article_title text, article_link text, article_description text, \ - feed_title text, feed_site_link text)''') - # add the articles in the base + # Add the articles in the base. self.add_into_sqlite(feedparser.parse(the_good_url)) self.conn.commit() self.c.close() + # Release this part of code. self.locker.release() def add_into_sqlite(self, a_feed): @@ -87,9 +96,9 @@ class FeedGetter(object): """ for article in a_feed['entries']: try: - content = article.description.encode('utf-8') + description = article.description.encode('utf-8') except Exception, e: - content = "No description" + description = "No description available." sha256_hash = hashlib.sha256() sha256_hash.update(article.link.encode('utf-8')) @@ -101,7 +110,7 @@ class FeedGetter(object): datetime(*article.updated_parsed[:6]), \ article.title.encode('utf-8'), \ article.link.encode('utf-8'), \ - content, \ + description, \ a_feed.feed.title.encode('utf-8'), \ a_feed.feed.link.encode('utf-8'))) except sqlite3.IntegrityError: @@ -116,4 +125,5 @@ if __name__ == "__main__": print "./feed.lst not found" exit(0) - FeedGetter()
\ No newline at end of file + feed_getter = FeedGetter() + feed_getter.retrieve_feed()
\ No newline at end of file diff --git a/pyAggr3g470r.py b/pyAggr3g470r.py index 84e4382b..67cdd3d4 100644 --- a/pyAggr3g470r.py +++ b/pyAggr3g470r.py @@ -39,7 +39,9 @@ href="http://bitbucket.org/cedricbonhomme/pyaggr3g470r/">pyAggr3g470r (source co class Root: def index(self): - self.dic = {} + """ + Main page containing the list of feeds and articles. + """ html = htmlheader html += htmlnav html += """<br/><div class="right inner">""" @@ -49,8 +51,7 @@ class Root: html += """<a href="f/">Management of feed</a>""" html += """</div> <div class="left inner">""" - - self.dic = self.retrieve_feed() + self.dic = self.load_feed() for rss_feed in self.dic.keys(): html += '<h2><a href="' + self.dic[rss_feed][0][5].encode('utf-8') + \ '">' + rss_feed.encode('utf-8') + "</a></h2>" @@ -72,7 +73,7 @@ class Root: def description(self, article_id): """ - Display the description of an article. + Display the description of an article in a new Web page. """ html = htmlheader html += htmlnav @@ -85,7 +86,10 @@ class Root: html += htmlfooter return html - def retrieve_feed(self): + def load_feed(self): + """ + Load feeds in a dictionary. + """ list_of_articles = None try: conn = sqlite3.connect("./var/feed.db", isolation_level = None) @@ -95,8 +99,10 @@ class Root: except: pass + # The key of dic is the title of the feed: + # dic[feed_title] = (article_id, article_date, article_title, article_link, article_description, feed_link) + dic = {} if list_of_articles is not None: - dic = {} for article in list_of_articles: if article[5] not in dic: dic[article[5]] = [(article[0], article[1], article[2], article[3], article[4], article[6])] @@ -108,7 +114,7 @@ class Root: dic[feeds].sort(lambda x,y: compare(y[1], x[1])) return dic - return {} + return dic index.exposed = True f.exposed = True |