コード例 #1
0
ファイル: playlists.py プロジェクト: PredaaA/drapercogs
    async def _maybe_update_playlist(
        self, ctx: commands.Context, player: lavalink.player_manager.Player,
        playlist: Playlist
    ) -> Tuple[List[lavalink.Track], List[lavalink.Track], Playlist]:
        if playlist.url is None:
            return [], [], playlist
        results = {}
        updated_tracks = await self.fetch_playlist_tracks(
            ctx,
            player,
            Query.process_input(playlist.url, self.local_folder_current_path),
            skip_cache=True,
        )
        if isinstance(updated_tracks, discord.Message):
            return [], [], playlist
        if not updated_tracks:
            # No Tracks available on url Lets set it to none to avoid repeated calls here
            results["url"] = None
        if updated_tracks:  # Tracks have been updated
            results["tracks"] = updated_tracks

        old_tracks = playlist.tracks_obj
        new_tracks = [lavalink.Track(data=track) for track in updated_tracks]
        removed = list(set(old_tracks) - set(new_tracks))
        added = list(set(new_tracks) - set(old_tracks))
        if removed or added:
            await playlist.edit(results)

        return added, removed, playlist
コード例 #2
0
 def __init__(
     self,
     bot: Red,
     playlist_api: PlaylistWrapper,
     scope: str,
     author: int,
     playlist_id: int,
     name: str,
     playlist_url: Optional[str] = None,
     tracks: Optional[List[MutableMapping]] = None,
     guild: Union[discord.Guild, int, None] = None,
 ):
     self.bot = bot
     self.guild = guild
     self.scope = standardize_scope(scope)
     self.config_scope = prepare_config_scope(self.bot, self.scope, author,
                                              guild)
     self.scope_id = self.config_scope[-1]
     self.author = author
     self.author_id = getattr(self.author, "id", self.author)
     self.guild_id = (getattr(guild, "id", guild)
                      if self.scope == PlaylistScope.GLOBAL.value else None)
     self.id = playlist_id
     self.name = name
     self.url = playlist_url
     self.tracks = tracks or []
     self.tracks_obj = [lavalink.Track(data=track) for track in self.tracks]
     self.playlist_api = playlist_api
コード例 #3
0
ファイル: api_utils.py プロジェクト: tombuizer/audio-beta-v2
 def __post_init__(self):
     if isinstance(self.track, str):
         self.track = json.loads(self.track)
     if self.track:
         self.track_object = lavalink.Track(self.track)