setInterval(function () {
video = document.getElementsByTagName('ytd-playlist-video-renderer')[0];
video.querySelector('#primary button[aria-label="Action menu"]').click();
var things = document.evaluate(
'//span[contains(text(),"Remove from")]',
document,
null,
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
{ | |
description = "Example nix-darwin system flake"; | |
inputs = { | |
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; | |
nix-darwin.url = "github:LnL7/nix-darwin/master"; | |
nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; | |
mac-app-util.url = "github:hraban/mac-app-util"; | |
nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew"; | |
# Optional: Declarative tap management |
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
// Usage Instructions | |
// Note: YouTube often updates it's DOM structure, so you may need to udpate the DOM query selectors. | |
// 1. Open the Manage Subscriptions page: https://www.youtube.com/feed/channels. | |
// 2. Open the browser's developer tools (Ctrl+Shift+I or Cmd+Option+I on Mac) and navigate to the Console tab. | |
// 3. Paste the script and press Enter. | |
// 4. Let the script run until it completes. | |
(async () => { | |
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); |