134 lines
5.5 KiB
Python
134 lines
5.5 KiB
Python
import json
|
|
from tracemalloc import stop
|
|
import discord
|
|
import wget
|
|
import requests
|
|
import random
|
|
import time
|
|
import os
|
|
from discord.ext import commands
|
|
|
|
## Xeno Discord PY Bot
|
|
### Radar Cog and Functionality
|
|
extname = (f'Radar')
|
|
randomnum = random.random()
|
|
|
|
# init local vars
|
|
initcurtime = time.localtime()
|
|
curtime = (f'{initcurtime.tm_hour}{initcurtime.tm_min}{initcurtime.tm_sec}')
|
|
curdate = (f'{initcurtime.tm_year}{initcurtime.tm_mon}{initcurtime.tm_mday}')
|
|
|
|
#make a cog.
|
|
class Radar(commands.Cog):
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
|
|
#radar command define
|
|
@commands.command(name='radar', pass_context=True)
|
|
async def radarget(self, ctx, arg1):
|
|
fnameformat = (f'XenoRadar_{arg1}_{curdate}_{curtime}.gif')
|
|
imgname = fnameformat
|
|
print (f'Cog_Radar: The radar command was run! {curdate}@{curtime}')
|
|
#uparg1 = arg1.upper()
|
|
#uparg2 = arg2.upper()
|
|
if arg1 == "help":
|
|
await ctx.channel.send(f'With no special arguments, this help page will appear.\n Using the radar command fetches radar loops from NWS servers, 3 letters automatically adds *K* in front, such as *KHGX*. \nIf a radar site with 4 or more letters is specified, Xeno will automatically fetch a radar image for your input. \nUsing the **natl** argument gets a moasic of all radars in the major US.')
|
|
elif arg1 == "natl":
|
|
conusarg = ('CONUS-LARGE')
|
|
await self.newdownloadImage(conusarg, imgname)
|
|
# await self.downloadImage(f'conus')
|
|
#if arg1 and len(arg1) == 3:
|
|
# addkarg1 = ('K'+arg1)
|
|
# downloadImage(addkarg1)
|
|
else:
|
|
await self.newdownloadImage(arg1, imgname)
|
|
#argCheck(uparg1, uparg2)
|
|
if os.path.isfile(f'data/radar/{imgname}'):
|
|
print(f'\nCog_Radar: file {imgname} was downloaded!! now sending to channel') # (TODO: make this go in bot log and show actual stuff)
|
|
await ctx.reply(file=discord.File(f'data/radar/{imgname}'))
|
|
await ctx.send(f'current radar image for {arg1} as of {curtime} on {curdate}')
|
|
else:
|
|
print("Cog_Radar: error has occurred")
|
|
# print(f'{self.filepath}')
|
|
# print("bullshit!") # yes
|
|
# await ctx.send(file=discord.File(f'{self.radarupload()}'))
|
|
|
|
# let's fix this bitch
|
|
async def newdownloadImage(self, radarname, fileout):
|
|
tmpradarname = radarname
|
|
if radarname and len(radarname) == 3:
|
|
tmpradarname = (f'K{radarname}')
|
|
|
|
downloadradar = tmpradarname.upper()
|
|
|
|
# print ("shit!") # testing lmfao
|
|
# wget.download(f'https://radar.weather.gov/ridge/lite/{downloadradar}_loop.gif?{random.random()}',f'data/radar/{fileout}') # RIP /lite directory because NWS suddenly changed that? 11.21.22
|
|
# wget.download(f'https://radar.weather.gov/ridge/standard/{downloadradar}_loop.gif?{random.random()}',f'data/radar/{fileout}') # new /standard directory, not sure what changed
|
|
|
|
# copied the below method from TranstarArchive, it may be faster who fucking knows
|
|
rq = requests.get(f'https://radar.weather.gov/ridge/standard/{downloadradar}_loop.gif?{random.random()}')
|
|
open(f'data/radar/{fileout}', 'wb').write(rq.content)
|
|
# fin
|
|
|
|
|
|
# # downloads image based off of arguments from command
|
|
# async def downloadImage(self, radarname):
|
|
# loopname = radarname.upper()
|
|
# fnameformat = (f'XenoRadar_{radarname}_{curdate}_{curtime}.gif')
|
|
# imgname = fnameformat
|
|
|
|
# if 'conus' in radarname:
|
|
# # urllib.request.urlretrieve(f'https://radar.weather.gov/ridge/lite/CONUS-LARGE_loop.gif?{random()}',f'XenoRadar_{radarname}_{curdate}_{curtime}')
|
|
# loopname = ('CONUS-LARGE')
|
|
# elif 'addkarg1' in radarname:
|
|
# loopname = (f'K{radarname}')
|
|
|
|
# print ("shit!") # testing lmfao
|
|
# # the commented following is deprecated
|
|
# # urllib.request.urlretrieve(f'https://radar.weather.gov/ridge/lite/{loopname}_loop.gif?{random()}',f'data/radar/{imgname}')
|
|
# wget.download(f'https://radar.weather.gov/ridge/lite/{loopname}_loop.gif?{random.random()}',f'data/radar/{imgname}')
|
|
# # wget.download(f'https://radar.weather.gov/ridge/lite/{loopname}_loop.gif?{randomnum}',f'data/radar/{imgname}')
|
|
|
|
# # check if the file was downloaded
|
|
# if os.path.isfile(f'data/radar/{imgname}'):
|
|
# print(f'Cog_Radar: file {imgname} was downloaded!!')
|
|
# filepath = (f'data/radar/{imgname}')
|
|
# return filepath
|
|
# else:
|
|
# print("Cog_Radar: error has occurred")
|
|
|
|
# # send to the bitchy uploader (caution:sexy)
|
|
# # self.radarupload(f'{filepath}')
|
|
|
|
# async def radarupload(self,uploadimage):
|
|
# # uploadfile = self.filepath
|
|
# print("fuck!") # more testing lmao
|
|
# print(f'{self.filepath} this thingy should be ok')
|
|
# # await ctx.send(file=discord.File(f'{self.filepath}'))
|
|
# return uploadimage
|
|
|
|
|
|
# checks args for specific terms
|
|
# def argCheck(arg1, arg2):
|
|
# if "NATL" in arg1:
|
|
# downloadImage('conus')
|
|
#
|
|
# if arg1.len() == '3':
|
|
# addkarg1 = ('K'+arg1)
|
|
# downloadImage(addkarg1)
|
|
# else:
|
|
# downloadImage(arg1)
|
|
|
|
|
|
def initFolder():
|
|
if not os.path.exists("data/radar"):
|
|
print("Cog_Radar: radar image folder wasn't found, creating it")
|
|
os.makedirs("data/radar")
|
|
else:
|
|
print("Cog_Radar: radar image folder exists, we jud")
|
|
|
|
async def setup(bot):
|
|
initFolder()
|
|
await bot.add_cog(Radar(bot))
|
|
print (f'Cog_Radar: Was initialized {curdate}@{curtime}')
|