"Not for consumption?" Don't you tell me what to do, I'll eat what I want!
I wrote myself a Chrome add-on that adds a context menu entry to play or download links.
background.js
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "processLink",
title: "Download as...",
contexts: ["link"]
});
chrome.contextMenus.create({
id: "720p",
parentId: "processLink",
title: "720p",
contexts: ["link"]
});
chrome.contextMenus.create({
id: "music",
parentId: "processLink",
title: "MP3",
contexts: ["link"]
});
chrome.contextMenus.create({
id: "maxQual",
parentId: "processLink",
title: "Maximum quality video",
contexts: ["link"]
});
chrome.contextMenus.create({
id: "separator1",
parentId: "processLink",
type: "separator",
contexts: ["link"]
});
chrome.contextMenus.create({
id: "piQual",
parentId: "processLink",
title: "30 fps for RPi",
contexts: ["link"]
});
chrome.contextMenus.create({
id: "separator2",
parentId: "processLink",
type: "separator",
contexts: ["link"]
});
chrome.contextMenus.create({
id: "streamLink",
parentId: "processLink",
title: "Stream to VLC...",
contexts: ["link"]
});
});
chrome.contextMenus.onClicked.addListener((info, tab) => {
let linkUrl = info.linkUrl;
if (info.menuItemId === "720p") {
sendLinkToNativeApp(linkUrl, "video720");
} else if (info.menuItemId === "music") {
sendLinkToNativeApp(linkUrl, "music");
} else if (info.menuItemId === "maxQual") {
sendLinkToNativeApp(linkUrl, "videomp4");
} else if (info.menuItemId === "piQual") {
sendLinkToNativeApp(linkUrl, "video720p30");
} else if (info.menuItemId === "streamLink") {
sendLinkToNativeApp(linkUrl, "stream");
}
});
function sendLinkToNativeApp(link, action) {
console.log("Sending link to native app with action:", action, link);
chrome.runtime.sendNativeMessage(
'com.example.ytlink_processor',
{ link: link, action: action },
function(response) {
if (chrome.runtime.lastError) {
console.error("Error:", chrome.runtime.lastError.message);
} else {
console.log("Received response from native app:", response.output);
}
}
);
}
native_host.py (chatGPT wrote this because I can't Python)
import sys
import subprocess
import json
import struct
def log_to_file(message):
with open("log.txt", "a") as log_file:
log_file.write(message + "\n")
def get_message():
raw_length = sys.stdin.read(4)
if len(raw_length) == 0:
sys.exit(0)
message_length = struct.unpack('I', raw_length)[0]
message = sys.stdin.read(message_length)
return json.loads(message)
def send_message(message_content):
message = json.dumps(message_content)
sys.stdout.write(struct.pack('I', len(message)))
sys.stdout.write(message)
sys.stdout.flush()
def process_link(link, action):
if action == "stream":
cmd = 'yt-dlp --stream "{}" -o - | "D:/Programme/VLC/vlc.exe" -'.format(link)
else:
cmd = 'yt-dlp --{} "{}"'.format(action, link)
result = subprocess.Popen('start cmd /c "{}"'.format(cmd), shell=True)
return result.stdout + result.stderr
if __name__ == "__main__":
message = get_message()
link = message.get("link")
action = message.get("action")
if link and action:
output = process_link(link, action)
send_message({"output": output})
The actions are just aliases for different qualities (old pi, so 720p60 stutters at times), audio extraction, etc.
Awesome, works with VLC as well. Thanks.
TAA, motion blur, depth of field. Why do "technologies" to turn a good looking game into a trash looking game even exist?
That is not a horn. Purple correctly identified it as a trumpet.
Yeah, on all platforms I've been to I've seen nothing but bitter jokes and snarky comments about the situation. Imagine being such a massive shitbag that nobody gives a damn when you are literally murdered in public and in broad daylight.
If your legacy is feeding off people's misfortune and suffering then I'd say this outcome is part of the risk you took. What goes around, comes around. I don't expect the leeches to learn from that tho.
Mammals use boob-juice to raise their offspring. That's why they are called that.
As opposed to e.g. birds that don't use boob-juice and instead elect to vomit in their offspring's ingestion orifices.
US politics are so wild that it's really hard for me to distingish satire from reality.
Is there any hope for me?
Yes, public transport.
New Year's is my favorite holiday. Just gonna chill with a friend with beer, crackers and some chess/video games. My Christmas present from my dad was to go buy some fireworks with him, so I got a bunch of stuff to do at midnight.
Way better than Christmas or Easter or other baloney festivities. New Year's is at least somewhat tangible even tho I do concede, it makes no difference.