Files
wqb/wqb.py

86 lines
2.4 KiB
Python

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())