📽️ Added the !addshow command

This commit is contained in:
NikolajDanger
2021-01-31 20:50:49 +01:00
parent 86cc52ca0d
commit bf64fa3fec
7 changed files with 105 additions and 10 deletions

View File

@ -83,13 +83,16 @@ class Funcs():
return gameMessage
def addMovieReactionTest(self,channel,message):
def bedreNetflixReactionTest(self,channel,message):
try:
with open("resources/bedreNetflix/oldMessage"+str(channel.id),"r") as f:
data = json.load(f)
except:
return False, None
if data["messageID"] == message.id:
return True, data["imdbIds"]
if "imdbIds" in data:
return True, True, data["imdbIds"]
else:
return True, False, data["imdbNames"]
else:
return False, None

View File

@ -205,4 +205,6 @@ def emojiToCommand(emoji):
return "roll"
elif emoji == "":
return "none"
elif emoji == "✔️":
return 1
else: return ""

View File

@ -1,8 +1,10 @@
import requests, imdb, discord, json
from funcs import logThis
url = "http://localhost:7878/api/v3/"
radarrURL = "http://localhost:7878/api/v3/"
sonarrURL = "http://192.168.0.40:8989/api/"
moviePath = "/media/plex/Server/movies/"
showPath = "/media/plex/Server/Shows/"
class BedreNetflix():
def __init__(self,bot):
@ -11,7 +13,11 @@ class BedreNetflix():
#Returns a list of no more than 5 options when user requests a movie
async def requestMovie(self, ctx, movieName):
logThis("Searching for "+movieName)
movies = imdb.IMDb().search_movie(movieName)
movieList = imdb.IMDb().search_movie(movieName)
movies = []
for movie in movieList:
if movie["kind"] == "movie":
movies.append(movie)
if len(movies) > 5:
movies = movies[:5]
@ -54,7 +60,7 @@ class BedreNetflix():
else:
logThis("Trying to add movie "+str(imdbId))
apiKey = self.bot.credentials.radarrKey
response = requests.get(url+"movie/lookup/imdb?imdbId=tt"+imdbId+"&apiKey="+apiKey)
response = requests.get(radarrURL+"movie/lookup/imdb?imdbId=tt"+imdbId+"&apiKey="+apiKey)
lookupData = response.json()
postData = {"qualityProfileId": 1,
"rootFolderPath" : moviePath,
@ -63,7 +69,7 @@ class BedreNetflix():
for key in ["tmdbId","title","titleSlug","images","year"]:
postData.update({key : lookupData[key]})
r = requests.post(url= url+"movie?apikey="+apiKey,json = postData)
r = requests.post(url= radarrURL+"movie?apikey="+apiKey,json = postData)
if r.status_code == 201:
await channel.send("Movie successfully added to Bedre Netflix")
@ -73,3 +79,73 @@ class BedreNetflix():
else:
await channel.send("Something went wrong")
logThis(str(r.status_code)+" "+r.reason)
#Returns a list of no more than 5 options when user requests a show
async def requestShow(self, ctx, showName):
logThis("Searching for "+showName)
movies = imdb.IMDb().search_movie(showName) #Replace with tvdb
shows = []
for movie in movies:
if movie["kind"] == "tv series":
shows.append(movie)
if len(shows) > 5:
shows = shows[:5]
if len(shows) == 1:
messageTitle = "**Is it this show?**"
else:
messageTitle = "**Is it any of these shows?**"
messageText = ""
imdbNames = []
for x, show in enumerate(shows):
messageText += "\n"+str(x+1)+") "+show["title"]+" ("+str(show["year"])+")"
imdbNames.append(show["title"])
logThis("Returning a list of "+str(len(shows))+" possible shows: "+str(imdbNames))
em = discord.Embed(title=messageTitle,description=messageText,colour=0x00FF00)
message = await ctx.send(embed=em)
messageData = {"messageID":message.id,"imdbNames":imdbNames}
with open("resources/bedreNetflix/oldMessage"+str(ctx.channel.id),"w") as f:
json.dump(messageData,f)
if len(shows) == 1:
await message.add_reaction("✔️")
else:
for x in range(len(shows)):
await message.add_reaction(["1","2","3","4","5"][x])
await message.add_reaction("")
#Adds the requested show to Bedre Netflix
async def addShow(self,channel,imdbName):
if imdbName == None:
logThis("Did not find what the user was searching for")
await channel.send("Try searching for the IMDB id")
else:
logThis("Trying to add show "+str(imdbName))
apiKey = self.bot.credentials.sonarrKey
response = requests.get(sonarrURL+"series/lookup?term="+imdbName.replace(" ","%20")+"&apiKey="+apiKey)
lookupData = response.json()[0]
postData = {"ProfileId" : 1,
"rootFolderPath" : showPath,
"monitored" : True,
"addOptions" : {"searchForMissingEpisodes" : True}}
for key in ["tvdbId","title","titleSlug","images","seasons"]:
postData.update({key : lookupData[key]})
r = requests.post(url= sonarrURL+"series?apikey="+apiKey,json = postData)
if r.status_code == 201:
await channel.send("Show successfully added to Bedre Netflix")
logThis("Added a show to Bedre Netflix")
elif r.status_code == 400:
await channel.send("The show is already on Bedre Netflix")
else:
await channel.send("Something went wrong")
logThis(str(r.status_code)+" "+r.reason)