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