mirror of
https://github.com/pacnpal/Pac-cogs.git
synced 2025-12-20 10:51:05 -05:00
Update overseerr.py
This commit is contained in:
@@ -1,12 +1,13 @@
|
|||||||
from redbot.core import commands, Config
|
from redbot.core import commands, Config
|
||||||
from redbot.core.bot import Red
|
from redbot.core.bot import Red
|
||||||
|
import aiohttp
|
||||||
import asyncio
|
import asyncio
|
||||||
import json
|
import json
|
||||||
|
|
||||||
class Overseerr(commands.Cog):
|
class Overseerr(commands.Cog):
|
||||||
def __init__(self, bot: Red):
|
def __init__(self, bot: Red):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
self.config = Config.get_conf(self, identifier=336473788746)
|
self.config = Config.get_conf(self, identifier=1234567890)
|
||||||
default_global = {
|
default_global = {
|
||||||
"overseerr_url": None,
|
"overseerr_url": None,
|
||||||
"overseerr_api_key": None,
|
"overseerr_api_key": None,
|
||||||
@@ -43,23 +44,24 @@ class Overseerr(commands.Cog):
|
|||||||
overseerr_url = await self.config.overseerr_url()
|
overseerr_url = await self.config.overseerr_url()
|
||||||
overseerr_api_key = await self.config.overseerr_api_key()
|
overseerr_api_key = await self.config.overseerr_api_key()
|
||||||
url = f"{overseerr_url}/api/v1/{'movie' if media_type == 'movie' else 'tv'}/{media_id}"
|
url = f"{overseerr_url}/api/v1/{'movie' if media_type == 'movie' else 'tv'}/{media_id}"
|
||||||
headers = {"X-Api-key": overseerr_api_key}
|
headers = {"X-Api-Key": overseerr_api_key}
|
||||||
|
|
||||||
async with self.bot.session.get(url, headers=headers) as resp:
|
async with aiohttp.ClientSession() as session:
|
||||||
if resp.status == 200:
|
async with session.get(url, headers=headers) as resp:
|
||||||
data = await resp.json()
|
if resp.status == 200:
|
||||||
status = "Available" if data.get('mediaInfo', {}).get('status') == 3 else "Not Available"
|
data = await resp.json()
|
||||||
if data.get('request'):
|
status = "Available" if data.get('mediaInfo', {}).get('status') == 3 else "Not Available"
|
||||||
status += " (Requested)"
|
if data.get('request'):
|
||||||
return status
|
status += " (Requested)"
|
||||||
return "Status Unknown"
|
return status
|
||||||
|
return "Status Unknown"
|
||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
async def request(self, ctx: commands.Context, *, query: str):
|
async def request(self, ctx: commands.Context, *, query: str):
|
||||||
"""Search and request a movie or TV show on Overseerr."""
|
"""Search and request a movie or TV show on Overseerr."""
|
||||||
overseerr_url = await self.config.overseerr_url()
|
overseerr_url = await self.config.overseerr_url()
|
||||||
overseerr_api_key = await self.config.overseerr_api_key()
|
overseerr_api_key = await self.config.overseerr_api_key()
|
||||||
|
|
||||||
if not overseerr_url or not overseerr_api_key:
|
if not overseerr_url or not overseerr_api_key:
|
||||||
await ctx.send("Overseerr is not configured. Please ask an admin to set it up.")
|
await ctx.send("Overseerr is not configured. Please ask an admin to set it up.")
|
||||||
return
|
return
|
||||||
@@ -73,8 +75,9 @@ class Overseerr(commands.Cog):
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Search for the movie or TV show
|
# Search for the movie or TV show
|
||||||
async with self.bot.session.get(search_url, headers=headers, params={"query": query}) as resp:
|
async with aiohttp.ClientSession() as session:
|
||||||
search_results = await resp.json()
|
async with session.get(search_url, headers=headers, params={"query": query}) as resp:
|
||||||
|
search_results = await resp.json()
|
||||||
|
|
||||||
if not search_results['results']:
|
if not search_results['results']:
|
||||||
await ctx.send(f"No results found for '{query}'.")
|
await ctx.send(f"No results found for '{query}'.")
|
||||||
@@ -122,13 +125,14 @@ class Overseerr(commands.Cog):
|
|||||||
"mediaType": media_type
|
"mediaType": media_type
|
||||||
}
|
}
|
||||||
|
|
||||||
async with self.bot.session.post(request_url, headers=headers, json=request_data) as resp:
|
async with aiohttp.ClientSession() as session:
|
||||||
if resp.status == 200:
|
async with session.post(request_url, headers=headers, json=request_data) as resp:
|
||||||
response_data = await resp.json()
|
if resp.status == 200:
|
||||||
request_id = response_data.get('id')
|
response_data = await resp.json()
|
||||||
await ctx.send(f"Successfully requested {media_type} '{selected_result['title']}'! Request ID: {request_id}")
|
request_id = response_data.get('id')
|
||||||
else:
|
await ctx.send(f"Successfully requested {media_type} '{selected_result['title']}'! Request ID: {request_id}")
|
||||||
await ctx.send(f"Failed to request {media_type} '{selected_result['title']}'. Please try again later.")
|
else:
|
||||||
|
await ctx.send(f"Failed to request {media_type} '{selected_result['title']}'. Please try again later.")
|
||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
async def approve(self, ctx: commands.Context, request_id: int):
|
async def approve(self, ctx: commands.Context, request_id: int):
|
||||||
@@ -140,7 +144,7 @@ class Overseerr(commands.Cog):
|
|||||||
|
|
||||||
overseerr_url = await self.config.overseerr_url()
|
overseerr_url = await self.config.overseerr_url()
|
||||||
overseerr_api_key = await self.config.overseerr_api_key()
|
overseerr_api_key = await self.config.overseerr_api_key()
|
||||||
|
|
||||||
if not overseerr_url or not overseerr_api_key:
|
if not overseerr_url or not overseerr_api_key:
|
||||||
await ctx.send("Overseerr is not configured. Please ask an admin to set it up.")
|
await ctx.send("Overseerr is not configured. Please ask an admin to set it up.")
|
||||||
return
|
return
|
||||||
@@ -152,11 +156,12 @@ class Overseerr(commands.Cog):
|
|||||||
"Content-Type": "application/json"
|
"Content-Type": "application/json"
|
||||||
}
|
}
|
||||||
|
|
||||||
async with self.bot.session.post(approve_url, headers=headers) as resp:
|
async with aiohttp.ClientSession() as session:
|
||||||
if resp.status == 200:
|
async with session.post(approve_url, headers=headers) as resp:
|
||||||
await ctx.send(f"Request {request_id} has been approved!")
|
if resp.status == 200:
|
||||||
else:
|
await ctx.send(f"Request {request_id} has been approved!")
|
||||||
await ctx.send(f"Failed to approve request {request_id}. Please check the request ID and try again.")
|
else:
|
||||||
|
await ctx.send(f"Failed to approve request {request_id}. Please check the request ID and try again.")
|
||||||
|
|
||||||
def setup(bot: Red):
|
def setup(bot: Red):
|
||||||
bot.add_cog(Overseerr(bot))
|
bot.add_cog(Overseerr(bot))
|
||||||
|
|||||||
Reference in New Issue
Block a user