diff --git a/script.module.feedparser/LICENSE b/script.module.feedparser/LICENSE.txt similarity index 96% rename from script.module.feedparser/LICENSE rename to script.module.feedparser/LICENSE.txt index 3ce95b12b3..70b8167f36 100644 --- a/script.module.feedparser/LICENSE +++ b/script.module.feedparser/LICENSE.txt @@ -2,7 +2,7 @@ feedparser and its unit tests are released under the following license: ----- begin license block ----- -Copyright (C) 2010-2015 Kurt McKee +Copyright (C) 2010-2022 Kurt McKee Copyright (C) 2002-2008 Mark Pilgrim All rights reserved. @@ -38,7 +38,7 @@ released under the following license: ----- begin license block ----- -Copyright (C) 2010-2015 Kurt McKee +Copyright (C) 2010-2022 Kurt McKee Copyright (C) 2004-2008 Mark Pilgrim. All rights reserved. Redistribution and use in source (Sphinx ReST) and "compiled" forms (HTML, PDF, diff --git a/script.module.feedparser/README.rst b/script.module.feedparser/README.rst deleted file mode 100644 index d49535b38f..0000000000 --- a/script.module.feedparser/README.rst +++ /dev/null @@ -1,46 +0,0 @@ -feedparser - Parse Atom and RSS feeds in Python. - -| Copyright 2010-2019 Kurt McKee -| Copyright 2002-2008 Mark Pilgrim - -feedparser is open source. See the LICENSE file for more information. - - -Installation -============ - -Feedparser can be installed using distutils or setuptools by running:: - - $ python setup.py install - -Note: sgmllib3k is a Python 3 dependency. It will be installed automatically. - - -Documentation -============= - -The feedparser documentation is available on the web at: - - https://pythonhosted.org/feedparser/ - -It is also included in its source format, ReST, in the docs/ directory. To -build the documentation you'll need the Sphinx package, which is available at: - - http://sphinx.pocoo.org/ - -You can then build HTML pages using a command similar to:: - - $ sphinx-build -b html docs/ fpdocs - -This will produce HTML documentation in the fpdocs/ directory. - - -Testing -======= - -Feedparser has an extensive test suite, powered by tox. To run it, type this:: - - $ tox - -This will spawn an HTTP server that will listen on port 8097. The tests will -fail if that port is in use. diff --git a/script.module.feedparser/addon.xml b/script.module.feedparser/addon.xml index a74c0bb21e..fe9755fdbe 100644 --- a/script.module.feedparser/addon.xml +++ b/script.module.feedparser/addon.xml @@ -1,19 +1,19 @@ - - - - - - - - - Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds - Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds - MIT - all - https://github.com/kurtmckee/feedparser - - icon.png - - + + + + + + + + Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds + Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds + BSD-2-Clause + all + https://github.com/kurtmckee/feedparser + https://github.com/kurtmckee/feedparser + + resources/icon.png + + diff --git a/script.module.feedparser/lib/feedparser/__init__.py b/script.module.feedparser/lib/feedparser/__init__.py index c3fcfe609d..a9607801c1 100644 --- a/script.module.feedparser/lib/feedparser/__init__.py +++ b/script.module.feedparser/lib/feedparser/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # @@ -32,7 +32,7 @@ __author__ = 'Kurt McKee ' __license__ = 'BSD 2-clause' -__version__ = '6.0.2' +__version__ = '6.0.11' # HTTP "User-Agent" header to send to servers when downloading feeds. # If you are embedding feedparser in a larger application, you should diff --git a/script.module.feedparser/lib/feedparser/api.py b/script.module.feedparser/lib/feedparser/api.py index 831c61ae9b..1fe40979cf 100644 --- a/script.module.feedparser/lib/feedparser/api.py +++ b/script.module.feedparser/lib/feedparser/api.py @@ -1,5 +1,5 @@ # The public API for feedparser -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # @@ -27,6 +27,7 @@ # POSSIBILITY OF SUCH DAMAGE. import io +import urllib.error import urllib.parse import xml.sax @@ -211,7 +212,14 @@ def parse(url_file_stream_or_string, etag=None, modified=None, agent=None, refer headers={}, ) - data = _open_resource(url_file_stream_or_string, etag, modified, agent, referrer, handlers, request_headers, result) + try: + data = _open_resource(url_file_stream_or_string, etag, modified, agent, referrer, handlers, request_headers, result) + except urllib.error.URLError as error: + result.update({ + 'bozo': True, + 'bozo_exception': error, + }) + return result if not data: return result diff --git a/script.module.feedparser/lib/feedparser/datetimes/__init__.py b/script.module.feedparser/lib/feedparser/datetimes/__init__.py index 01b96f4ea9..2837838ba6 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/__init__.py +++ b/script.module.feedparser/lib/feedparser/datetimes/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/asctime.py b/script.module.feedparser/lib/feedparser/datetimes/asctime.py index e443263138..99416f664a 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/asctime.py +++ b/script.module.feedparser/lib/feedparser/datetimes/asctime.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/greek.py b/script.module.feedparser/lib/feedparser/datetimes/greek.py index 91d0e1dadf..3a4db71485 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/greek.py +++ b/script.module.feedparser/lib/feedparser/datetimes/greek.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/hungarian.py b/script.module.feedparser/lib/feedparser/datetimes/hungarian.py index 266c0c1fda..63fa9afd1b 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/hungarian.py +++ b/script.module.feedparser/lib/feedparser/datetimes/hungarian.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/iso8601.py b/script.module.feedparser/lib/feedparser/datetimes/iso8601.py index 65b35b5844..e78764592f 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/iso8601.py +++ b/script.module.feedparser/lib/feedparser/datetimes/iso8601.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/korean.py b/script.module.feedparser/lib/feedparser/datetimes/korean.py index 1ad638d923..5fe4eb6f9d 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/korean.py +++ b/script.module.feedparser/lib/feedparser/datetimes/korean.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/perforce.py b/script.module.feedparser/lib/feedparser/datetimes/perforce.py index aac23bbdcb..e53e5ff67b 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/perforce.py +++ b/script.module.feedparser/lib/feedparser/datetimes/perforce.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/rfc822.py b/script.module.feedparser/lib/feedparser/datetimes/rfc822.py index 15b95ddb99..12e699c84f 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/rfc822.py +++ b/script.module.feedparser/lib/feedparser/datetimes/rfc822.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/datetimes/w3dtf.py b/script.module.feedparser/lib/feedparser/datetimes/w3dtf.py index 1cadca3c72..9b71af1fa3 100644 --- a/script.module.feedparser/lib/feedparser/datetimes/w3dtf.py +++ b/script.module.feedparser/lib/feedparser/datetimes/w3dtf.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/encodings.py b/script.module.feedparser/lib/feedparser/encodings.py index 02dfcbe025..5ae74af689 100644 --- a/script.module.feedparser/lib/feedparser/encodings.py +++ b/script.module.feedparser/lib/feedparser/encodings.py @@ -1,5 +1,5 @@ # Character encoding routines -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # @@ -26,9 +26,9 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -import cgi import codecs import re +import typing as t try: try: @@ -68,6 +68,30 @@ def lazy_chardet_encoding(data): RE_XML_PI_ENCODING = re.compile(br'^<\?.*encoding=[\'"](.*?)[\'"].*\?>') +def parse_content_type(line: str) -> t.Tuple[str, str]: + """Parse an HTTP Content-Type header. + + The return value will be a tuple of strings: + the MIME type, and the value of the "charset" (if any). + + This is a custom replacement for Python's cgi.parse_header(). + The cgi module will be removed in Python 3.13. + """ + + chunks = line.split(";") + if not chunks: + return "", "" + + mime_type = chunks[0].strip() + charset_value = "" + for chunk in chunks[1:]: + key, _, value = chunk.partition("=") + if key.strip().lower() == "charset": + charset_value = value.strip().strip("\"'") + + return mime_type, charset_value + + def convert_to_utf8(http_headers, data, result): """Detect and convert the character encoding to UTF-8. @@ -181,10 +205,7 @@ def convert_to_utf8(http_headers, data, result): # XML declaration encoding, and HTTP encoding, following the # heuristic defined in RFC 3023. http_content_type = http_headers.get('content-type') or '' - http_content_type, params = cgi.parse_header(http_content_type) - http_encoding = params.get('charset', '').replace("'", "") - if isinstance(http_encoding, bytes): - http_encoding = http_encoding.decode('utf-8', 'ignore') + http_content_type, http_encoding = parse_content_type(http_content_type) acceptable_content_type = 0 application_content_types = ('application/xml', 'application/xml-dtd', diff --git a/script.module.feedparser/lib/feedparser/exceptions.py b/script.module.feedparser/lib/feedparser/exceptions.py index 7fa28a1bac..0da8152ff3 100644 --- a/script.module.feedparser/lib/feedparser/exceptions.py +++ b/script.module.feedparser/lib/feedparser/exceptions.py @@ -1,5 +1,5 @@ # Exceptions used throughout feedparser -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/html.py b/script.module.feedparser/lib/feedparser/html.py index 487ea48253..0aae18f6a8 100644 --- a/script.module.feedparser/lib/feedparser/html.py +++ b/script.module.feedparser/lib/feedparser/html.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/http.py b/script.module.feedparser/lib/feedparser/http.py index 97d67cbd38..1516eabfde 100644 --- a/script.module.feedparser/lib/feedparser/http.py +++ b/script.module.feedparser/lib/feedparser/http.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # @@ -53,6 +53,8 @@ def http_error_default(self, req, fp, code, msg, headers): def http_error_301(self, req, fp, code, msg, hdrs): result = urllib.request.HTTPRedirectHandler.http_error_301(self, req, fp, code, msg, hdrs) + if not result: + return fp result.status = code result.newurl = result.geturl() return result @@ -78,7 +80,7 @@ def http_error_401(self, req, fp, code, msg, headers): host = urllib.parse.urlparse(req.get_full_url())[1] if 'Authorization' not in req.headers or 'WWW-Authenticate' not in headers: return self.http_error_default(req, fp, code, msg, headers) - auth = base64.decodebytes(req.headers['Authorization'].split(' ')[1].encode('utf8')) + auth = base64.decodebytes(req.headers['Authorization'].split(' ')[1].encode()).decode() user, passw = auth.split(':') realm = re.findall('realm="([^"]*)"', headers['WWW-Authenticate'])[0] self.add_password(realm, host, user, passw) @@ -145,12 +147,23 @@ def get(url, etag=None, modified=None, agent=None, referrer=None, handlers=None, if url_pieces.port: new_pieces[1] = f'{url_pieces.hostname}:{url_pieces.port}' url = urllib.parse.urlunparse(new_pieces) - auth = base64.standard_b64encode(f'{url_pieces.username}:{url_pieces.password}').strip() + auth = base64.standard_b64encode(f'{url_pieces.username}:{url_pieces.password}'.encode()).decode() # iri support if not isinstance(url, bytes): url = convert_to_idn(url) + # Prevent UnicodeEncodeErrors caused by Unicode characters in the path. + bits = [] + for c in url: + try: + c.encode('ascii') + except UnicodeEncodeError: + bits.append(urllib.parse.quote(c)) + else: + bits.append(c) + url = ''.join(bits) + # try to open with urllib2 (to use optional headers) request = _build_urllib2_request(url, agent, ACCEPT_HEADER, etag, modified, referrer, auth, request_headers) opener = urllib.request.build_opener(*tuple(handlers + [_FeedURLHandler()])) @@ -203,7 +216,7 @@ def get(url, etag=None, modified=None, agent=None, referrer=None, handlers=None, result['href'] = f.url.decode('utf-8', 'ignore') else: result['href'] = f.url - result['status'] = getattr(f, 'status', 200) + result['status'] = getattr(f, 'status', None) or 200 # Stop processing if the server sent HTTP 304 Not Modified. if getattr(f, 'code', 0) == 304: diff --git a/script.module.feedparser/lib/feedparser/mixin.py b/script.module.feedparser/lib/feedparser/mixin.py index f305015b96..c4265e750f 100644 --- a/script.module.feedparser/lib/feedparser/mixin.py +++ b/script.module.feedparser/lib/feedparser/mixin.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # @@ -193,6 +193,7 @@ def __init__(self): self.svgOK = 0 self.title_depth = -1 self.depth = 0 + self.hasContent = 0 if self.lang: self.feeddata['language'] = self.lang.replace('_', '-') @@ -506,9 +507,7 @@ def pop(self, element, strip_whitespace=1): if base64 and self.contentparams.get('base64', 0): try: output = base64.decodebytes(output.encode('utf8')).decode('utf8') - except binascii.Error: - pass - except binascii.Incomplete: + except (binascii.Error, binascii.Incomplete, UnicodeDecodeError): pass # resolve relative URIs diff --git a/script.module.feedparser/lib/feedparser/namespaces/_base.py b/script.module.feedparser/lib/feedparser/namespaces/_base.py index 61446ffe91..cb2b2a98ca 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/_base.py +++ b/script.module.feedparser/lib/feedparser/namespaces/_base.py @@ -1,5 +1,5 @@ # Support for the Atom, RSS, RDF, and CDF feed formats -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # @@ -259,6 +259,7 @@ def _start_item(self, attrs_d): def _end_item(self): self.pop('item') self.inentry = 0 + self.hasContent = 0 _end_entry = _end_item def _start_language(self, attrs_d): @@ -388,7 +389,7 @@ def _end_title(self): def _start_description(self, attrs_d): context = self._get_context() - if 'summary' in context: + if 'summary' in context and not self.hasContent: self._summaryKey = 'content' self._start_content(attrs_d) else: @@ -429,7 +430,7 @@ def _end_generator(self): def _start_summary(self, attrs_d): context = self._get_context() - if 'summary' in context: + if 'summary' in context and not self.hasContent: self._summaryKey = 'content' self._start_content(attrs_d) else: @@ -466,6 +467,7 @@ def _end_source(self): self.sourcedata.clear() def _start_content(self, attrs_d): + self.hasContent = 1 self.push_content('content', attrs_d, 'text/plain', 1) src = attrs_d.get('src') if src: @@ -477,6 +479,7 @@ def _start_body(self, attrs_d): _start_xhtml_body = _start_body def _start_content_encoded(self, attrs_d): + self.hasContent = 1 self.push_content('content', attrs_d, 'text/html', 1) _start_fullitem = _start_content_encoded diff --git a/script.module.feedparser/lib/feedparser/namespaces/admin.py b/script.module.feedparser/lib/feedparser/namespaces/admin.py index 2dca7a02be..88b70013d3 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/admin.py +++ b/script.module.feedparser/lib/feedparser/namespaces/admin.py @@ -1,5 +1,5 @@ # Support for the administrative elements extension -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/namespaces/cc.py b/script.module.feedparser/lib/feedparser/namespaces/cc.py index da1a4ceeed..9e482d1b4d 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/cc.py +++ b/script.module.feedparser/lib/feedparser/namespaces/cc.py @@ -1,5 +1,5 @@ # Support for the Creative Commons licensing extensions -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/namespaces/dc.py b/script.module.feedparser/lib/feedparser/namespaces/dc.py index feabdd0a25..fdf4cc11fc 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/dc.py +++ b/script.module.feedparser/lib/feedparser/namespaces/dc.py @@ -1,5 +1,5 @@ # Support for the Dublin Core metadata extensions -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/namespaces/georss.py b/script.module.feedparser/lib/feedparser/namespaces/georss.py index 8d8b253b35..2f30350686 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/georss.py +++ b/script.module.feedparser/lib/feedparser/namespaces/georss.py @@ -1,5 +1,5 @@ # Support for the GeoRSS format -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # @@ -91,6 +91,8 @@ def _parse_srs_attrs(self, attrs_d): except ValueError: srs_dimension = 2 context = self._get_context() + if 'where' not in context: + context['where'] = {} context['where']['srsName'] = srs_name context['where']['srsDimension'] = srs_dimension diff --git a/script.module.feedparser/lib/feedparser/namespaces/itunes.py b/script.module.feedparser/lib/feedparser/namespaces/itunes.py index abcfc243bb..7cebfae9a0 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/itunes.py +++ b/script.module.feedparser/lib/feedparser/namespaces/itunes.py @@ -1,5 +1,5 @@ # Support for the iTunes format -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/namespaces/mediarss.py b/script.module.feedparser/lib/feedparser/namespaces/mediarss.py index b63743879f..00a07afbcb 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/mediarss.py +++ b/script.module.feedparser/lib/feedparser/namespaces/mediarss.py @@ -1,5 +1,5 @@ # Support for the Media RSS format -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/namespaces/psc.py b/script.module.feedparser/lib/feedparser/namespaces/psc.py index c7f565e04c..519bee1d8e 100644 --- a/script.module.feedparser/lib/feedparser/namespaces/psc.py +++ b/script.module.feedparser/lib/feedparser/namespaces/psc.py @@ -1,5 +1,5 @@ # Support for the Podlove Simple Chapters format -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/parsers/loose.py b/script.module.feedparser/lib/feedparser/parsers/loose.py index 52467d0f8b..ee0b58b138 100644 --- a/script.module.feedparser/lib/feedparser/parsers/loose.py +++ b/script.module.feedparser/lib/feedparser/parsers/loose.py @@ -1,5 +1,5 @@ # The loose feed parser that interfaces with an SGML parsing library -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/parsers/strict.py b/script.module.feedparser/lib/feedparser/parsers/strict.py index 23759f9386..d40797a7aa 100644 --- a/script.module.feedparser/lib/feedparser/parsers/strict.py +++ b/script.module.feedparser/lib/feedparser/parsers/strict.py @@ -1,5 +1,5 @@ # The strict feed parser that interfaces with an XML parsing library -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/sanitizer.py b/script.module.feedparser/lib/feedparser/sanitizer.py index 308db7c3aa..597a72b87f 100644 --- a/script.module.feedparser/lib/feedparser/sanitizer.py +++ b/script.module.feedparser/lib/feedparser/sanitizer.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/sgml.py b/script.module.feedparser/lib/feedparser/sgml.py index 1509099ba1..ae5edf2a21 100644 --- a/script.module.feedparser/lib/feedparser/sgml.py +++ b/script.module.feedparser/lib/feedparser/sgml.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/urls.py b/script.module.feedparser/lib/feedparser/urls.py index c27fdd1284..1155f26e61 100644 --- a/script.module.feedparser/lib/feedparser/urls.py +++ b/script.module.feedparser/lib/feedparser/urls.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/lib/feedparser/util.py b/script.module.feedparser/lib/feedparser/util.py index 5b73130728..5ad3a84a0e 100644 --- a/script.module.feedparser/lib/feedparser/util.py +++ b/script.module.feedparser/lib/feedparser/util.py @@ -1,4 +1,4 @@ -# Copyright 2010-2020 Kurt McKee +# Copyright 2010-2023 Kurt McKee # Copyright 2002-2008 Mark Pilgrim # All rights reserved. # diff --git a/script.module.feedparser/icon.png b/script.module.feedparser/resources/icon.png similarity index 100% rename from script.module.feedparser/icon.png rename to script.module.feedparser/resources/icon.png