mirror of
https://github.com/miaowware/qrm2.git
synced 2025-08-03 22:02:25 -04:00
now it can start
This commit is contained in:
parent
a0c224654b
commit
daf461b6ac
@ -10,7 +10,7 @@ from collections import OrderedDict
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
import discord.ext.commands as commands
|
from discord.ext import commands, tasks
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
@ -20,20 +20,10 @@ class QRZCog(commands.Cog):
|
|||||||
def __init__(self, bot: commands.Bot):
|
def __init__(self, bot: commands.Bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
self.gs = bot.get_cog("GlobalSettings")
|
self.gs = bot.get_cog("GlobalSettings")
|
||||||
try:
|
self._qrz_session_init.start()
|
||||||
with open('data/qrz_session') as qrz_file:
|
|
||||||
self.key = qrz_file.readline().strip()
|
|
||||||
await qrz_test_session(self.key)
|
|
||||||
except FileNotFoundError:
|
|
||||||
self.key = await qrz_login(self.gs.keys.qrz_user, self.gs.keys.qrz_pass)
|
|
||||||
with open('data/qrz_session', 'w') as qrz_file:
|
|
||||||
qrz_file.write(self.key)
|
|
||||||
except ConnectionError:
|
|
||||||
self.key = await qrz_login(self.gs.keys.qrz_user, self.gs.keys.qrz_pass)
|
|
||||||
with open('data/qrz_session', 'w') as qrz_file:
|
|
||||||
qrz_file.write(self.key)
|
|
||||||
|
|
||||||
@commands.command(name="qrz", aliases=["call"])
|
@commands.command(name="qrz", aliases=["call"])
|
||||||
|
async def _qrz_lookup(self, ctx: commands.Context, call: str):
|
||||||
if self.gs.keys.qrz_user == '' or self.gs.keys.qrz_pass == '':
|
if self.gs.keys.qrz_user == '' or self.gs.keys.qrz_pass == '':
|
||||||
await ctx.send(f'http://qrz.com/db/{call}')
|
await ctx.send(f'http://qrz.com/db/{call}')
|
||||||
return
|
return
|
||||||
@ -41,9 +31,7 @@ class QRZCog(commands.Cog):
|
|||||||
try:
|
try:
|
||||||
await qrz_test_session(self.key)
|
await qrz_test_session(self.key)
|
||||||
except ConnectionError:
|
except ConnectionError:
|
||||||
self.key = await qrz_login(self.gs.keys.qrz_user, self.gs.keys.qrz_pass)
|
await self.get_session()
|
||||||
with open('data/qrz_session', 'w') as qrz_file:
|
|
||||||
qrz_file.write(self.key)
|
|
||||||
|
|
||||||
url = f'http://xmldata.qrz.com/xml/current/?s={self.key};callsign={call}'
|
url = f'http://xmldata.qrz.com/xml/current/?s={self.key};callsign={call}'
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
@ -58,9 +46,7 @@ class QRZCog(commands.Cog):
|
|||||||
resp_session = {tag.name: tag.contents[0] for tag in xml_soup.select('QRZDatabase Session *')}
|
resp_session = {tag.name: tag.contents[0] for tag in xml_soup.select('QRZDatabase Session *')}
|
||||||
if 'Error' in resp_session:
|
if 'Error' in resp_session:
|
||||||
if 'Session Timeout' in resp_session['Error']:
|
if 'Session Timeout' in resp_session['Error']:
|
||||||
self.key = await qrz_login(self.gs.keys.qrz_user, self.gs.keys.qrz_pass)
|
await self.get_session()
|
||||||
with open('data/qrz_session', 'w') as qrz_file:
|
|
||||||
qrz_file.write(self.key)
|
|
||||||
raise ValueError(resp_session['Error'])
|
raise ValueError(resp_session['Error'])
|
||||||
|
|
||||||
embed = discord.Embed(title=f"QRZ Data for {resp_data['call']}",
|
embed = discord.Embed(title=f"QRZ Data for {resp_data['call']}",
|
||||||
@ -79,6 +65,26 @@ class QRZCog(commands.Cog):
|
|||||||
embed.add_field(name=title, value=val, inline=True)
|
embed.add_field(name=title, value=val, inline=True)
|
||||||
await ctx.send(embed=embed)
|
await ctx.send(embed=embed)
|
||||||
|
|
||||||
|
async def get_session(self):
|
||||||
|
"""QRZ API Session handling."""
|
||||||
|
try:
|
||||||
|
with open('data/qrz_session') as qrz_file:
|
||||||
|
self.key = qrz_file.readline().strip()
|
||||||
|
await qrz_test_session(self.key)
|
||||||
|
except FileNotFoundError:
|
||||||
|
self.key = await qrz_login(self.gs.keys.qrz_user, self.gs.keys.qrz_pass)
|
||||||
|
with open('data/qrz_session', 'w') as qrz_file:
|
||||||
|
qrz_file.write(self.key)
|
||||||
|
except ConnectionError:
|
||||||
|
self.key = await qrz_login(self.gs.keys.qrz_user, self.gs.keys.qrz_pass)
|
||||||
|
with open('data/qrz_session', 'w') as qrz_file:
|
||||||
|
qrz_file.write(self.key)
|
||||||
|
|
||||||
|
@tasks.loop(count=1)
|
||||||
|
async def _qrz_session_init(self):
|
||||||
|
"""Helper task to allow initialisation of the session at cog instantiation."""
|
||||||
|
await self.qrz_get_session()
|
||||||
|
|
||||||
|
|
||||||
async def qrz_login(user: str, passwd: str):
|
async def qrz_login(user: str, passwd: str):
|
||||||
url = f'http://xmldata.qrz.com/xml/current/?username={user};password={passwd};agent=qrmbot'
|
url = f'http://xmldata.qrz.com/xml/current/?username={user};password={passwd};agent=qrmbot'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user