|
var saving_playlist = window.location.href.includes('/playlist?list=') |
|
|
|
var all_contents = |
|
saving_playlist ? |
|
document.querySelectorAll('div#contents > ytd-playlist-video-renderer > div#content > div#container > div#meta') |
|
: |
|
document.querySelectorAll("#content > yt-lockup-view-model > div > div > yt-lockup-metadata-view-model > div.yt-lockup-metadata-view-model-wiz__text-container") |
|
|
|
var format = '.txt' |
|
|
|
async function get_title(item) { |
|
return item.querySelector('h3 > a').innerText |
|
} |
|
|
|
async function get_link(item) { |
|
if (!saving_playlist) { |
|
return item.querySelector('div > yt-content-metadata-view-model > div:last-child > span > span > a').href |
|
} else { |
|
return item.querySelector('h3 > a').href |
|
} |
|
} |
|
|
|
async function get_channel_name(item) { |
|
if (!saving_playlist) { |
|
return item.querySelector('div > yt-content-metadata-view-model > div:nth-of-type(1) > span').innerText |
|
} else { |
|
return item.querySelector('ytd-video-meta-block > div#metadata > div#byline-container > ytd-channel-name').innerText |
|
} |
|
} |
|
|
|
async function get_channel_link(item) { |
|
if (!saving_playlist) { |
|
return item.querySelector('div > yt-content-metadata-view-model > div:nth-of-type(1) > span > span > a').href |
|
} else { |
|
return item.querySelector('ytd-video-meta-block > div#metadata > div#byline-container > ytd-channel-name > div#container > div#text-container > yt-formatted-string > a').href |
|
} |
|
} |
|
|
|
async function get_data(item) { |
|
var data = { |
|
title: await get_title(item), |
|
channel_name: await get_channel_name(item), |
|
channel_link: await get_channel_link(item), |
|
link: await get_link(item) |
|
} |
|
return data |
|
} |
|
|
|
async function concatenate(data, format) { |
|
if (format == '.csv') { |
|
return `"${data.title}","${data.channel_name}","${data.channel_link}","${data.link}"\n` |
|
} |
|
|
|
return `${data.title} | -> ${data.channel_name} | -> ${data.channel_link}\n${data.link}\n\n` |
|
} |
|
|
|
async function put_things_together(format) { |
|
var list = (format == '.csv') ? `"Title","Channel Name","Channel Link","Link"\n` : '' |
|
var data = '' |
|
for (var i = 0; i < all_contents.length; i++) { |
|
data = await get_data(all_contents[i]) |
|
list += await concatenate(data, format) |
|
} |
|
return list |
|
} |
|
|
|
var list = await put_things_together(format) |
|
|
|
function download(filename, text) { |
|
var blob = new Blob([text], { type: 'text/plain' }) |
|
var url = URL.createObjectURL(blob) |
|
|
|
var link = document.createElement('a') |
|
link.href = url |
|
link.download = filename |
|
link.click() |
|
|
|
URL.revokeObjectURL(url) |
|
} |
|
|
|
download('my_youtube_saved_playlists' + format, list) |