PythonXeno/cogs/radar.py
2024-10-26 04:47:45 -05:00

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