Merge branch 'cog-changes' into develop

This commit is contained in:
Will Tekulve 2016-05-12 21:30:45 -04:00
commit bb99430a9b
2 changed files with 43 additions and 34 deletions

View File

@ -21,6 +21,12 @@ __version__ = "0.0.1"
log = logging.getLogger("red.audio") log = logging.getLogger("red.audio")
log.setLevel(logging.DEBUG) log.setLevel(logging.DEBUG)
__author__ = "tekulvw"
__version__ = "0.0.1"
log = logging.getLogger("red.audio")
log.setLevel(logging.DEBUG)
try: try:
import youtube_dl import youtube_dl
except: except:
@ -184,12 +190,10 @@ class Downloader(threading.Thread):
video = self._yt.extract_info(self.url, download=False, video = self._yt.extract_info(self.url, download=False,
process=False) process=False)
else: else:
self.url = self.url[9:]
yt_id = self._yt.extract_info(self.url,
download=False)["entries"][0]["id"] # Should handle errors here.
self.url = "https://youtube.com/watch?v={}".format(yt_id)
video = self._yt.extract_info(self.url, download=False, video = self._yt.extract_info(self.url, download=False,
process=False) process=False)
self.url = "https://youtube.com/watch?v={}".format(
video["entries"][0]["id"])
self.song = Song(**video) self.song = Song(**video)
@ -469,20 +473,6 @@ class Audio:
except AttributeError: except AttributeError:
pass pass
def _list_playlists(self, server):
try:
server = server.id
except:
pass
path = "data/audio/playlists"
old_playlists = [f[:-4] for f in os.listdir(path) if f.endswith(".txt")]
path = os.path.join(path, server)
if os.path.exists(path):
new_playlists = [f[:-4] for f in os.listdir(path) if f.endswith(".txt")]
else:
new_playlists = []
return list(set(old_playlists + new_playlists))
def _list_local_playlists(self): def _list_local_playlists(self):
ret = [] ret = []
for thing in os.listdir(self.local_playlist_path): for thing in os.listdir(self.local_playlist_path):
@ -491,6 +481,22 @@ class Audio:
log.debug("local playlists:\n\t{}".format(ret)) log.debug("local playlists:\n\t{}".format(ret))
return ret return ret
def _list_playlists(self, server):
try:
server = server.id
except:
pass
path = "data/audio/playlists"
old_playlists = [f[:-4] for f in os.listdir(path)
if f.endswith(".txt")]
path = os.path.join(path, server)
if os.path.exists(path):
new_playlists = [f[:-4] for f in os.listdir(path)
if f.endswith(".txt")]
else:
new_playlists = []
return list(set(old_playlists + new_playlists))
def _load_playlist(self, server, name, local=True): def _load_playlist(self, server, name, local=True):
try: try:
server = server.id server = server.id
@ -611,7 +617,7 @@ class Audio:
assert type(server) is discord.Server assert type(server) is discord.Server
log.debug('starting to play on "{}"'.format(server.name)) log.debug('starting to play on "{}"'.format(server.name))
if self._valid_playable_url(url) or "[SEARCH:]" in url: if self._valid_playable_url(url):
song = await self._guarantee_downloaded(server, url) song = await self._guarantee_downloaded(server, url)
local = False local = False
else: # Assume local else: # Assume local
@ -1028,6 +1034,12 @@ class Audio:
author = ctx.message.author author = ctx.message.author
voice_channel = author.voice_channel voice_channel = author.voice_channel
# Checking if playing in current server
if self.is_playing(server):
await self.bot.say("I'm already playing a song on this server!")
return # TODO: Possibly execute queue?
# Checking already connected, will join if not # Checking already connected, will join if not
caller = inspect.currentframe().f_back.f_code.co_name caller = inspect.currentframe().f_back.f_code.co_name
@ -1049,12 +1061,6 @@ class Audio:
await self._stop_and_disconnect(server) await self._stop_and_disconnect(server)
await self._join_voice_channel(voice_channel) await self._join_voice_channel(voice_channel)
# Checking if playing in current server
if self.is_playing(server):
await self.bot.say("I'm already playing a song on this server!")
return # TODO: Possibly execute queue?
# If not playing, spawn a downloader if it doesn't exist and begin # If not playing, spawn a downloader if it doesn't exist and begin
# downloading the next song # downloading the next song
@ -1111,7 +1117,7 @@ class Audio:
await self.play.callback(self, ctx, url) await self.play.callback(self, ctx, url)
@commands.command(name="yt", pass_context=True, no_pm=True) @commands.command(name="yt", pass_context=True, no_pm=True)
async def yt_search(self, ctx, *, search_terms : str): async def yt_search(self, ctx, *, search_terms: str):
"""Searches and plays a video from YouTube""" """Searches and plays a video from YouTube"""
await self.play.callback(self, ctx, search_terms) await self.play.callback(self, ctx, search_terms)
@ -1232,6 +1238,7 @@ class Audio:
server, name)) server, name))
if caller == "playlist_start_mix": if caller == "playlist_start_mix":
shuffle(playlist.playlist) shuffle(playlist.playlist)
self._play_playlist(server, playlist) self._play_playlist(server, playlist)
await self.bot.say("Playlist queued.") await self.bot.say("Playlist queued.")
else: else:
@ -1361,8 +1368,9 @@ class Audio:
song = self.queue[server.id]["NOW_PLAYING"] song = self.queue[server.id]["NOW_PLAYING"]
if song: if song:
msg = ("\n**Title:** {}\n**Author:** {}\n**Uploader:** {}\n" msg = ("\n**Title:** {}\n**Author:** {}\n**Uploader:** {}\n"
"**Views:** {}\n\n<{}>".format(song.title, song.creator, "**Views:** {}\n\n<{}>".format(
song.uploader, song.view_count, song.webpage_url)) song.title, song.creator, song.view_count,
song.webpage_url))
await self.bot.say(msg.replace("**Author:** None\n", "")) await self.bot.say(msg.replace("**Author:** None\n", ""))
else: else:
await self.bot.say("I don't know what this song is either.") await self.bot.say("I don't know what this song is either.")
@ -1455,8 +1463,8 @@ class Audio:
ret[setting] = self.settings[setting] ret[setting] = self.settings[setting]
if setting.lower() == "volume" and ret[setting] <= 1: if setting.lower() == "volume" and ret[setting] <= 1:
ret[setting] *= 100 ret[setting] *= 100
#^This will make it so that only users with an outdated config will # ^This will make it so that only users with an outdated config will
#have their volume set * 100. In theory. # have their volume set * 100. In theory.
self.save_settings() self.save_settings()
return ret return ret

View File

@ -7,6 +7,7 @@ import os
import logging import logging
import asyncio import asyncio
class Mod: class Mod:
"""Moderation tools.""" """Moderation tools."""