def patch_feedparser(): """Fix a bug in feedparser 4.1 This replaces the mapContentType method of the _FeedParserMixin class to correctly detect the "plain" content type as "text/plain". See also: http://code.google.com/p/feedparser/issues/detail?id=80 Added by Thomas Perl for gPodder 2007-12-29 """ def mapContentType2(self, contentType): contentType=contentType.lower() if contentType == 'text' or contentType == 'plain': contentType='text/plain' elif contentType == 'html': contentType='text/html' elif contentType == 'xhtml': contentType='application/xhtml+xml' return contentType try: if feedparser._FeedParserMixin().mapContentType('plain') == 'plain': log('Patching feedparser module... (mapContentType bugfix)') feedparser._FeedParserMixin.mapContentType=mapContentType2 except: log('Warning: feedparser unpatched - might be broken!')
def patch_feedparser(): """Monkey-patch the Universal Feed Parser""" # Detect the 'plain' content type as 'text/plain' # http://code.google.com/p/feedparser/issues/detail?id=80 def mapContentType2(self, contentType): contentType = contentType.lower() if contentType == 'text' or contentType == 'plain': contentType = 'text/plain' elif contentType == 'html': contentType = 'text/html' elif contentType == 'xhtml': contentType = 'application/xhtml+xml' return contentType try: if feedparser._FeedParserMixin().mapContentType('plain') == 'plain': feedparser._FeedParserMixin.mapContentType = mapContentType2 except: pass # Fix parsing of Media RSS with feedparser, as described here: # http://code.google.com/p/feedparser/issues/detail?id=100#c4 def _start_media_content(self, attrsD): context = self._getContext() context.setdefault('media_content', []) context['media_content'].append(attrsD) try: feedparser._FeedParserMixin._start_media_content = _start_media_content except: pass # Fix problem with the EA.com official podcast # https://bugs.gpodder.org/show_bug.cgi?id=588 if '*/*' not in feedparser.ACCEPT_HEADER.split(','): feedparser.ACCEPT_HEADER += ',*/*' # Fix problem with YouTube feeds and pubDate/atom:modified # https://bugs.gpodder.org/show_bug.cgi?id=1492 # http://code.google.com/p/feedparser/issues/detail?id=310 def _end_updated(self): value = self.pop('updated') parsed_value = feedparser._parse_date(value) overwrite = ('youtube.com' not in self.baseuri) self._save('updated_parsed', parsed_value, overwrite=overwrite) try: feedparser._FeedParserMixin._end_updated = _end_updated except: pass
def patch_feedparser(): """Monkey-patch the Universal Feed Parser""" # Detect the 'plain' content type as 'text/plain' # http://code.google.com/p/feedparser/issues/detail?id=80 def mapContentType2(self, contentType): contentType = contentType.lower() if contentType == 'text' or contentType == 'plain': contentType = 'text/plain' elif contentType == 'html': contentType = 'text/html' elif contentType == 'xhtml': contentType = 'application/xhtml+xml' return contentType try: if feedparser._FeedParserMixin().mapContentType('plain') == 'plain': feedparser._FeedParserMixin.mapContentType = mapContentType2 except: pass # Fix parsing of Media RSS with feedparser, as described here: # http://code.google.com/p/feedparser/issues/detail?id=100#c4 def _start_media_content(self, attrsD): context = self._getContext() context.setdefault('media_content', []) context['media_content'].append(attrsD) try: feedparser._FeedParserMixin._start_media_content = _start_media_content except: pass # Fix problem with the EA.com official podcast # https://bugs.gpodder.org/show_bug.cgi?id=588 if '*/*' not in feedparser.ACCEPT_HEADER.split(','): feedparser.ACCEPT_HEADER += ',*/*' # Fix problem with YouTube feeds and pubDate/atom:modified # https://bugs.gpodder.org/show_bug.cgi?id=1492 # http://code.google.com/p/feedparser/issues/detail?id=310 def _end_updated(self): value = self.pop('updated') parsed_value = feedparser._parse_date(value) overwrite = ('youtube.com' not in self.baseuri) try: self._save('updated_parsed', parsed_value, overwrite=overwrite) except TypeError, te: logger.warn('Your feedparser version is too old: %s', te)
def patch_feedparser(): """Monkey-patch the Universal Feed Parser""" # Detect the 'plain' content type as 'text/plain' # http://code.google.com/p/feedparser/issues/detail?id=80 def mapContentType2(self, contentType): contentType = contentType.lower() if contentType == "text" or contentType == "plain": contentType = "text/plain" elif contentType == "html": contentType = "text/html" elif contentType == "xhtml": contentType = "application/xhtml+xml" return contentType try: if feedparser._FeedParserMixin().mapContentType("plain") == "plain": feedparser._FeedParserMixin.mapContentType = mapContentType2 except: pass # Fix parsing of Media RSS with feedparser, as described here: # http://code.google.com/p/feedparser/issues/detail?id=100#c4 def _start_media_content(self, attrsD): context = self._getContext() context.setdefault("media_content", []) context["media_content"].append(attrsD) try: feedparser._FeedParserMixin._start_media_content = _start_media_content except: pass # Fix problem with the EA.com official podcast # https://bugs.gpodder.org/show_bug.cgi?id=588 if "*/*" not in feedparser.ACCEPT_HEADER.split(","): feedparser.ACCEPT_HEADER += ",*/*" # Fix problem with YouTube feeds and pubDate/atom:modified # https://bugs.gpodder.org/show_bug.cgi?id=1492 # http://code.google.com/p/feedparser/issues/detail?id=310 def _end_updated(self): value = self.pop("updated") parsed_value = feedparser._parse_date(value) overwrite = "youtube.com" not in self.baseuri try: self._save("updated_parsed", parsed_value, overwrite=overwrite) except TypeError, te: logger.warn("Your feedparser version is too old: %s", te)
def patch_feedparser(): """Monkey-patch the Universal Feed Parser""" # Detect the 'plain' content type as 'text/plain' # http://code.google.com/p/feedparser/issues/detail?id=80 def mapContentType2(self, contentType): contentType = contentType.lower() if contentType == 'text' or contentType == 'plain': contentType = 'text/plain' elif contentType == 'html': contentType = 'text/html' elif contentType == 'xhtml': contentType = 'application/xhtml+xml' return contentType try: if feedparser._FeedParserMixin().mapContentType('plain') == 'plain': feedparser._FeedParserMixin.mapContentType = mapContentType2 except: pass # Fix parsing of Media RSS with feedparser, as described here: # http://code.google.com/p/feedparser/issues/detail?id=100#c4 def _start_media_content(self, attrsD): context = self._getContext() context.setdefault('media_content', []) context['media_content'].append(attrsD) try: feedparser._FeedParserMixin._start_media_content = _start_media_content except: pass # Fix problem with the EA.com official podcast # https://bugs.gpodder.org/show_bug.cgi?id=588 if '*/*' not in feedparser.ACCEPT_HEADER.split(','): feedparser.ACCEPT_HEADER += ',*/*'