Software Engineering :: Web :: Browser :: Extension :: Development :: Course Contents :: YouTube Playlist
⪼ Made with 💜 by Polyglot.
document.querySelector('ytd-playlist-header-renderer #owner-text > a').innerText
document.querySelector('ytd-playlist-header-renderer #owner-text > a').href
document.querySelector('ytd-playlist-header-renderer #text').innerText
document.querySelectorAll('#contents > ytd-playlist-video-renderer #video-title').forEach((node) => console.log(node.innerText))
document.querySelectorAll('#contents > ytd-playlist-video-renderer #video-title').forEach((node) => console.log(node.href))
// Markdown Utilities
let markdownLink = (linkName, linkUrl) => `[${linkName}](${linkUrl})`;
let markdownRefLink = (linkName, linkUrl) => `[${linkName}]: ${linkUrl}`;
let markdownRef = (refName) => `[${refName}]`;
let markdownCheckboxItem = (todo) => `- [ ] ${todo}`;
// Create Author Section
const PLAYLIST_AUTHOR_QUERY_SELECTOR = 'ytd-playlist-header-renderer #owner-text > a';
let playlistAuthorName = () => document.querySelector(PLAYLIST_AUTHOR_QUERY_SELECTOR).innerText;
let playlistAuthorUrl = () => document.querySelector(PLAYLIST_AUTHOR_QUERY_SELECTOR).href;
let playlistAuthorMarkdownHeader = () => '## Author';
let playlistAuthorMarkdownCheckboxItem = () => markdownCheckboxItem(markdownRef(playlistAuthorName()));
// Create Playlist Section
let playlistTitle = () => document.querySelector('ytd-playlist-header-renderer #text').innerText;
let playlistUrl = () => window.location.href;
let playlistMarkdownTitleHeader = (playlistTitle) => `## [${playlistTitle}]`;
// Create Markdown Lines
let markdownLines = () => [playlistAuthorMarkdownHeader()].concat([playlistAuthorMarkdownCheckboxItem()]).concat([""]).concat([playlistMarkdownTitleHeader(playlistTitle())]).concat(Array.from(document.querySelectorAll('#contents > ytd-playlist-video-renderer #video-title')).map((node) => markdownCheckboxItem(markdownRef(node.innerText)))).concat([""]).concat(["---"]).concat(markdownRefLink(playlistTitle(), playlistUrl())).concat(Array.from(document.querySelectorAll('#contents > ytd-playlist-video-renderer #video-title')).map((node) => markdownRefLink(node.innerText, node.href))).concat([markdownRefLink(playlistAuthorName(), playlistAuthorUrl())]);
// Render Markdown
console.log(markdownLines().join("\n"))