From eb85dd1ec6e5e4e65fc1956b7d4105a3cb66acb7 Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Mon, 30 Oct 2017 23:17:59 +0100 Subject: [PATCH] Use custom user agent string for outgoing requests --- classes/__init__.py | 3 +++ workers/closest.py | 9 ++++++--- workers/conn.py | 7 +++---- workers/radar.py | 3 +-- workers/val.py | 3 +-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/classes/__init__.py b/classes/__init__.py index e6226a3..a3fd47b 100644 --- a/classes/__init__.py +++ b/classes/__init__.py @@ -2,3 +2,6 @@ from classes.connection import Connection from classes.station import Station from classes.service import Service from classes.train import Train +from classes.request import Request +from classes.response import Response +from classes.httpclient import HTTPClient diff --git a/workers/closest.py b/workers/closest.py index 309b7bc..9af9fb5 100644 --- a/workers/closest.py +++ b/workers/closest.py @@ -1,9 +1,10 @@ import overpy import math import workers.val +from classes.httpclient import HTTPClient def getOSM(lat, lon, distance = 1000): - query = """ + query = """[out:json]; ( node (around:%i,%f,%f) @@ -20,8 +21,10 @@ def getOSM(lat, lon, distance = 1000): out; """ % (distance, lat, lon, distance, lat, lon) - api = overpy.Overpass(url="https://overpass.kumi.systems/api/interpreter") - res = api.query(query) + endpoint = "https://overpass.kumi.systems/api/interpreter" + + json = HTTPClient().post(endpoint, data={"data": query}).text + res = overpy.Overpass().parse_json(json) return res.nodes diff --git a/workers/conn.py b/workers/conn.py index 3d51b32..d1fec89 100644 --- a/workers/conn.py +++ b/workers/conn.py @@ -1,5 +1,4 @@ from bs4 import BeautifulSoup -import requests import datetime import pytz import threading @@ -43,7 +42,7 @@ def getService(sid, lines, q, eq = None): if not (walk or depdate): purl = dep.find("td", { "class": "product" }).find("a").get("href") - psource = requests.get(purl).text + psource = HTTPClient().get(purl).text zuppa = BeautifulSoup(psource, "html5lib") depdate = zuppa.findAll("div", { "class": "block" })[1].text.strip() @@ -69,7 +68,7 @@ def getService(sid, lines, q, eq = None): def getDetails(cid, url, q, via = [], eq = None): try: - ssource = requests.get(url).text + ssource = HTTPClient().get(url).text suppe = BeautifulSoup(ssource, "html5lib") cont = suppe.find("tr", id="trC0-%i" % cid) @@ -138,7 +137,7 @@ def connRequest(frm, to, count = 3, time = datetime.datetime.now(), mode = False for i in range(len(via)): url += "&REQ0JourneyStops%i.0G=%s&REQ0JourneyStops%i.0A=1" % (i + 1, via[i].extid if via[i].extid else via[i].name, i + 1) - source = requests.get(url).text + source = HTTPClient().get(url).text if "GO_conViewMode=outward" not in source: raise ValueError("No connection found.") diff --git a/workers/radar.py b/workers/radar.py index 1980ead..7d8e4cf 100644 --- a/workers/radar.py +++ b/workers/radar.py @@ -1,10 +1,9 @@ -import requests import json import urllib.parse from classes import * def getRadar(): - return requests.get("http://zugradar.oebb.at/bin/query.exe/dny?look_minx=-180000000&look_maxx=180000000&look_miny=-90000000&look_maxy=90000000&tpl=trains2json2&look_json=yes&performLocating=1&look_nv=get_zntrainname|no|attr|81|get_rtonly|yes|zugposmode|2|interval|30000|intervalstep|2000|maxnumberoftrains|500000000000|").text + return HTTPClient().get("http://zugradar.oebb.at/bin/query.exe/dny?look_minx=-180000000&look_maxx=180000000&look_miny=-90000000&look_maxy=90000000&tpl=trains2json2&look_json=yes&performLocating=1&look_nv=get_zntrainname|no|attr|81|get_rtonly|yes|zugposmode|2|interval|30000|intervalstep|2000|maxnumberoftrains|500000000000|").text def getTrains(names = None): trains = json.loads(getRadar())["t"] diff --git a/workers/val.py b/workers/val.py index 47e1ab0..520b132 100644 --- a/workers/val.py +++ b/workers/val.py @@ -1,10 +1,9 @@ -import requests import json import urllib.parse from classes import * def getValidator(name): - return requests.get("http://www.oebb.at/__ressources/system/stationsHafas.jsp?q=%s" % urllib.parse.quote(name)).text + return HTTPClient().get("http://www.oebb.at/__ressources/system/stationsHafas.jsp?q=%s" % urllib.parse.quote(name)).text def validateName(name): stations = json.loads(getValidator(name))