[Audio] Redefine max length with livestream exception (#3878)

* Redefine max length with livestream exception

* Address review

* is_track_too_long -> is_track_length_allowed for a more accurate description of what the function actually is doing
* we now rely on Track.is_stream for determining whether item is a livestream (or unseekable/non-known audio length like OGG files) for determining whether it can bypass the user-set max track length
* Removal of passing track length/an int to is_track_length_allowed - will always pass the full Track object now

* Address review
This commit is contained in:
aikaterna 2020-06-11 07:38:43 -07:00 committed by GitHub
parent b1d394eac5
commit e3322af384
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 13 additions and 15 deletions

View File

@ -566,7 +566,7 @@ class AudioAPIInterface:
if len(player.queue) >= 10000:
continue
if guild_data["maxlength"] > 0:
if self.cog.is_track_too_long(single_track, guild_data["maxlength"]):
if self.cog.is_track_length_allowed(single_track, guild_data["maxlength"]):
enqueued_tracks += 1
player.add(ctx.author, single_track)
self.bot.dispatch(

View File

@ -165,7 +165,7 @@ class MixinMeta(ABC):
raise NotImplementedError()
@abstractmethod
def is_track_too_long(self, track: Union[lavalink.Track, int], maxlength: int) -> bool:
def is_track_length_allowed(self, track: lavalink.Track, maxlength: int) -> bool:
raise NotImplementedError()
@abstractmethod

View File

@ -274,7 +274,7 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
description=_("This track is not allowed in this server."),
)
elif guild_data["maxlength"] > 0:
if self.is_track_too_long(single_track, guild_data["maxlength"]):
if self.is_track_length_allowed(single_track, guild_data["maxlength"]):
single_track.requester = ctx.author
player.queue.insert(0, single_track)
player.maybe_shuffle()
@ -763,7 +763,7 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
log.debug(f"Query is not allowed in {ctx.guild} ({ctx.guild.id})")
continue
elif guild_data["maxlength"] > 0:
if self.is_track_too_long(track, guild_data["maxlength"]):
if self.is_track_length_allowed(track, guild_data["maxlength"]):
track_len += 1
player.add(ctx.author, track)
self.bot.dispatch(

View File

@ -1489,7 +1489,7 @@ class PlaylistCommands(MixinMeta, metaclass=CompositeMetaClass):
pass
if not local_path.exists() and not local_path.is_file():
continue
if maxlength > 0 and not self.is_track_too_long(track.length, maxlength):
if maxlength > 0 and not self.is_track_length_allowed(track, maxlength):
continue
player.add(author_obj, track)

View File

@ -165,7 +165,7 @@ class FormattingUtilities(MixinMeta, metaclass=CompositeMetaClass):
)
elif guild_data["maxlength"] > 0:
if self.is_track_too_long(search_choice.length, guild_data["maxlength"]):
if self.is_track_length_allowed(search_choice, guild_data["maxlength"]):
player.add(ctx.author, search_choice)
player.maybe_shuffle()
self.bot.dispatch(

View File

@ -435,7 +435,7 @@ class PlayerUtilities(MixinMeta, metaclass=CompositeMetaClass):
log.debug(f"Query is not allowed in {ctx.guild} ({ctx.guild.id})")
continue
elif guild_data["maxlength"] > 0:
if self.is_track_too_long(track, guild_data["maxlength"]):
if self.is_track_length_allowed(track, guild_data["maxlength"]):
track_len += 1
player.add(ctx.author, track)
self.bot.dispatch(
@ -514,7 +514,7 @@ class PlayerUtilities(MixinMeta, metaclass=CompositeMetaClass):
ctx, title=_("This track is not allowed in this server.")
)
elif guild_data["maxlength"] > 0:
if self.is_track_too_long(single_track, guild_data["maxlength"]):
if self.is_track_length_allowed(single_track, guild_data["maxlength"]):
player.add(ctx.author, single_track)
player.maybe_shuffle()
self.bot.dispatch(
@ -661,12 +661,10 @@ class PlayerUtilities(MixinMeta, metaclass=CompositeMetaClass):
else:
return False
def is_track_too_long(self, track: Union[lavalink.Track, int], maxlength: int) -> bool:
try:
length = round(track.length / 1000)
except AttributeError:
length = round(track / 1000)
if maxlength < length <= 92233720368547758070: # livestreams return 9223372036854775807ms
def is_track_length_allowed(self, track: lavalink.Track, maxlength: int) -> bool:
if track.is_stream:
return True
length = track.length / 1000
if length > maxlength:
return False
return True