{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_post","url":"https://ejfox.com/blog/week-notes/2023-51","json_url":"https://ejfox.com/blog/week-notes/2023-51.json","generator":"ejfox.com/json-twin@1","data":{"cacheVersion":"2026-05-13-gear-cards","html":"<h2 class=\"\" id=\"overview-of-the-week\">Overview of the Week</h2>\n<h3 class=\"\" id=\"room-302-studio-website-redesign\">Room 302 Studio Website Redesign</h3>\n<p class=\"\">I've been working with Room 302 Studio Member <a href=\"https://www.samvogt.com\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.samvogt.com\">Sam Vogt</a>to rethink the studio website for 2024.</p>\n<h2 class=\"\" id=\"creative-endeavors\">Creative Endeavors</h2>\n<h3 class=\"\" id=\"ai-generated-personal-fanfiction-for-morale\">AI-Generated Personal Fanfiction For Morale</h3>\n<p class=\"\">I got a little distracted and worked with the robot to write some <a href=\"https://elk.zone/mastodon.social/@ejfox/111609270554619799\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://elk.zone/mastodon.social/@ejfox/111609270554619799\">cyberpunk fanfiction</a> based on my life, for morale purposes - before I knew it, I had 16k words, which when converted to audio with ElevenLabs' new <a href=\"https://elevenlabs.io/projects\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://elevenlabs.io/projects\">Projects</a>feature, resulted in a nearly [2-hour audio file](<a href=\"https://res.cloudinary.com/ejf/video/upload/v1703099932/ElevenLabs_2023-12-19T21_41_04_EJ_Cyberpunk_Story.mp3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://res.cloudinary.com/ejf/video/upload/v1703099932/ElevenLabs_2023-12-19T21_41_04_EJ_Cyberpunk_Story.mp3\">https://res.cloudinary.com/ejf/video/upload/v1703099932/ElevenLabs_2023-12-19T21_41_04_EJ_Cyberpunk_Story.mp3<svg class=\"inline-block w-4 h-4 ml-1 opacity-50 dark:opacity-75 group-hover:opacity-100 transition-opacity align-text-bottom\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M24 14.86c0 2.173-1.376 3.974-3.59 4.7l-.1.031V17.99c1.378-.58 2.187-1.727 2.187-3.13a3.684 3.684 0 0 0-3.608-3.669h-.596l-.144-.569a6.5 6.5 0 0 0-6.272-4.97a6.39 6.39 0 0 0-5.81 3.664l-.184.376l-.417.044a4.43 4.43 0 0 0-3.305 2.088a4.43 4.43 0 0 0 1.458 6.095v1.69h-.01l-.149-.068a5.94 5.94 0 0 1-3.366-4.35a5.94 5.94 0 0 1 4.8-6.894a7.88 7.88 0 0 1 6.983-4.15a8.03 8.03 0 0 1 7.59 5.589A5.21 5.21 0 0 1 24 14.86M8.682 13.538h.565a.066.066 0 0 0 .046-.111l-2.209-2.211a.066.066 0 0 0-.093 0l-2.211 2.21a.066.066 0 0 0 .048.112h.556a.066.066 0 0 1 .066.065v5.058c0 .659.534 1.193 1.193 1.193h2.604a.066.066 0 0 0 .046-.112l-.33-.33a1.2 1.2 0 0 1-.348-.839v-4.97a.07.07 0 0 1 .067-.065m9.77 2.546h.566a.066.066 0 0 0 .046-.113l-2.21-2.209l-.002-.001a.064.064 0 0 0-.09.001l-2.211 2.209a.066.066 0 0 0 .046.113h.556a.066.066 0 0 1 .066.066v2.51c0 .66.534 1.193 1.193 1.193h2.606a.066.066 0 0 0 .046-.11l-.33-.33a1.2 1.2 0 0 1-.348-.84V16.15a.066.066 0 0 1 .066-.066m-4.885-1.274h.565a.066.066 0 0 0 .047-.111l-2.21-2.203h-.001a.066.066 0 0 0-.093 0l-2.208 2.207a.066.066 0 0 0 .045.111h.563a.07.07 0 0 1 .066.068v3.779c0 .659.534 1.193 1.192 1.193h2.599a.066.066 0 0 0 .047-.112l-.332-.33a1.2 1.2 0 0 1-.346-.839v-3.695c0-.037.03-.067.066-.068\" class=\"\"></path></svg></a>. The fun-to-effort ratio is out of this world, and I mostly worked as an editor and choose-your-own-adventure player. It's cheesy and dumb, but it made me laugh a few times, and it's as entertaining as any other poorly-written TV show I could be watching.</p>\n<p class=\"\">Every time we hit a decision point, I would ask for 5-10 approaches of how to continue. Sometimes I would choose one, or combinations. I probably only wrote 2 or 3 lines of dialogue myself in the entire thing. I also ended up discarding 2-3 times the content that I ended up using. I also struggled a lot to get ChatGPT to be creative enough for me; most of the best content came from dialing the temperature up to 2, turning half-p down to 0.5 or so, and pasting the entire contents of the story until then (with no chat/assistant dialogue to confuse it).</p>\n<h2 class=\"\" id=\"technical-accomplishments\">Technical Accomplishments</h2>\n<h3 class=\"\" id=\"youtube-watch-later-scraping\">YouTube 'Watch Later' Scraping</h3>\n<p class=\"\">It is annoyingly difficult to pull down your entire Watch Later playlist, which for me, is over 300 videos that are extremely specific to my interests. Unfortunately for me, they are all mashed together in increasingly-inaccessible parts of the YouTube UI, and I want to be able to use them to create my own tools for watching things I have decided are worth watching, rather than doomscrolling.</p>\n<ul class=\"list-disc\">\n<li class=\"\">Step 1: Go to the <a href=\"https://www.youtube.com/playlist?list=WL\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.youtube.com/playlist?list=WL\">Watch Later<svg class=\"inline-block w-4 h-4 ml-1 opacity-50 dark:opacity-75 group-hover:opacity-100 transition-opacity align-text-bottom\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M23.498 6.186a3.02 3.02 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.02 3.02 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.02 3.02 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.02 3.02 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814M9.545 15.568V8.432L15.818 12z\" class=\"\"></path></svg></a> page on YouTube</li>\n<li class=\"\">Step 2: Scroll to the very bottom of the page</li>\n<li class=\"\">Step 3: <code class=\"md-inline-code\">Inspect Element</code> on one of the Watch Later videos, and find the parent DOM element that holds all of them</li>\n<li class=\"\">Step 4: <code class=\"md-inline-code\">Copy as HTML</code> and paste into a new file</li>\n<li class=\"\">Step 5: Add some styles and javascript to hide parts of the page we don't want</li>\n<li class=\"\">Step 6: <code class=\"md-inline-code\">Select All</code> on our newly-trimmed page, and copy into <code class=\"md-inline-code\">watchlater.txt</code></li>\n<li class=\"\">Step 7: Run the text file through <a href=\"https://gist.github.com/ejfox/643e4f5339ae54da1722ad8d5c79e4ab\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://gist.github.com/ejfox/643e4f5339ae54da1722ad8d5c79e4ab\">text-to-csv.js<svg class=\"inline-block w-4 h-4 ml-1 opacity-50 dark:opacity-75 group-hover:opacity-100 transition-opacity align-text-bottom\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\" class=\"\"></path></svg></a> to create a .csv of links</li>\n<li class=\"\">Step 8: Finally, at long last, have my Watch Later playlist as data I can use elsewhere</li>\n</ul>","title":"Overview of the Week","metadata":{"tags":["weekly-notes","reflections","progress","3d","design","coding","webdesign","automation","generative"],"date":"2023-12-20T19:06:08.000Z","modified":"2024-10-14T23:53:31.000Z","dek":"In which the author collaborates on a website redesign, crafts AI-generated cyberpunk fanfiction, and successfully scrapes their YouTube 'Watch Later' playlist for future use.","words":428,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":6,"codeBlocks":0,"headers":{"h2":3},"toc":[{"text":"Overview of the Week","slug":"overview-of-the-week","level":"h2","children":[{"text":"Room 302 Studio Website Redesign","slug":"room-302-studio-website-redesign","level":"h3","children":[]}]},{"text":"Creative Endeavors","slug":"creative-endeavors","level":"h2","children":[{"text":"AI-Generated Personal Fanfiction For Morale","slug":"ai-generated-personal-fanfiction-for-morale","level":"h3","children":[]}]},{"text":"Technical Accomplishments","slug":"technical-accomplishments","level":"h2","children":[{"text":"YouTube 'Watch Later' Scraping","slug":"youtube-watch-later-scraping","level":"h3","children":[]}]}],"type":"post"}},"_links":{"self":"https://ejfox.com/blog/week-notes/2023-51.json","html":"https://ejfox.com/blog/week-notes/2023-51","index":"/blog.json"}}