import json import urllib2 import logging import re logging.basicConfig(filename='wqb.log', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', encoding='utf-8', level=logging.DEBUG) sl = urllib2.urlopen(urllib2.Request('https://www.wowhead.com/world-quests/sl/eu', headers={'User-Agent': 'Edg/79.0.309.43'})).read() bfa = urllib2.urlopen(urllib2.Request('https://www.wowhead.com/world-quests/bfa/eu', headers={'User-Agent': 'Edg/79.0.309.43'})).read() legion = urllib2.urlopen(urllib2.Request('https://www.wowhead.com/world-quests/legion/eu', headers={'User-Agent': 'Edg/79.0.309.43'})).read() config = open('.conf', 'r') config = config.readlines() chat_id = config[0].split('=')[1].strip() token = config[1].split('=')[1].strip() def send_message(input): data = { 'chat_id': chat_id, 'parse_mode': "MarkdownV2", 'disable_web_page_preview': 'true', 'disable_notification': 'true', 'text': input } req = urllib2.Request('https://api.telegram.org/bot' + token + '/sendMessage') req.add_header('Content-Type', 'application/json') response = urllib2.urlopen(req, json.dumps(data)) logging.info('sent message ' + input) def get_id(quest): sources = {'SL': sl, 'BfA': bfa, 'Legion': legion} for name, src in sources.items(): if (src.find(quest) != -1): rgx = r"\"(\d+)\":{\"name_enus\":\"" + re.escape(quest) + r"\"" m = re.search(rgx, src) if (m): return m.group(1), name else: return 0, name return -1, '' def sanitize(str): return str.replace('-', '\\-') qlist = open('ql','r') qlist = qlist.readlines() output = '' for quest in qlist: qsplit = quest.rstrip().split('|') id = -1 tag = '' q = '' prefix = '' suffix = '' if len(qsplit) == 1: q = qsplit[0] elif len(qsplit) == 2: q = qsplit[1] prefix = qsplit[0] + " - " elif len(qsplit) == 3: q = qsplit[1] prefix = qsplit[0] + " - " suffix = " - " + qsplit[2] r = get_id(q) id = r[0] tag = r[1] if (id == -1): continue elif (id > 0): q = "[%s](https://wowhead.com/quest=%s)" % (q, id) output = "%s\n\\[%s\\] %s%s%s" % (output, tag, prefix, q, suffix) if output != '': output = sanitize(output) send_message(output.strip())