mirror of
				https://github.com/TeamPiped/Piped.git
				synced 2025-11-03 22:21:55 +00:00 
			
		
		
		
	Add import from YouTube CSV
This commit is contained in:
		
							
								
								
									
										1
									
								
								public/efy
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								public/efy
									
									
									
									
									
										Submodule
									
								
							 Submodule public/efy added at 51f030d755
									
								
							@@ -160,21 +160,37 @@ export default {
 | 
			
		||||
        async importPlaylists() {
 | 
			
		||||
            const file = this.$refs.fileSelector.files[0];
 | 
			
		||||
            let text = await file.text();
 | 
			
		||||
            let playlists = JSON.parse(text).playlists;
 | 
			
		||||
            if (!playlists.length) {
 | 
			
		||||
            let tasks = [];
 | 
			
		||||
            // list of playlists exported from Piped
 | 
			
		||||
            if (text.includes("playlists")) {
 | 
			
		||||
                let playlists = JSON.parse(text).playlists;
 | 
			
		||||
                if (!playlists.length) {
 | 
			
		||||
                    alert(this.$t("actions.no_valid_playlists"));
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                for (var i = 0; i < playlists.length; i++) {
 | 
			
		||||
                    tasks.push(this.createPlaylistWithVideos(playlists[i]));
 | 
			
		||||
                }
 | 
			
		||||
                // CSV from Google Takeout
 | 
			
		||||
            } else if (file.name.slice(-4).toLowerCase() == ".csv") {
 | 
			
		||||
                const lines = text.split("\n");
 | 
			
		||||
                const playlist = {
 | 
			
		||||
                    name: lines[1].split(",")[4],
 | 
			
		||||
                    videos: lines
 | 
			
		||||
                        .slice(4, lines.length)
 | 
			
		||||
                        .filter(line => line != "")
 | 
			
		||||
                        .map(line => `https://youtube.com/watch?v=${line.split(",")[0]}`),
 | 
			
		||||
                };
 | 
			
		||||
                tasks.push(this.createPlaylistWithVideos(playlist));
 | 
			
		||||
            } else {
 | 
			
		||||
                alert(this.$t("actions.no_valid_playlists"));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            let tasks = [];
 | 
			
		||||
            for (var i = 0; i < playlists.length; i++) {
 | 
			
		||||
                tasks.push(this.createPlaylistWithVideos(playlists[i]));
 | 
			
		||||
            }
 | 
			
		||||
            await Promise.all(tasks);
 | 
			
		||||
            window.location.reload();
 | 
			
		||||
        },
 | 
			
		||||
        async createPlaylistWithVideos(playlist) {
 | 
			
		||||
            let newPlaylist = await this.createPlaylist(playlist.name);
 | 
			
		||||
            console.log(newPlaylist);
 | 
			
		||||
            let videoIds = playlist.videos.map(url => url.substr(-11));
 | 
			
		||||
            await this.addVideosToPlaylist(newPlaylist.playlistId, videoIds);
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user