avi12 / youtube-auto-hd

A simple browser extension for changing YouTube videos' quality based on FPS.
https://avi12.com/youtube-auto-hd
GNU General Public License v3.0
235 stars 28 forks source link

[Bug] Does not work consistently. Might be related to playlists. #11

Closed martixy closed 3 years ago

martixy commented 3 years ago

Describe the bug Does not switch quality consistently.

To Reproduce I'm not sure how to reproduce. I think it might be related to playing in playlists. Specifically when switching videos in playlists.

Expected behavior I have it set to 4K, frequently ends up only 720p or 360p.

Screenshots N/A?

Details: Google Chrome 90.0.4430.93 (Official Build) (64-bit) (cohort: Stable) OS Windows 10 OS Version 2004 (Build 19041.928) Extension Version 1.3.9

Additional context Am developer, tell me how I can help debug this and I will.

avi12 commented 3 years ago

Can you link me to such a playlist?

martixy commented 3 years ago

https://www.youtube.com/playlist?list=PL_BfYto4ldHV1IPfcViRIy-x8WgyQ0_Co

(My playlist for random music I come upon.)

avi12 commented 3 years ago

From what I understand, you set the "master" quality to be 4K Sadly, I cannot reproduce it If you want to attempt to reproduce, build the repo locally, load into Chrome (either using pnpm run-chromium or load into your Chrome) and then start debugging from somewhere The file that ends with functions.js contains the functions that are responsible for the actual quality change, whereas the initialization.js file is the file that is listed in the manifest.json, A.K.A its functions will execute first It's responsible for executing prepareToChangeQuality() when the video is ready

martixy commented 3 years ago

I tried to tackle this bug. Many problems arise.

pnpm run-chromium is unusable, because it starts a clean instance of chrome without adblock and youtube ads make it impossible to do anything.

Building throws the following rollup error:
Error: UMD and IIFE output formats are not supported for code-splitting builds.

But fine, lets say we change

    output: {
      format: "iife",
      file: `dist/build/${filename}.js`
    },

to

    output: {
      format: "es",
      dir: `dist/build/`
    },

Loading unpacked gets you a ton of manifest errors.

Anyway, PR incoming. Fixes this and a couple other bugs, but does not touch the build process.

martixy commented 3 years ago

Yea, understandable. Just makes for a terrible debugging experience. Went with the side-load variant.

My life is so devoid of ads, getting surprised by one as I'm trying to do work is such a jarring experience. :D

avi12 commented 3 years ago

I just read the last part and deleted the comment because I realized it's irrelevant

avi12 commented 3 years ago

Yea, understandable. Just makes for a terrible debugging experience. Went with the side-load variant.

My life is so devoid of ads, getting surprised by one as I'm trying to do work is such a jarring experience. :D

It's not every day that you get to contribute to a browser extension made for YouTube, which is full of ads ;)