From f33297382e9b82924f2124cded6b6aabbd50d750 Mon Sep 17 00:00:00 2001 From: Maks Snegov Date: Fri, 2 Feb 2024 17:56:36 -0800 Subject: [PATCH] Clean duplicates from playlist --- main.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/main.py b/main.py index 32939fd..db9bd24 100755 --- a/main.py +++ b/main.py @@ -221,6 +221,11 @@ def main(): parser_move.add_argument('-l', '--limit', type=int, default=-1, help='Limit number of videos to process') + parser_dups = subparsers.add_parser('dups', help='Remove duplicate videos in a playlist') + parser_dups.add_argument('playlist', help='Playlist name/ID') + parser_dups.add_argument('-l', '--limit', type=int, default=-1, + help='Limit number of videos to process') + args = parser.parse_args() # Disable OAuthlib's HTTPS verification when running locally. @@ -262,6 +267,17 @@ def main(): continue add_video_to_playlist(youtube, video, playlist, args.dry_run) + elif args.command == 'dups': + playlist = get_playlist_id(args.playlist) + videos = list_playlist(youtube, playlist) + video_map = {} + for video in videos[:args.limit]: + video_id = video['snippet']['resourceId']['videoId'] + if video_id in video_map: + remove_video_from_playlist(youtube, video, playlist, args.dry_run) + else: + video_map[video_id] = video + if __name__ == '__main__': sys.exit(main())