-
-
Save wongcyrus/aff2eed5f7ef7db6418b0c3fc621e3a1 to your computer and use it in GitHub Desktop.
Export YouTube playlist to CSV with Google Chrome Developer Console. Open the playlist page, run this script to export playlist to CSV with title, url, and video length.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var ytp = document.querySelectorAll("ytd-playlist-video-list-renderer > #contents > ytd-playlist-video-renderer"); | |
| var time = 0; | |
| function convertS(sec) { | |
| var hrs = Math.floor(sec / 3600); | |
| var min = Math.floor((sec - (hrs * 3600)) / 60); | |
| var seconds = sec - (hrs * 3600) - (min * 60); | |
| seconds = Math.round(seconds * 100) / 100 | |
| var result = (hrs < 10 ? "0" + hrs : hrs) + ':'; | |
| result += (min < 10 ? "0" + min : min) + ":"; | |
| result += (seconds < 10 ? "0" + seconds : seconds); | |
| return result; | |
| } | |
| var videos = []; | |
| for (var i = 0; i < ytp.length; i++) { | |
| var a = ytp[i].getElementsByTagName('ytd-thumbnail-overlay-time-status-renderer')[0].innerText; | |
| var tx = a.split(':'); | |
| var title = ytp[i].getElementsByTagName("a")[1].title; | |
| var url = ytp[i].getElementsByTagName("a")[1].href; | |
| if(url.includes("&t=")) | |
| url = url.split("&t=")[0]; | |
| if (tx.length < 3) { | |
| videoLength = Number(tx[0]) * 60 + Number(tx[1]); | |
| time = time + Number(tx[0]) * 60 + Number(tx[1]); | |
| } else if (tx.length = 3) { | |
| time = time + Number(tx[0]) * 60 * 60 + Number(tx[1]) * 60 + Number(tx[2]); | |
| videoLength = Number(tx[0]) * 60 * 60 + Number(tx[1]) * 60 + Number(tx[2]); | |
| } | |
| videos.push({ title, videoLength: convertS(videoLength), seconds: videoLength, url }); | |
| } | |
| function download_csv_file() { | |
| //define the heading for each row of the data | |
| var csv = 'Title,Url,Length,Seconds\n'; | |
| //merge the data with CSV | |
| videos.forEach(function (row) { | |
| csv += "\""+row.title + "\"," + row.url + "," + row.videoLength + "," + row.seconds; | |
| csv += "\n"; | |
| }); | |
| //display the created CSV data on the web browser | |
| document.write(csv); | |
| var hiddenElement = document.createElement('a'); | |
| hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv); | |
| hiddenElement.target = '_blank'; | |
| //provide the name for the CSV file to be downloaded | |
| hiddenElement.download = 'YoutubePlayList.csv'; | |
| hiddenElement.click(); | |
| } | |
| var ytpT = convertS(time) | |
| var show = 'YouTube Playlist \n --------------- \n Total Videos : ' + ytp.length + '\n Total Duration : ' + ytpT + '\n Avg. Duration : ' + convertS(time / ytp.length); | |
| // alert(show); | |
| // console.log(videos); | |
| download_csv_file(); |
Hello. This is excellent! Is it possible to also to add the Channel Name in the export? Thank you!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello,
from your original script is it possible to upgrade it to export all details playlists from a youtube channel in one file ? by adding a column for the playliist name and export all details for each playlis from one channel.
It could be great! thanks for your help.