Index: head/irc/py-limnoria/Makefile =================================================================== --- head/irc/py-limnoria/Makefile (revision 513445) +++ head/irc/py-limnoria/Makefile (revision 513446) @@ -1,74 +1,74 @@ # Created by: Kubilay Kocak # $FreeBSD$ PORTNAME= limnoria PORTVERSION= 2018.09.09 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= irc python PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= koobs@FreeBSD.org COMMENT= Modified version of Supybot (IRC bot and framework) LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE.md TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}feedparser>=0:textproc/py-feedparser@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dateutil>=0:devel/py-dateutil@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytz>=0:devel/py-pytz@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}mock>=0:devel/py-mock@${PY_FLAVOR} USES= python # 2.6+ USE_GITHUB= yes USE_PYTHON= autoplist concurrent distutils GH_ACCOUNT= ProgVal GH_PROJECT= Limnoria GH_TAGNAME= master-2018-09-10 OPTIONS_DEFINE= ECDSA PROXY OPTIONS_DEFAULT= ECDSA ENCODING RSS TIME OPTIONS_GROUP= EXTRAS OPTIONS_GROUP_EXTRAS= ENCODING GPG RSS TIME OPTIONS_RADIO= AKA OPTIONS_RADIO_AKA= SQLITE SQLALCHEMY EXTRAS_DESC= Plugin Extras AKA_DESC= AKA Plugin: SQL Backend (none = plugin disabled) ECDSA_DESC= ECDSA SASL authentication PROXY_DESC= SOCKS Proxy connections ENCODING_DESC= Web Plugin: Better encoding detection (via chardet) GPG_DESC= GPG Plugin: GnuPG Authentication RSS_DESC= RSS Plugin: Feed parsing (via feedparser) TIME_DESC= Time Plugin: Extra time features (via dateutil/pytz) SQLALCHEMY_DESC= SQLAlchemy database support ECDSA_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}ecdsa>0:security/py-ecdsa@${PY_FLAVOR} PROXY_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pysocks>=0:net/py-pysocks@${PY_FLAVOR} ENCODING_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}chardet>=0:textproc/py-chardet@${PY_FLAVOR} GPG_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}python-gnupg>=0:security/py-python-gnupg@${PY_FLAVOR} RSS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}feedparser>=0:textproc/py-feedparser@${PY_FLAVOR} TIME_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dateutil>=0:devel/py-dateutil@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytz>=0:devel/py-pytz@${PY_FLAVOR} SQLITE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} SQLALCHEMY_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlalchemy10>0:databases/py-sqlalchemy10@${PY_FLAVOR} NO_ARCH= yes # Needs to be installed first to work. do-test: @cd ${WRKSRC} && ${PYTHON_CMD} ${LOCALBASE}/bin/supybot-test \ --no-network \ --plugins-dir="./build/lib*/supybot/plugins/" \ --disable-multiprocessing .include Index: head/irc/py-limnoria/files/patch-plugins_Web_plugin.py =================================================================== --- head/irc/py-limnoria/files/patch-plugins_Web_plugin.py (nonexistent) +++ head/irc/py-limnoria/files/patch-plugins_Web_plugin.py (revision 513446) @@ -0,0 +1,62 @@ +# https://github.com/ProgVal/Limnoria/pull/1371 +# https://github.com/ProgVal/Limnoria/issues/1362 +# https://github.com/ProgVal/Limnoria/issues/1359 + +--- plugins/Web/plugin.py.orig 2019-09-29 03:00:58 UTC ++++ plugins/Web/plugin.py +@@ -149,32 +149,31 @@ class Web(callbacks.PluginRegexp): + def getTitle(self, irc, url, raiseErrors): + size = conf.supybot.protocols.http.peekSize() + timeout = self.registryValue('timeout') +- (target, text) = utils.web.getUrlTargetAndContent(url, size=size, +- timeout=timeout) + try: +- text = text.decode(utils.web.getEncoding(text) or 'utf8', +- 'replace') +- except UnicodeDecodeError: +- pass +- parser = Title() +- if minisix.PY3 and isinstance(text, bytes): +- if raiseErrors: +- irc.error(_('Could not guess the page\'s encoding. (Try ' +- 'installing python-charade.)'), Raise=True) ++ (target, text) = utils.web.getUrlTargetAndContent(url, size=size,timeout=timeout) ++ encoding = utils.web.getEncoding(text) ++ if encoding is None: # Condition if charade not installed ++ self.log.info('Web plugin TitleSnarfer: Could not guess the page\'s' ++ ' encoding. (Try installing python-charade.)') ++ encoding = 'utf-8' # Assume UTF-8 and replace unknown chars to the UTF-8 codec for U+FFFD in the next hop ++ text = text.decode(utils.web.getEncoding(text) or 'utf-8','replace') ++ parser = Title() ++ try: ++ parser.feed(text) ++ except: ++ parser = Title() ++ parser.feed(bytes(text)) # Explicitly pack to bytes in encoding errors for (more) python2 compatibility ++ parser.close() ++ title = utils.str.normalizeWhitespace(''.join(parser.data).strip()) ++ if title: ++ return (target, title) + else: +- return None +- parser.feed(text) +- parser.close() +- title = utils.str.normalizeWhitespace(''.join(parser.data).strip()) +- if title: +- return (target, title) +- elif raiseErrors: +- if len(text) < size: +- irc.error(_('That URL appears to have no HTML title.'), +- Raise=True) +- else: +- irc.error(format(_('That URL appears to have no HTML title ' +- 'within the first %S.'), size), Raise=True) ++ if len(text) < size: ++ self.log.info('Web plugin TitleSnarfer: <' + url + '> appears to have no HTML title.') ++ else: ++ self.log.info('Web plugin TitleSnarfer: Could not retrieve title of <' + url + '>') ++ except Exception as e: ++ self.log.info('Web plugin TitleSnarfer: <' + str(e) + '> while trying to process <' + url +'>') + + @fetch_sandbox + def titleSnarfer(self, irc, msg, match): Property changes on: head/irc/py-limnoria/files/patch-plugins_Web_plugin.py ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property