iFirst gopher support. - zs - Zeitungsschau rss to email converter Err gopher.r-36.net 70 i Err gopher.r-36.net 70 1Log /scm/zs//log.gph gopher.r-36.net 70 1Files /scm/zs//files.gph gopher.r-36.net 70 1Refs /scm/zs//refs.gph gopher.r-36.net 70 1LICENSE /scm/zs//file/LICENSE.gph gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1commit 6931d72c70b47e9feb2be879260718592d0148e0 /scm/zs//commit/6931d72c70b47e9feb2be879260718592d0148e0.gph gopher.r-36.net 70 1parent 323c0f1b002f9614c76c14c47a2af4b39b4c5163 /scm/zs//commit/323c0f1b002f9614c76c14c47a2af4b39b4c5163.gph gopher.r-36.net 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net gopher.r-36.net 70 iDate: Tue, 21 Mar 2017 19:42:37 +0100 Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iFirst gopher support. Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iDiffstat: Err gopher.r-36.net 70 i zeitungsschau/feed.py | 25 +++++++++++++++++++++++++ Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i1 file changed, 25 insertions(+), 0 deletions(-) Err gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1diff --git a/zeitungsschau/feed.py b/zeitungsschau/feed.py /scm/zs//file/zeitungsschau/feed.py.gph gopher.r-36.net 70 i@@ -14,6 +14,8 @@ import hashlib Err gopher.r-36.net 70 i import pytz Err gopher.r-36.net 70 i import codecs Err gopher.r-36.net 70 i import html Err gopher.r-36.net 70 i+import urllib.parse Err gopher.r-36.net 70 i+import socket Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i def parseiso(dstr, now): Err gopher.r-36.net 70 i try: Err gopher.r-36.net 70 i@@ -242,6 +244,29 @@ def fetch(uri): Err gopher.r-36.net 70 i fval = fd.read().encode("utf-8") Err gopher.r-36.net 70 i fd.close() Err gopher.r-36.net 70 i rcode = 200 Err gopher.r-36.net 70 i+ elif "gopher://" in uri: Err gopher.r-36.net 70 i+ urls = urllib.parse.urlparse(uri, allow_fragments=False) Err gopher.r-36.net 70 i+ if ":" in urls.netloc: Err gopher.r-36.net 70 i+ (host, port) = urls.netloc.split(":") Err gopher.r-36.net 70 i+ else: Err gopher.r-36.net 70 i+ host = urls.netloc Err gopher.r-36.net 70 i+ port = 70 Err gopher.r-36.net 70 i+ if len(path) > 2: Err gopher.r-36.net 70 i+ if len(urls.query) > 0: Err gopher.r-36.net 70 i+ selector = "%s?%s" % (urls.path[2:], urls.query) Err gopher.r-36.net 70 i+ else: Err gopher.r-36.net 70 i+ selector = urls.path[2:] Err gopher.r-36.net 70 i+ else: Err gopher.r-36.net 70 i+ selector = "" Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) Err gopher.r-36.net 70 i+ s.connect((host, port)) Err gopher.r-36.net 70 i+ s.send("%s\r\n" % (selector)) Err gopher.r-36.net 70 i+ s.shutdown(1) Err gopher.r-36.net 70 i+ fd = s.makefile("r") Err gopher.r-36.net 70 i+ fval = fd.read().encode("utf-8") Err gopher.r-36.net 70 i+ fd.close() Err gopher.r-36.net 70 i+ rcode = 200 Err gopher.r-36.net 70 i else: Err gopher.r-36.net 70 i fd = requests.get(uri, timeout=20,\ Err gopher.r-36.net 70 i headers={"User-Agent": "Zeitungsschau/1.0"}) Err gopher.r-36.net 70 .