[Audio] Verify installation of ffmpeg/avconv at loading

This commit is contained in:
Twentysix 2016-11-08 05:49:30 +01:00
parent c4b1c01a9f
commit 3734470e95

View File

@ -232,7 +232,7 @@ class Downloader(threading.Thread):
class Audio: class Audio:
"""Music Streaming.""" """Music Streaming."""
def __init__(self, bot): def __init__(self, bot, player):
self.bot = bot self.bot = bot
self.queue = {} # add deque's, repeat self.queue = {} # add deque's, repeat
self.downloaders = {} # sid: object self.downloaders = {} # sid: object
@ -245,6 +245,12 @@ class Audio:
self.skip_votes = {} self.skip_votes = {}
if player == "ffmpeg":
self.settings["AVCONV"] = False
elif player == "avconv":
self.settings["AVCONV"] = True
self.save_settings()
async def _add_song_status(self, song): async def _add_song_status(self, song):
if self._old_game is False: if self._old_game is False:
self._old_game = list(self.bot.servers)[0].me.game self._old_game = list(self.bot.servers)[0].me.game
@ -2053,10 +2059,25 @@ def check_files():
"Adding " + str(key) + " field to audio settings.json") "Adding " + str(key) + " field to audio settings.json")
dataIO.save_json(settings_path, current) dataIO.save_json(settings_path, current)
def verify_ffmpeg_avconv():
try:
subprocess.call(["ffmpeg", "-version"], stdout=subprocess.DEVNULL)
except FileNotFoundError:
pass
else:
return "ffmpeg"
try:
subprocess.call(["avconv", "-version"], stdout=subprocess.DEVNULL)
except FileNotFoundError:
return False
else:
return "avconv"
def setup(bot): def setup(bot):
check_folders() check_folders()
check_files() check_files()
if youtube_dl is None: if youtube_dl is None:
raise RuntimeError("You need to run `pip3 install youtube_dl`") raise RuntimeError("You need to run `pip3 install youtube_dl`")
if opus is False: if opus is False:
@ -2067,13 +2088,21 @@ def setup(bot):
raise RuntimeError( raise RuntimeError(
"You need to install ffmpeg and opus. See \"https://github.com/" "You need to install ffmpeg and opus. See \"https://github.com/"
"Twentysix26/Red-DiscordBot/wiki/Requirements\"") "Twentysix26/Red-DiscordBot/wiki/Requirements\"")
try:
bot.voice_clients player = verify_ffmpeg_avconv()
except AttributeError:
if not player:
if os.name == "nt":
msg = "ffmpeg isn't installed"
else:
msg = "Neither ffmpeg nor avconv are installed"
raise RuntimeError( raise RuntimeError(
"Your discord.py is outdated. Update to the newest one with\npip3 " "{}.\nConsult the guide for your operating system "
"install --upgrade git+https://github.com/Rapptz/discord.py@async") "and do ALL the steps in order.\n"
n = Audio(bot) # Praise 26 "https://twentysix26.github.io/Red-Docs/\n"
"".format(msg))
n = Audio(bot, player=player) # Praise 26
bot.add_cog(n) bot.add_cog(n)
bot.add_listener(n.voice_state_update, 'on_voice_state_update') bot.add_listener(n.voice_state_update, 'on_voice_state_update')
bot.loop.create_task(n.queue_scheduler()) bot.loop.create_task(n.queue_scheduler())