예제 #1
0
파일: queue.py 프로젝트: jmhobbs/RSS-Engine
	def post ( self ):
		feed = db.get( db.Key( self.request.get( 'key' ) ) )

		fetch = models.FetchModel()
		fetch.feed = feed
		try:
			d = feedparser.parse( feed.path )
			story_time = datetime.datetime.fromtimestamp( time.mktime( d.entries[0].updated_parsed ) )
			if feed.last_story != None and story_time > feed.last_story:
				# TODO: Parse stories!
				fetch.new_stories = 1
			else:
				fetch.new_stories = 0
			fetch.success = True
			feed.last_fetch = datetime.datetime.now()
			feed.put()
		except:
			run_diff = datetime.timedelta(
				days=config.FETCH_INTERVAL['days'],
				hours=config.FETCH_INTERVAL['hours'],
				minutes=config.FETCH_INTERVAL['minutes']
			)
			feed.last_fetch = feed.last_fetch + diff
			feed.put()
			fetch.new_stories = 0
			fetch.success = False
		fetch.put()
예제 #2
0
파일: feeds.py 프로젝트: jmhobbs/RSS-Engine
	def post ( self ):

		url = self.request.get( 'url' ).lower().strip()

		feeds = db.GqlQuery( "SELECT * FROM FeedModel WHERE path = :1", url )
		feed = feeds.get()

		# Trial parse to see if it's really a feed & get the title
		title = "UNCHANGED"
		try:
			d = feedparser.parse( url )
			title = d.feed.title # Just check it has a title
		except Exception, e:
			# TODO: Flash message here!
			self.redirect( '/subscribe' )
			return
예제 #3
0
def get_feed(url):
    from vendor import feedparser

    # sanitizer whitelist
    _wl = ['object','param','embed']
    feedparser._HTMLSanitizer.acceptable_elements.extend(_wl)
    _wl = ['flashvars']
    feedparser._HTMLSanitizer.acceptable_attributes.extend(_wl)

    result = { 'url': url, 'parsed': None, 'articles': [], 'status': "404" }

    try:
        parsed = feedparser.parse(url)
        if parsed.feed:
            result['parsed'] = parsed.feed
            result['articles'] = parsed['entries']
            result['status'] = "200"
    except:
        result['status'] = "500"

    return result