• Stars
    star
    1,058
  • Rank 42,150 (Top 0.9 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created over 1 year ago
  • Updated about 1 month 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
8,741
star
2

SponsorBlockServer

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

SponsorBlockSafari

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

VosterCoaster

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

SponsorBlockSite

This is the homepage of SponsorBlock
JavaScript
18
star
6

SponsorBlockKubernetes

Kubernetes configuration files for SponsorBlock production server deployment
HCL
14
star
7

DeArrowThumbnailCache

Python
13
star
8

AutoVideo

Auto reddit video maker
JavaScript
10
star
9

maze-utils

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

YouTube-Watch-History-Statistic-Viewer

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

CoopNavigatorImproved

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

URLSubmiter

TypeScript
5
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

GetAllDiscordUsers

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

SponsorBlockStatTracker

Small node program that records the stats every 20 seconds
JavaScript
4
star
18

ExtensionTranslations

Translations for SponsorBlock and Clickbait
4
star
19

LakeEffectScoutingSummary

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

2DRacing

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

AlarmioRemoteServer

Server to save when AlarmioRemote can dismiss
JavaScript
3
star
22

DeArrowSafari

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

MicrosoftYourPhoneRestore

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

PrivacyUserCount

Privacy Friendly User Counter
TypeScript
3
star
25

DiskCache

TypeScript
3
star
26

AutoSyncer

Java
2
star
27

SponsorBlock-StatCounter

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

Escape-The-World

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

SponsorBlockStatus

Status page for SponsorBlock
CSS
2
star
30

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
31

PowerUpCycleTime

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

at-youtube-submitter

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

SponsorBlockAndroid

SponsorBlock for the official YouTube app
Java
2
star
34

BlueAllianceScraper

Scraper for statistics project
Python
2
star
35

k8s-thumbnail-cache

2
star
36

PowerDemonstration

Demonstrates power usage through the internet
HTML
2
star
37

SteamworksPcClient

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

TurnBasedAttacker

Final Project for Focus Program
C#
2
star
39

StaticBlog

Simple React + Gatsby markdown blog. Mostly made from React sample code.
JavaScript
2
star
40

SponsorBlockChannelScraper

Get channel and video data for all videos with SponsorBlock submissions
JavaScript
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

Planets

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

ScienceSpeechRecongnision

Java
1
star
46

CommandsForDiscord

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

vignette

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

RocketBaseStationParser

1
star
49

FocusProgramSite

HTML
1
star
50

seg3125-static-work

JavaScript
1
star
51

NewSite

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

MagnetoDeLiquidus

Liquid Simulating Puzzle Game
Java
1
star
53

CunctansSquare

Puzzle game with a shrinking world
Java
1
star
54

ScoutingApp

Java
1
star
55

DearrowSite

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

2021AprilFools

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

LD39

LD39 game Achluophobia
Java
1
star
59

AtLeastItsNotDeath

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

OHGJ124

One hour game jam space invaders game
Java
1
star
61

RoboticsEmailPull

JavaScript
1
star
62

MathMan

Game for school
Java
1
star
63

LearningCpp

Learning some C++
C++
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