An open API service indexing awesome lists of open source software.

https://github.com/rational-kunal/netflix-hotkeys

A Chrome extension to enhance your Netflix binging experience!
https://github.com/rational-kunal/netflix-hotkeys

chrome-extension crawler netflix

Last synced: 4 months ago
JSON representation

A Chrome extension to enhance your Netflix binging experience!

Awesome Lists containing this project

README

          








# Netflix Hotkeys

Introducing a Chrome extension that makes watching Netflix even better!

Why did I create this extension? It's simple. Whenever I opened Netflix on Chrome, I got tired of logging into my profile over and over again. That's when I had an idea: why not create an extension that adds cool features to enhance your Netflix binge-watching on Chrome?

## Supported features

Enjoy these handy hotkeys to enhance your Netflix experience:

- 👤 Auto profile log-in
- ⏩ A and D to control playback speed
- 🎬 Auto skip intros, recaps, and end credits
- 💬 C to toggle subtitles
- 🔊 V to toggle audio
- 📺 N for the next episode
- 🔄 R to restart an episode

## How to install

1. Clone the repository:
```shell
$ git clone https://github.com/rational-kunal/Netflix-Hotkeys.git
```
1. Run the following commands to build the extension:
```shell
$ cd netflix-hotkeys
$ npm install
$ npm run build
```
1. Open `chrome://extensions/` and turn on `Developer mode`.
1. Click on `Load unpacked` and select the `build` folder.

## Development

_(For the curious minds and my future reference)_

### How it works

The extension consists of a Controller and a UI. The Controller listens to user events and triggers hotkeys, while the UI enables/disables hotkey features.

### Major Components and Responsibilities

The extension is implemented with consists of several components, some of the major components with their roles:

- [`Storage`](https://github.com/rational-kunal/Netflix-Hotkeys/blob/main/src/core/Storage/Storage.js): Provides a simple API to the extending class for storing and retrieving data.
- [`Preferences`](https://github.com/rational-kunal/Netflix-Hotkeys/blob/main/src/core/Preferences/Preferences.js) (extends `Storage`): Manages user preferences.
- [`usePreferences`](https://github.com/rational-kunal/Netflix-Hotkeys/blob/main/src/UI/hooks/usePreferences.js): Bridges the UI and the storage service to manage the preferences.
- [`FeatureControl`](https://github.com/rational-kunal/Netflix-Hotkeys/blob/main/src/UI/FeatureControl/FeatureControl.jsx): A UI element that allows users to enable or disable hotkeys.
- [`NetflixCrawler`](https://github.com/rational-kunal/Netflix-Hotkeys/blob/main/src/core/NetflixCrawler/index.js): Monitors changes in the Netflix DOM and triggers update events. It also provides access to current DOM elements as needed.
- [`NetflixController`](https://github.com/rational-kunal/Netflix-Hotkeys/blob/main/src/core/NetflixController/index.js): Listens to events from `NetflixCrawler` and triggers hotkeys based on the enabled preferences stored in `Preferences`.
- [`Executor`](https://github.com/rational-kunal/Netflix-Hotkeys/blob/main/src/core/NetflixController/Executor.js): Executes specific code immediately or after DOM updates.

### How Hotkeys are Triggered

Hotkeys are triggered based on user actions, but sometimes the Netflix DOM may not be in the desired state immediately. In such cases, the extension waits for the necessary elements to be added to the DOM before triggering the hotkey. Typically, the DOM changes occur promptly after user interaction.

Hotkeys are triggered by manipulating the Netflix DOM. Examples of DOM manipulation include clicking on a button or pasting text into an input field.

---

Generated by [create-chrome-ext](https://github.com/guocaoyi/create-chrome-ext)

Netflix icons created by Ruslan Babkin - Flaticon