mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-07 11:48:55 -05:00
[audio] adds typing indicator to playlist dedupe (#3058)
* [audio] adds typing indicator to playlist dedupe * [audio] not sure what happened here lol * [audio] forgot the return * add changelog * [audio] fix for black
This commit is contained in:
parent
4b62598a3d
commit
a3140b6659
1
changelog.d/audio/3058.enhancement.rst
Normal file
1
changelog.d/audio/3058.enhancement.rst
Normal file
@ -0,0 +1 @@
|
|||||||
|
Add typing indicator to playlist dedupe
|
||||||
@ -3737,89 +3737,92 @@ class Audio(commands.Cog):
|
|||||||
[p]playlist dedupe MyGlobalPlaylist --scope Global
|
[p]playlist dedupe MyGlobalPlaylist --scope Global
|
||||||
[p]playlist dedupe MyPersonalPlaylist --scope User
|
[p]playlist dedupe MyPersonalPlaylist --scope User
|
||||||
"""
|
"""
|
||||||
if scope_data is None:
|
async with ctx.typing():
|
||||||
scope_data = [PlaylistScope.GUILD.value, ctx.author, ctx.guild, False]
|
if scope_data is None:
|
||||||
scope, author, guild, specified_user = scope_data
|
scope_data = [PlaylistScope.GUILD.value, ctx.author, ctx.guild, False]
|
||||||
scope_name = humanize_scope(
|
scope, author, guild, specified_user = scope_data
|
||||||
scope, ctx=guild if scope == PlaylistScope.GUILD.value else author
|
scope_name = humanize_scope(
|
||||||
)
|
scope, ctx=guild if scope == PlaylistScope.GUILD.value else author
|
||||||
|
|
||||||
try:
|
|
||||||
playlist_id, playlist_arg = await self._get_correct_playlist_id(
|
|
||||||
ctx, playlist_matches, scope, author, guild, specified_user
|
|
||||||
)
|
|
||||||
except TooManyMatches as e:
|
|
||||||
return await self._embed_msg(ctx, str(e))
|
|
||||||
if playlist_id is None:
|
|
||||||
return await self._embed_msg(
|
|
||||||
ctx, _("Could not match '{arg}' to a playlist.").format(arg=playlist_arg)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
playlist = await get_playlist(playlist_id, scope, self.bot, guild, author)
|
playlist_id, playlist_arg = await self._get_correct_playlist_id(
|
||||||
except RuntimeError:
|
ctx, playlist_matches, scope, author, guild, specified_user
|
||||||
return await self._embed_msg(
|
)
|
||||||
ctx,
|
except TooManyMatches as e:
|
||||||
_("Playlist {id} does not exist in {scope} scope.").format(
|
return await self._embed_msg(ctx, str(e))
|
||||||
id=playlist_id, scope=humanize_scope(scope, the=True)
|
if playlist_id is None:
|
||||||
),
|
return await self._embed_msg(
|
||||||
)
|
ctx, _("Could not match '{arg}' to a playlist.").format(arg=playlist_arg)
|
||||||
except MissingGuild:
|
)
|
||||||
return await self._embed_msg(
|
|
||||||
ctx, _("You need to specify the Guild ID for the guild to lookup.")
|
|
||||||
)
|
|
||||||
|
|
||||||
if not await self.can_manage_playlist(scope, playlist, ctx, author, guild):
|
try:
|
||||||
return
|
playlist = await get_playlist(playlist_id, scope, self.bot, guild, author)
|
||||||
|
except RuntimeError:
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx,
|
||||||
|
_("Playlist {id} does not exist in {scope} scope.").format(
|
||||||
|
id=playlist_id, scope=humanize_scope(scope, the=True)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
except MissingGuild:
|
||||||
|
return await self._embed_msg(
|
||||||
|
ctx, _("You need to specify the Guild ID for the guild to lookup.")
|
||||||
|
)
|
||||||
|
|
||||||
track_objects = playlist.tracks_obj
|
if not await self.can_manage_playlist(scope, playlist, ctx, author, guild):
|
||||||
original_count = len(track_objects)
|
return
|
||||||
unique_tracks = set()
|
|
||||||
unique_tracks_add = unique_tracks.add
|
|
||||||
track_objects = [
|
|
||||||
x for x in track_objects if not (x in unique_tracks or unique_tracks_add(x))
|
|
||||||
]
|
|
||||||
|
|
||||||
tracklist = []
|
track_objects = playlist.tracks_obj
|
||||||
for track in track_objects:
|
original_count = len(track_objects)
|
||||||
track_keys = track._info.keys()
|
unique_tracks = set()
|
||||||
track_values = track._info.values()
|
unique_tracks_add = unique_tracks.add
|
||||||
track_id = track.track_identifier
|
track_objects = [
|
||||||
track_info = {}
|
x for x in track_objects if not (x in unique_tracks or unique_tracks_add(x))
|
||||||
for k, v in zip(track_keys, track_values):
|
]
|
||||||
track_info[k] = v
|
|
||||||
keys = ["track", "info"]
|
|
||||||
values = [track_id, track_info]
|
|
||||||
track_obj = {}
|
|
||||||
for key, value in zip(keys, values):
|
|
||||||
track_obj[key] = value
|
|
||||||
tracklist.append(track_obj)
|
|
||||||
|
|
||||||
final_count = len(tracklist)
|
tracklist = []
|
||||||
if original_count - final_count != 0:
|
for track in track_objects:
|
||||||
update = {"tracks": tracklist, "url": None}
|
track_keys = track._info.keys()
|
||||||
await playlist.edit(update)
|
track_values = track._info.values()
|
||||||
|
track_id = track.track_identifier
|
||||||
|
track_info = {}
|
||||||
|
for k, v in zip(track_keys, track_values):
|
||||||
|
track_info[k] = v
|
||||||
|
keys = ["track", "info"]
|
||||||
|
values = [track_id, track_info]
|
||||||
|
track_obj = {}
|
||||||
|
for key, value in zip(keys, values):
|
||||||
|
track_obj[key] = value
|
||||||
|
tracklist.append(track_obj)
|
||||||
|
|
||||||
if original_count - final_count != 0:
|
final_count = len(tracklist)
|
||||||
await self._embed_msg(
|
if original_count - final_count != 0:
|
||||||
ctx,
|
update = {"tracks": tracklist, "url": None}
|
||||||
_(
|
await playlist.edit(update)
|
||||||
"Removed {track_diff} duplicated "
|
|
||||||
"tracks from {name} (`{id}`) [**{scope}**] playlist."
|
if original_count - final_count != 0:
|
||||||
).format(
|
await self._embed_msg(
|
||||||
name=playlist.name,
|
ctx,
|
||||||
id=playlist.id,
|
_(
|
||||||
track_diff=original_count - final_count,
|
"Removed {track_diff} duplicated "
|
||||||
scope=scope_name,
|
"tracks from {name} (`{id}`) [**{scope}**] playlist."
|
||||||
),
|
).format(
|
||||||
)
|
name=playlist.name,
|
||||||
else:
|
id=playlist.id,
|
||||||
await self._embed_msg(
|
track_diff=original_count - final_count,
|
||||||
ctx,
|
scope=scope_name,
|
||||||
_("{name} (`{id}`) [**{scope}**] playlist has no duplicate tracks.").format(
|
),
|
||||||
name=playlist.name, id=playlist.id, scope=scope_name
|
)
|
||||||
),
|
return
|
||||||
)
|
else:
|
||||||
|
await self._embed_msg(
|
||||||
|
ctx,
|
||||||
|
_("{name} (`{id}`) [**{scope}**] playlist has no duplicate tracks.").format(
|
||||||
|
name=playlist.name, id=playlist.id, scope=scope_name
|
||||||
|
),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
@checks.is_owner()
|
@checks.is_owner()
|
||||||
@playlist.command(name="download", usage="<playlist_name_OR_id> [v2=False] [args]")
|
@playlist.command(name="download", usage="<playlist_name_OR_id> [v2=False] [args]")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user