A browser extension that sets the quality of YouTube videos according to the user's preference, based on the video's FPS. Available for:
- Google Chrome
- Mozilla Firefox
90+
- Microsoft Edge
- Opera
- Safari - maintained by carlosjeurissen
- Naver Whale - maintained by carlosjeurissen
Made by avi12
Powered by Plasmo
Due to the way the browsers handle extensions, when an extension receives an update, content scripts in already-open web pages cannot use the Storage API, until the user reloads those web pages. In the context of this extension, it means that when the extension receives an update, as long as the user doesn't reload YouTube web pages, the extension cannot get the data regarding the user-preferred qualities.
To provide a smooth user experience, I decided to use the last qualities that were fetched.
This solution is not perfect, since if the user wants to update the quality of the videos in the currently-open web pages using the popup page, it will not update dynamically. However, this is the only viable solution, as the alternative would be to auto-reload web pages, which would result in a bad user experience.
You can translate the extension to your own language by filling this form. Filling will grant you access to a Google Sheets spreadsheet via email, in which you can contribute your translations.
pnpm i
pnpm dev
pnpm build:firefox
pnpm run-chromium
pnpm run-chromium:rtl
pnpm run-edge:windows
As of Sep 30th, 2023, Opera 102's installer automatically sets itself as the default browser, and therefore I recommend installing it on a virtual machine like Windows Sandbox. Of course, if you decide to go through the virtual machine route, you'll need to build & pack every time you modify a script.
pnpm run-opera:windows
pnpm run-firefox
- Install Android Studio on your operating system
- Create an AVD (Android Virtual Device)
- For a phone emulator, choose one that has Play Store preinstalled
- For a tablet emulator, follow these steps after creating it to have Play Store preinstalled
- Run the emulator:
emulator @DEVICE_NAME
- I recommend creating a Google account specifically to be used with the emulator
- Download Kiwi Browser
- First get the emulator ID:
Then: - On Windows 10/11, you can run:
adb devices
set id=ID & pnpm build-pack:test-push
- Otherwise, if you're using PowerShell, run:
```shell
pnpm build-pack:test; `
$zip = "chrome-mv3-prod.zip"; `
$destAndroid = "/storage/emulated/0/Download/$zip"; `
$ID = "emulator-####"; `
adb -s $ID shell rm $destAndroid; `
adb -s $ID push "build/$zip" $destAndroid;
```
where you assign `$ID` with the emulator ID
-
Select the ZIP in the Downloads folder
-
To reload, you must first remove the extension and then repeat steps ii-iv
-
To debug, enter
chrome:https://inspect/#devices
-
Download Firefox
-
In the terminal:
adb shell pm grant org.mozilla.firefox android.permission.READ_EXTERNAL_STORAGE
-
In the app: 1. Press ⋮ (menu button) → Settings → Enable "Remote debugging via USB" 2. Get the emulator ID via
adb devices
-
Create 2 terminals - In the first one, run
dev:firefox
- In the second one, runpnpm run-firefox:android --android-device=ID
where you replace
ID
with the emulator ID -
To reload:
1. Modify a script
2. Wait until the extension is re-added
3. Reload the web page
Notice that due
to [web-ext run](https://extensionworkshop.com/documentation/develop/web-ext-command-reference/#web-ext-run)
using the same files that Plasmo uses to convert the development files into extension-usable script files,
Plasmo might crash and so you'll have to restart it every time that you modify a script
- To debug:
1. Open Firefox on your desktop
2. In the terminal of
run-firefox:android
, find the remote Firefox debugger port (search "TCP port") 3. Openabout:debugging#/setup
in Firefox 4. Type in the text box:localhost:PORT
5. In the left sidebar, next tolocalhost:PORT
, click Connect and then click on that list item 6. Under "Tabs" click Inspect
- Chromium-based browsers
- Run
dev
- Open the extensions page
- Enable "Developer mode"
- Open
youtube-auto-hd/build
on your file system - Drag-drop
chrome-mv3-dev
onto the extensions page
- Run
- Firefox for desktop:
- Run
dev:firefox
- Follow this guide
- In the file system window, select
youtube-auto-hd/build/firefox-mv2-dev/manifest.json
- Run
pnpm build-pack
pnpm build-pack:firefox
Feel free to contribute! Keep in mind that the license I chose is GPL v3. If you want to fork, make sure to credit avi12 and link to this repository.