View Single Post
Old 03-04-2011, 09:09 PM   #8
alessandro_q
Member
alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.alessandro_q composes epic poetry in binary.
 
alessandro_q's Avatar
 
Posts: 23
Karma: 90010
Join Date: Mar 2011
Device: Kindle 3
I have not tried the code you pointed to. I meant to ask how to use the template. Here is my attempt:

Code:
from calibre.constants import config_dir, CONFIG_DIR_MODE
import os, os.path, urllib
from hashlib import md5

class OnlyLatestRecipe(BasicNewsRecipe):
    title          = u'Gizmodo'
	__author__            = 'Darko Miletic'
    description           = "Gizmodo, the gadget guide. So much in love with shiny new toys, it's unnatural."
    publisher             = 'gizmodo.com'
    category              = 'news, IT, Internet, gadgets'
	
    oldest_article = 10000
    max_articles_per_feed = 10000
    no_stylesheets        = True
    encoding              = 'utf-8'
    use_embedded_content  = True
    language              = 'en'
    masthead_url          = 'http://cache.gawkerassets.com/assets/gizmodo.com/img/logo.png'
	
    feeds          = [(u'Articles', u'http://feeds.gawker.com/gizmodo/vip?format=xml')]

    def parse_feeds(self):
        recipe_dir = os.path.join(config_dir,'recipes')
        hash_dir = os.path.join(recipe_dir,'recipe_storage')
        feed_dir = os.path.join(hash_dir,self.title.encode('utf-8').replace('/',':'))
        if not os.path.isdir(feed_dir):
            os.makedirs(feed_dir,mode=CONFIG_DIR_MODE)

        feeds = BasicNewsRecipe.parse_feeds(self)

        for feed in feeds:
            feed_hash = urllib.quote(feed.title.encode('utf-8'),safe='')
            feed_fn = os.path.join(feed_dir,feed_hash)

            past_items = set()
            if os.path.exists(feed_fn):
               with file(feed_fn) as f:
                   for h in f:
                       past_items.add(h.strip())
                       
            cur_items = set()
            for article in feed.articles[:]:
                item_hash = md5()
                if article.content: item_hash.update(article.content.encode('utf-8'))
                if article.summary: item_hash.update(article.summary.encode('utf-8'))
                item_hash = item_hash.hexdigest()
                if article.url:
                    item_hash = article.url + ':' + item_hash
                cur_items.add(item_hash)
                if item_hash in past_items:
                    feed.articles.remove(article)
            with file(feed_fn,'w') as f:
                for h in cur_items:
                    f.write(h+'\n')

        remove = [f for f in feeds if len(f) == 0 and
                self.remove_empty_feeds]
        for f in remove:
            feeds.remove(f)

        return feeds
		
	 conversion_options = {
                          'comment'   : description
                        , 'tags'      : category
                        , 'publisher' : publisher
                        , 'language'  : language
                        }

    remove_tags = [
            {'class': 'feedflare'},
    ]


    def preprocess_html(self, soup):
        return self.adeify_images(soup)
Is there anything wrong with this code?
alessandro_q is offline   Reply With Quote