def UpdateLikeSongsSorted(databaseConnectionString: str):
    ytmusic = YTMusic("headers_auth.json")
    mongoClient = MongoClient(databaseConnectionString)
    db = mongoClient['scrobble']
    playlistId = "PLJpUfuX6t6dScH3Ua2f2EsmRC4PolZp8I"
    likedSongs = db['scrobbleCount'].find(
        {
            "likeStatus": 1,
            "ytmusicPlayable": {
                "$ne": False
            }
        },
        sort=[("time", 1)],
        limit=100)
    videoIds = [song['ytmusicId'] for song in likedSongs]
    ClearPlaylist(ytmusic=ytmusic, playlistId=playlistId)
    results = [
        AddToPlaylist(ytmusic=ytmusic, playlistId=playlistId, videoId=videoId)
        for videoId in videoIds
    ]
    if results:
        nowFormatted = datetime.now().strftime("%Y-%m-%d at %H:%M")
        ytmusic.edit_playlist(playlistId=playlistId,
                              description=f"Updated on {nowFormatted}")
    return
示例#2
0
def UpdatePlaylist(ytmusic: YTMusic,
                   playlistId: str,
                   videoResults,
                   description=str,
                   excludeDisliked=bool,
                   clearPlaylist=bool):
    try:
        currentSongCount = ytmusic.get_playlist(playlistId,
                                                limit=1)["trackCount"]
    except Exception as e:
        return e

    if currentSongCount > 0 and clearPlaylist:
        currentPlaylist = ytmusic.get_playlist(playlistId,
                                               limit=currentSongCount)
        ytmusic.remove_playlist_items(playlistId, currentPlaylist['tracks'])

    addedVideos = False
    for videoId in videoResults['videoIds']:
        status = ytmusic.add_playlist_items(playlistId, videoIds=[videoId])
        if status['status'] == "STATUS_SUCCEEDED":
            addedVideos = True
        else:
            print(status)

    if addedVideos:
        if description is None:
            nowFormatted = datetime.now().strftime("%Y-%m-%d at %H:%M")
            description = (
                f"Last updated {nowFormatted}.\nStation played "
                f"{videoResults['searchCount']} songs.\n"
                f"{videoResults['uniqueCount']} songs were unique.\n"
                f"YTMusic match {videoResults['matchedCount']} songs.")
            if excludeDisliked:
                description = (
                    f"{description}\n\nNote: Songs I've marked as "
                    f"\"dislike\" were not included in the playlist.")
        ytmusic.edit_playlist(playlistId, description=description)
        return True
    else:
        print("There was an error adding songs to the playlist.")
        return False
示例#3
0
def YesterdayPlaylistsDescription(ytmusic: YTMusic, playlistId: str,
                                  searchCount: int, uniqueCount: int,
                                  matchedCount: int) -> str:
    nowFormatted = datetime.now().strftime("%Y-%m-%d at %H:%M")
    description = (f"Last updated {nowFormatted}.\nStation played "
                   f"{searchCount} songs.\n"
                   f"{uniqueCount} songs were unique.\n"
                   f"YTMusic match {matchedCount} songs."
                   f"\n\nNote: Songs I've marked as "
                   f"\"dislike\" were not included in the playlist.")
    return ytmusic.edit_playlist(playlistId, description=description)