View Single Post
Old 02-26-2011, 12:18 AM   #5
Finbar127
Member
Finbar127 began at the beginning.
 
Posts: 11
Karma: 10
Join Date: Feb 2011
Device: Kindle 3
Thanks again. Like you said my recipe was missing the following line:

Code:
 

from calibre.web.feeds import Feed
Adding it did the trick.

Here is the working recipe. It can probably be optimized but it basically works and the resulting file looks great on my Kindle3:

Spoiler:
Code:
from calibre.web.feeds.recipes import BasicNewsRecipe
from calibre.web.feeds import Feed

class AdvancedUserRecipe1297969350(BasicNewsRecipe):
    title = u'Mahopac News'
    description = 'Mahopac News Features'
    oldest_article = 6
    max_articles_per_feed = 100
    no_stylesheets = True
    remove_attributes=['style'] 
    remove_javascript = True
    conversion_options = {'linearize_tables' : True}
    remove_tags = [dict(name='span', attrs={'class':'lp'})]
    extra_css = '.title {font-size: x-large; font-weight: bold}'

    feeds = [(u' ', u'http://www.mahopacnews.com/rssheadlines.xml')]

    def parse_feeds (self):
          feeds = BasicNewsRecipe.parse_feeds(self)
          newsArticles = []
          opinionArticles = []
          artsandleisureArticles = []
          sportsArticles = []
          announcementsArticles = []

          for curfeed in feeds:
                delList = []
                for a,curarticle in enumerate(curfeed.articles):
                      if curarticle.title.upper().find('NEWS:') >= 0:
                            newsArticles.append(curarticle)
                            delList.append(curarticle)
                if len(delList)>0:
                      for d in delList:
                            index = curfeed.articles.index(d)
                            curfeed.articles[index:index+1] = []

          if len(newsArticles) > 0:
                pfeed = Feed()
                pfeed.title = 'News'
                pfeed.descrition = 'News Feed (Virtual)'
                pfeed.image_url  = None
                pfeed.oldest_article = 6
                pfeed.id_counter = len(newsArticles)
                pfeed.articles = newsArticles[:]
                feeds.append(pfeed)
  
          for curfeed in feeds:
                delList = []
                for a,curarticle in enumerate(curfeed.articles):
                      if curarticle.title.upper().find('OPINION:') >= 0:
                            opinionArticles.append(curarticle)
                            delList.append(curarticle)
                if len(delList)>0:
                      for d in delList:
                            index = curfeed.articles.index(d)
                            curfeed.articles[index:index+1] = []

          if len(opinionArticles) > 0:
                pfeed = Feed()
                pfeed.title = 'Opinion'
                pfeed.descrition = 'Opinion Feed (Virtual)'
                pfeed.image_url  = None
                pfeed.oldest_article = 6
                pfeed.id_counter = len(opinionArticles)
                pfeed.articles = opinionArticles[:]
                feeds.append(pfeed)


          for curfeed in feeds:
                delList = []
                for a,curarticle in enumerate(curfeed.articles):
                      if curarticle.title.upper().find('ARTS AND LEISURE:') >= 0:
                            artsandleisureArticles.append(curarticle)
                            delList.append(curarticle)
                if len(delList)>0:
                      for d in delList:
                            index = curfeed.articles.index(d)
                            curfeed.articles[index:index+1] = []

          if len(artsandleisureArticles) > 0:
                pfeed = Feed()
                pfeed.title = 'Arts and Leisure'
                pfeed.descrition = 'Arts and Leisure Feed (Virtual)'
                pfeed.image_url  = None
                pfeed.oldest_article = 6
                pfeed.id_counter = len(artsandleisureArticles)
                pfeed.articles = artsandleisureArticles[:]
                feeds.append(pfeed)

          for curfeed in feeds:
                delList = []
                for a,curarticle in enumerate(curfeed.articles):
                      if curarticle.title.upper().find('SPORTS:') >= 0:
                            sportsArticles.append(curarticle)
                            delList.append(curarticle)
                if len(delList)>0:
                      for d in delList:
                            index = curfeed.articles.index(d)
                            curfeed.articles[index:index+1] = []

          if len(sportsArticles) > 0:
                pfeed = Feed()
                pfeed.title = 'Sports'
                pfeed.descrition = 'Sports Feed (Virtual)'
                pfeed.image_url  = None
                pfeed.oldest_article = 6
                pfeed.id_counter = len(sportsArticles)
                pfeed.articles = sportsArticles[:]
                feeds.append(pfeed)

          for curfeed in feeds:
                delList = []
                for a,curarticle in enumerate(curfeed.articles):
                      if curarticle.title.upper().find('ANNOUNCEMENTS:') >= 0:
                            announcementsArticles.append(curarticle)
                            delList.append(curarticle)
                if len(delList)>0:
                      for d in delList:
                            index = curfeed.articles.index(d)
                            curfeed.articles[index:index+1] = []

          if len(sportsArticles) > 0:
                pfeed = Feed()
                pfeed.title = 'Announcements'
                pfeed.descrition = 'Announcements Feed (Virtual)'
                pfeed.image_url  = None
                pfeed.oldest_article = 6
                pfeed.id_counter = len(announcementsArticles)
                pfeed.articles = announcementsArticles[:]
                feeds.append(pfeed)

          return feeds

    def print_version(self,url):

          baseURL='http://www.mahopacnews.com/LPprintwindow.LASSO?-token.editorialcall='
          segments = url.split('-')
          printURL = baseURL + segments[5]
        
          return printURL

Last edited by Finbar127; 02-26-2011 at 12:21 AM.
Finbar127 is offline   Reply With Quote