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}')