←back to thread

128 points darajava | 10 comments | | HN request time: 0.907s | source | bottom

Hi HN! I built this little extension to prevent, in my opinion, the most offensive anti-pattern used by tech companies. That is removing the seek bar in short-form videos.

The "seek bar" is the bar at the bottom of a video that progresses as you play the video, and that you can click on or drag to skip around. Why companies ever thought it was a good idea to get rid of this I don't know, but I find it infuriating, so I decided to add it back for myself and thought others might like it too.

ReelControl adds a progress bar and seeking capabilities to videos on Instagram, YouTube Shorts, and Facebook Reels.

I do sometimes enjoy watching short-form content and I've found that with this extension enabled I can be more mindful about it and get sucked in way less. I'm also on my phone less because I tend to favor the web versions of these platforms now.

Open source--PRs and issues welcome! https://github.com/darajava/seek-anywhere/

1. varenc ◴[] No.43561092[source]
I have a simple bookmarklet does does something similar:

    javascript:(function(){document.querySelectorAll("video").forEach(((e,o)=>{console.log(`VideoFixer: Processing <video> #${o+1}:`,e),e.style.position="relative",e.style.zIndex="999999",e.controls=!0,e.style.pointerEvents="auto";const t=[],i=[];["disablePictureInPicture","disableRemotePlayback"].forEach((o=>{e.hasAttribute(o)&&(t.push(o),e.removeAttribute(o))})),e.hasAttribute("controlsList")&&(i.push(...e.getAttribute("controlsList").split(/\\s+/)),e.removeAttribute("controlsList")),t.length&&console.log(`VideoFixer: Removed attributes: ${t.join(", ")}`),i.length&&console.log(`VideoFixer: Removed controlsList restrictions: ${i.join(", ")}`),t.length||i.length||console.log("VideoFixer: No restrictions found to remove.")})),console.log("VideoFixer: All videos processed.");}());

It just re-enables all controls on all <video> elements and uses z-indexing to push them to the top. Works on instagram but needs to be re-ran for new video elements.
replies(3): >>43561925 #>>43566000 #>>43576676 #
2. darajava ◴[] No.43561925[source]
Ah that's a good idea! Similar effect to this but I guess packaging it in a chrome extension lends itself to "set it and forget it". I also have some customization options.
replies(2): >>43562329 #>>43564825 #
3. xeromal ◴[] No.43562329[source]
I've tried to send bookmarklets to my family and they never "get" them. An extension like this is perfect. Thanks for your work!
4. rendaw ◴[] No.43564825[source]
It's also a security risk though, as in someone could take it over and push a bad update at any time... I have a few extensions installed but I'm terrified of adding more, even though there are parts of my browsing experience that could be significantly improved.

I really wish there were a middle ground, like an external extension manager where you could opt into updates, with reproducible builds, changelogs, etc.

replies(2): >>43568385 #>>43576770 #
5. coldtrait ◴[] No.43566000[source]
This is great. I just asked ChatGPT to convert it into a script that I could use with Violentmonkey.
replies(1): >>43576398 #
6. darajava ◴[] No.43568385{3}[source]
You could add it from source which is pretty easy to do but you lose chrome’s syncing feature.

Having said that I haven’t developed a chrome extension in years. They are so strict now. I know they can’t manually inspect each line but I do hope it helps solve the problem of extensions going rogue.

7. varenc ◴[] No.43576398[source]
Nice! I still use Greasemonkey and love it.

Relatedly, I have a greasemonkey script[1] that makes Snapchat on web much more usable. I just updated it to include this video fixer logic so now it's easy to scrobble videos and download them.

It uses the MutationObserver API to immediately 'fix' any <video> element added to the page. Really I should just copy you and make a version of it that just does the video fixing but runs on every site. It's crazy how browsers have a nice built in pro-user video element, but that every site intentionally overrides and degrades it...

edit: I went ahead and turned this into a greasemonkey script as well: https://greasyfork.org/en/scripts/531780-universal-video-fix...

[1] https://greasyfork.org/en/scripts/468156-unbreak-snapchat-we...

replies(1): >>43580425 #
8. varenc ◴[] No.43576676[source]
I turned this into a greasemonkey script: https://greasyfork.org/en/scripts/531780-universal-video-fix...

That can be configured to run automatically on every site, and it uses the MutationObserver API to automatically fix any newly added/modified <video> elements on the page. Seems to work on Snapchat and Instagram so far, but breaks some functionality. Op's chrome extension, with bespoke support for Instagram, likely offers a much better experience. This is just more universal.

9. varenc ◴[] No.43576770{3}[source]
My mitigation for this: Any extension that I grant serious permissions, I copy it locally, and then install that copy. This effectively disables all updates! Still requires I trust the extension as is, but doesn't require I trust the extension developers forever. And I use this [1] extension to easily download the source for any other extension.

[1] https://chromewebstore.google.com/detail/chrome-extension-so...

10. coldtrait ◴[] No.43580425{3}[source]
That's great. The one site I definitely need it on is instagram whenever I happen to open a reel on web. And I'd like it on reddit because its video player sucks, but it just adds it on top of it so I have now ended up disabling it everywhere else.