• Stars
    star
    1,410
  • Rank 33,354 (Top 0.7 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created about 2 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Crowdsourcing better titles and thumbnails on YouTube

Logo

DeArrow

Download: Chrome/Chromium | Firefox | Safari for MacOS and iOS | Android | Buy | Website | Stats

DeArrow is a browser extension for crowdsourcing better titles and thumbnails on YouTube.

The goal of DeArrow is to make titles accurate and reduce sensationalism.

Titles can be any arbitrary text. Thumbnails are screenshots from specific timestamps in the video. These are user submitted and voted on.

By default, if there are no submissions, it will format the original title to the user-specified format, and set a screenshot from a random timestamp as the thumbnail. This can be configured in the options to disable formatting, or show the original thumbnail by default.

If the original thumbnail is actually good, you can still vote for it in the submission menu, and then it will act like a submission.

The extension is currently in beta, and there are some issues to work out, but it should be fully usable.

How it works

The browser extension first fetches data from the backend about submitted titles and thumbnails. If one is found, it replaces the branding locally.

All thumbnails are just timestamps in a video, so they need to be generated. There are two options to generate them. One is to use the thumbnail generation service, and another is to generate it locally. It tries both and uses the fastest one. The thumbnail generation service will cache thumbnails for future requests, making it return instantly for the next user. Local thumbnail generation is done by taking a screenshot of an HTML video element using and drawing that to a canvas.

If no thumbnails or titles are submitted, it switches to the configurable fallback options. Titles will be formatted according to user preference (title or sentence cases). Thumbnails, by default, are generated at a random timestamp that is not in a SponsorBlock segment.

Lastly, it adds a "show original" button if anything was changed, allowing you to peek at the original title and thumbnail when you want.

Related Repositories

Name URL
Extension https://github.com/ajayyy/DeArrow
Shared Library With SponsorBlock https://github.com/ajayyy/maze-utils
Translations https://github.com/ajayyy/ExtensionTranslations
Safari https://github.com/ajayyy/DeArrowSafari
Backend https://github.com/ajayyy/SponsorBlockServer
Backend Kubernetes Manifests https://github.com/ajayyy/SponsorBlockKubernetes
Thumbnail Cache Backend https://github.com/ajayyy/DeArrowThumbnailCache
Thumbnail Cache Kubernetes Manifests https://github.com/ajayyy/k8s-thumbnail-cache

Group Policy Options

See the Firefox Managed Storage, Chrome Admin Settings and Edge ExtensionSettings pages for more info. This uBlock Origin wiki page might also help.

It is possible to inject a license key using group policy/managed storage to be able to have the extension auto-activated even when you reset the settings on each install.

{
  "licenseKey": "your license key here"
}

Building

You must have Node.js 16 and npm installed.

  1. Clone with submodules
git clone https://github.com/ajayyy/DeArrow --recurse-submodules=yes

Or if you already cloned it, pull submodules with

git submodule update --init --recursive
  1. Copy the file config.json.example to config.json and adjust configuration as desired.

    • You will need to repeat this step in the future if you get build errors related to CompileConfig.
  2. Run npm ci in the repository to install dependencies.

  3. Run npm run build:dev (for Chrome) or npm run build:dev:firefox (for Firefox) to generate a development version of the extension with source maps.

    • You can also run npm run build (for Chrome) or npm run build:firefox (for Firefox) to generate a production build.
  4. The built extension is now in dist/. You can load this folder directly in Chrome as an unpacked extension, or convert it to a zip file to load it as a temporary extension in Firefox. You may need to edit package.json and add the parameters directly there.

Credit

Built on the base of SponsorBlock licensed under LGPL 3.0.

Logo based on Twemoji licensed under CC-BY 4.0.

More Repositories

1

SponsorBlock

Skip YouTube video sponsors (browser extension)
TypeScript
10,082
star
2

SponsorBlockServer

Skip YouTube video sponsors (server side portion)
TypeScript
831
star
3

SponsorBlockSafari

Safari web-extension glue code for SponsorBlock
Swift
47
star
4

VosterCoaster

Experimental VR Roller Coaster Builder And Theme Park Tycoon Game
C#
30
star
5

DeArrowThumbnailCache

Python
21
star
6

SponsorBlockSite

This is the homepage of SponsorBlock
JavaScript
20
star
7

SponsorBlockKubernetes

Kubernetes configuration files for SponsorBlock production server deployment
HCL
17
star
8

maze-utils

Utilities for my browser extensions (SponsorBlock and DeArrow)
TypeScript
10
star
9

AutoVideo

Auto reddit video maker
JavaScript
8
star
10

ExtensionTranslations

Translations for SponsorBlock and Clickbait
8
star
11

YouTube-Watch-History-Statistic-Viewer

View statistics based on your watch history similar to Spotify's 2017wrapped.com
JavaScript
8
star
12

CoopNavigatorImproved

(uOttawa) Fixes annoyances with the coop navigator website
TypeScript
7
star
13

Other_driver_Wii-Kinect

C++
5
star
14

ajayyy.github.io

My website. Also contains downloads to different things
HTML
5
star
15

2022AprilFools

Based on https://github.com/ajayyy/SponsorBlockSite
JavaScript
5
star
16

URLSubmiter

TypeScript
5
star
17

GetAllDiscordUsers

Quickly download the usernames and IDs for everyone in a server
JavaScript
4
star
18

DiskCache

TypeScript
4
star
19

2DRacing

Cool mario kart-esque 2D racer game
C#
4
star
20

AlarmioRemoteServer

Server to save when AlarmioRemote can dismiss
JavaScript
3
star
21

PrivacyUserCount

Privacy Friendly User Counter
TypeScript
3
star
22

DeArrowSafari

Safari web-extension glue code for DeArrow
Swift
3
star
23

DearrowSite

JavaScript
3
star
24

MicrosoftYourPhoneRestore

Restore cached messages form Microsoft Your Phone to your Android device
Python
3
star
25

SponsorBlockStatTracker

Small node program that records the stats every 20 seconds
JavaScript
3
star
26

SponsorBlockAndroid

SponsorBlock for the official YouTube app
Java
3
star
27

LakeEffectScoutingSummary

Summarizes scouting data into understandable words. Built with Electron + a server-side version.
JavaScript
3
star
28

AutoSyncer

Java
2
star
29

SponsorBlock-StatCounter

Small page that pulls from the API to make a counter
CSS
2
star
30

Escape-The-World

Game made in April 2017 for Ludum Dare 38
Java
2
star
31

SponsorBlockStatus

Status page for SponsorBlock
CSS
2
star
32

PowerUpCycleTime

Puts all cycle times from the scouting app into a nice cycle time spreadsheet
Java
2
star
33

DiscordNotifier

Notifies you when you get mentioned in a muted server. (You used to get these, but discord removed them in an update)
JavaScript
2
star
34

at-youtube-submitter

URL submitter for July 2021 Archive Team unlisted grab
JavaScript
2
star
35

BlueAllianceScraper

Scraper for statistics project
Python
2
star
36

k8s-thumbnail-cache

2
star
37

PowerDemonstration

Demonstrates power usage through the internet
HTML
2
star
38

SponsorBlockChannelScraper

Get channel and video data for all videos with SponsorBlock submissions
JavaScript
2
star
39

SteamworksPcClient

python code [OLD CODE] Moved to SteamworksScoutingApp
Python
2
star
40

TurnBasedAttacker

Final Project for Focus Program
C#
2
star
41

The-Colosseum

A game...
Java
1
star
42

StrongholdScoutingApp

Scouting App for Stronghold written with layouts
Java
1
star
43

scripts

Personal Userscrips
JavaScript
1
star
44

ScienceSpeechRecongnision

Java
1
star
45

CommandsForDiscord

[DEPRECATED] A bot for Google Assistant that allows you to send messages on Discord
JavaScript
1
star
46

vignette

THIS IS A FORK OF A DELETED REPOSITORY!! Browser extension that skips parts of YouTube videos to save your time.
TypeScript
1
star
47

RocketBaseStationParser

1
star
48

FocusProgramSite

HTML
1
star
49

seg3125-static-work

JavaScript
1
star
50

MagnetoDeLiquidus

Liquid Simulating Puzzle Game
Java
1
star
51

CunctansSquare

Puzzle game with a shrinking world
Java
1
star
52

ScoutingApp

Java
1
star
53

Planets

Multiplayer planet bouncing game. Split into nice libraries.
Java
1
star
54

NewSite

A new more minimalist site with CSS animations
JavaScript
1
star
55

2021AprilFools

Forked from https://github.com/ajayyy/SponsorBlockSite
JavaScript
1
star
56

PlanetBounce

This is a very semi-complete multiplayer planet bouncing game written with Lib-GDX. This project was restarted at: https://github.com/ajayyy/Planets
Java
1
star
57

AtLeastItsNotDeath

A platformer game with a twist made for Ludum Dare 43
Java
1
star
58

OHGJ124

One hour game jam space invaders game
Java
1
star
59

RoboticsEmailPull

JavaScript
1
star
60

LD39

LD39 game Achluophobia
Java
1
star
61

MathMan

Game for school
Java
1
star
62

LearningCpp

Learning some C++
C++
1
star
63

StaticBlog

Simple React + Gatsby markdown blog. Mostly made from React sample code.
JavaScript
1
star
64

LD40

My game for the Ludum Dare 40 competition
C#
1
star
65

PlanetBounce-Server

Server for PlanetBounce. This is a very semi-complete multiplayer planet bouncing game written with Lib-GDX. This project was restarted at: https://github.com/ajayyy/Planets
Java
1
star