- add engines targeting dev
- bump webpack
- update-oss-attribution CI
- appease eslint for webpack
- clean up packages
- move @types to devDependencies
- moved concurrently to devDependencies
- remove unused babel
* Preview button playback speed dependant
Pressing "Preview" will now jump 2 seconds in front of the segment start time, depending on the playback speed.
If you choose any category when editing a segment, and then choose the "Choose a category" one, it triggers the enable category message with an empty category name. This is a fix for that.
Noteworthy changes:
- Adds ability to cancel creating a segment
- Makes segment creation fully the responsibility of the content script, with the popup script buttons simply doing RPC
- Adds types to the Utils.wait function
- Fixes segment timestamps backwards if user marks segment end earlier than the start
- Makes the info menu (in-page popup) workaround clearer and easier to remove in the future.
* Fixed getFormattedTime sometimes returning (NaN:NaN)
getFormattedTime() with nothing passed into it and a couple other edge cases returned (NaN:NaN). This is a problem since on a slow machine getFormattedTime get called without anything passed into it around the time the computer is fetching the timing data. I haven't found the exact spot / place it is called wrongly, but this should fix it. I've have a slow machine so it's really been bugging me seeing (NaN:NaN) for a couple seconds before the page fully loads. Hopefully this should fix it.
The rest of the file uses non-honorific pronouns, so this line should also use them (i.e. "du" instead of "Sie").
Plus: Fixed spelling error and changed word to reflect the way it is spelled in Google Chrome.
Fixes:
- Segments hidden by longer segments
- Duration with skips not accounting for segment overlaps
- Duration with skips not accounting for user's skip choices
- Segment category text in preview tooltip overlaps the seek bar
- Segment category text in preview tooltip breaks for timestamps over one hour
- `previewBar.ts` lacks function argument and return types
- Tooltip label not cleaned up on remove
- General code style issues
- [German has pronouns for both familiar/informal and polite/formal forms of address](https://en.wikipedia.org/wiki/German_honorifics). Half of the strings were formulated polite/formal, while the other half was not. Using the polite/formal forms is a little bit overkill for this use case. I've changed all sentences to use the familiar/informal forms.
- former translation was poor, made no sense, was too hard to understand or didn't contain the actual meaning
- affected lines: 77, 137, 149, 158, 203, 290, 347, 425, 428, 489, 516, 522, 528, 543, 547, 599
- general improvements like small fixes, better grammar, easier to read sentences
- applies to all edited lines, including the lines already mentioned above
* New translations messages.json (French)
* New translations messages.json (French)
* New translations messages.json (French)
* New translations messages.json (French)
* New translations messages.json (Turkish)
* New translations messages.json (Czech)
* New translations messages.json (Slovak)
* New translations messages.json (Turkish)
* New translations messages.json (Turkish)
* New translations messages.json (Hungarian)
Submission editing is now broken as well as clicking submit.
Skipping through multiple submissions just treats it as skipping from one (no multiple vote options).
- Fix css when using html5
- Add encoding scheme to html
- Remove font-size change on title on hover. It's jarring
seeing the whole page move when trying to move your mouse
to the options.
- Remove center tags
- Remove unnecessary styles
- Fix some minor grammar
Also changed the isSubmitButtonLoaded function to be checking for the right button and fixed the startSponsorButton not hiding.
Useless function was removed.
Native speaker here, the machine based translation was not great so here's a first draft.
I choose to use "message commercial" (commercial message) and not "publicité" (advertisement) since ads feels to me to be more a legal status than a definite thing. "Endossement" is not a valid french word in this context, and endorsements would be translated to "sponsors" or "mécénat" in fr_FR, but again this are more legal category than pure identifying terms and fr_CA strongly dislikes frenglish.
But I left it in the extension name since this is a good keyword for people looking for adblocking-related extensions.
If you make any contributions to SponsorBlock after this file was created, you are agreeing that any code you have contributed will be licensed under LGPL-3.0.
SponsorBlock is an extension that will skip over sponsored segments of YouTube videos. SponsorBlock is a crowdsourced browser extension that lets anyone submit the start and end times of sponsored segments of YouTube videos. Once one person submits this information, everyone else with this extension will skip right over the sponsored segment.
SponsorLock is an open-source crowdsourced browser extension to isolate sponsor segments in YouTube videos. Users submit when a sponsor happens from the extension, and the extension only shows you sponsor segments.
See the [Wiki](https://github.com/ajayyy/SponsorBlock/wiki) for important links.
# Server
The backend server code is available here: https://github.com/ajayyy/SponsorBlockServer
It is a simple Sqlite database that will hold all the timing data.
To make sure that this project doesn't die, I have made the database publicly downloadable at https://sponsor.ajay.app/database ([License](https://github.com/ajayyy/SponsorBlock/wiki/Database-and-API-License)). If you are planning on using the database in another project, please read the [API Docs](https://wiki.sponsor.ajay.app/index.php/API_Docs) page for more information.
To make sure that this project doesn't die, I have made the database publicly downloadable at https://sponsor.ajay.app/database.db. So, you can download a backup or get archive.org to take a backup if you do desire.
Hopefully this project can be combined with projects like [this](https://github.com/Sponsoff/sponsorship_remover) and use this data to create a neural network to predict when sponsored segments happen. That project is sadly abandoned now, so I have decided to attempt to revive this idea.
The dataset and API are now being used in some [ports](https://github.com/ajayyy/SponsorBlock/wiki/3rd-Party-Ports) as well as a [neural network](https://github.com/andrewzlee/NeuralBlock).
# API
You can read the API docs [here](https://github.com/ajayyy/SponsorBlockServer#api-docs).
You can read the API docs [here](https://wiki.sponsor.ajay.app/index.php/API_Docs).
# Build Yourself
# Building
You can load this project as an unpacked extension. Make sure to rename the `config.js.example` file to `config.js` before installing.
You must have [Node.js 16](https://nodejs.org/) and npm installed.
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`. This can happen for example when a new category is added.
2. Run `npm install` 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](https://developer.chrome.com/docs/extensions/mv3/getstarted/#manifest), or convert it to a zip file to load it as a [temporary extension](https://developer.mozilla.org/en-US/docs/Tools/about:debugging#loading_a_temporary_extension) in Firefox.
### Developing with a clean profile and hot reloading
Run `npm run dev` (for Chrome) or `npm run dev:firefox` (for Firefox) to run the extension using a clean browser profile with hot reloading. This uses [`web-ext run`](https://extensionworkshop.com/documentation/develop/web-ext-command-reference/#commands).
Known chromium bug: Extension is not loaded properly on first start. Visit `chrome://extensions/` and reload the extension.
For Firefox for Android, use `npm run dev:firefox-android -- --adb-device <ip-address of the device>`. See the [Firefox documentation](https://extensionworkshop.com/documentation/develop/developing-extensions-for-firefox-for-android/#debug-your-extension) for more information.
# Credit
The awesome [Invidious API](https://github.com/omarroth/invidious/wiki/API) is used to grab the time the video was published.
The awesome [Invidious API](https://docs.invidious.io/API.md) was previously used, and the server is now using [NewLeaf](https://git.sr.ht/~cadence/NewLeaf) as a to get video info from YouTube.
Some icons made by <ahref="https://www.flaticon.com/authors/gregor-cresnar"title="Gregor Cresnar">Gregor Cresnar</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> and are licensed by <ahref="http://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a>
Originally forked from [YTSponsorSkip](https://github.com/NDevTK/YTSponsorSkip), but very little code remains.
Some icons made by<ahref="https://www.flaticon.com/authors/freepik"title="Freepik">Freepik</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> are licensed by <ahref="http://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a>
Icons made by:
*<ahref="https://www.flaticon.com/authors/gregor-cresnar"title="Gregor Cresnar">Gregor Cresnar</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> and are licensed by <ahref="https://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a>
*<ahref="https://www.flaticon.com/authors/freepik"title="Freepik">Freepik</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> and are licensed by <ahref="https://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a>
*<ahref="https://iconmonstr.com/about/#creator">Alexander Kahlkopf</a> from <ahref="https://iconmonstr.com/">iconmonstr.com</a> and are licensed by <ahref="https://iconmonstr.com/license/">iconmonstr License</a>
### License
This project is licensed under GNU LGPL v3 or any later version
"message":"SponsorBlock for YouTube - Skip Sponsorships",
"description":"Name of the extension."
},
"Description":{
"message":"Skip over sponsorship on YouTube videos. Report sponsors on videos you watch to save the time of others.",
"description":"Description of the extension."
},
"helpPage":{
"message":"index_en.html"
},
"400":{
"message":"Server said this request was invalid"
},
"429":{
"message":"You have submitted too many sponsor times for this one video, are you sure there are this many?"
},
"409":{
"message":"This has already been submitted before"
},
"502":{
"message":"It seems the server is down. Contact the dev to inform them."
},
"channelWhitelisted":{
"message":"Channel Whitelisted!"
},
"Sponsor":{
"message":"Sponsor"
},
"Sponsors":{
"message":"Sponsors"
},
"Segment":{
"message":"sponsor segment"
},
"Segments":{
"message":"sponsor segments"
},
"noticeTitle":{
"message":"Sponsor Skipped"
},
"reportButtonTitle":{
"message":"Report"
},
"reportButtonInfo":{
"message":"Report this sponsor submission as incorrect."
},
"Dismiss":{
"message":"Dismiss"
},
"Loading":{
"message":"Loading..."
},
"Mins":{
"message":"Minutes"
},
"Secs":{
"message":"Seconds"
},
"Hide":{
"message":"Never Show"
},
"hitGoBack":{
"message":"Hit unskip to get to where you came from."
},
"unskip":{
"message":"Unskip"
},
"reskip":{
"message":"Reskip"
},
"paused":{
"message":"Paused"
},
"confirmMSG":{
"message":"\n\nTo edit or delete individual values, click the info button or open the extension popup by clicking the extension icon in the top right corner."
},
"clearThis":{
"message":"Are you sure you want to clear this?\n\n"
},
"Unknown":{
"message":"There was an error submitting your sponsor times, please try again later."
},
"sponsorFound":{
"message":"This video's sponsors are in the database!"
},
"sponsor404":{
"message":"No sponsors found"
},
"sponsorStart":{
"message":"Sponsorship Starts Now"
},
"sponsorEnd":{
"message":"Sponsorship Ends Now"
},
"noVideoID":{
"message":"This probably isn't a YouTube tab, or you clicked too early. \n If you know this is a YouTube tab,\n close this popup and open it again."
},
"success":{
"message":"Success!"
},
"voted":{
"message":"Voted!"
},
"voteFail":{
"message":"You have already voted this way before."
},
"serverDown":{
"message":"It seems the sever is down. Contact the dev immediately."
},
"connectionError":{
"message":"A connection error has occured. Error code: "
},
"wantToSubmit":{
"message":"Do you want to submit the sponsor times for video id"
},
"leftTimes":{
"message":"You seem to have left some sponsor times unsubmitted. Go back to that page to submit them (they are not deleted)."
"message":"SponsorBlock pour YouTube - Enlève les endossements",
"description":"Name of the extension."
},
"Description":{
"message":"Enlève les endossements dans les vidéos YouTube. Soummettre les endossements dans les vidéos que vous regardez pour aidez les autres.",
"description":"Description of the extension."
},
"helpPage":{
"message":"index_en.html"
},
"400":{
"message":"Soumission invalide"
},
"429":{
"message":"Vous avez soummetez trop de endossements, il y a vraiment cette montant?"
},
"409":{
"message":"Déjas soummis"
},
"502":{
"message":"Le serveur ne fonctionne pas. Message le développeur."
},
"channelWhitelisted":{
"message":"Cette channel est sur la liste blanche!"
},
"Sponsor":{
"message":"endossement"
},
"Sponsors":{
"message":"endossements"
},
"Segment":{
"message":"section d'endossement"
},
"Segments":{
"message":"section d'endossements"
},
"noticeTitle":{
"message":"Endossement Passer"
},
"reportButtonTitle":{
"message":"Incorrect"
},
"reportButtonInfo":{
"message":"Informe que cette endossement est incorrect ou n'existe pas."
},
"Dismiss":{
"message":"Ferme"
},
"Loading":{
"message":"Chargement en cours..."
},
"Mins":{
"message":"Minutes"
},
"Secs":{
"message":"Seconds"
},
"Hide":{
"message":"Ne Montre Jaimais"
},
"hitGoBack":{
"message":"Clique retourne pour si vous avez manqué parti."
},
"unskip":{
"message":"Retourne"
},
"reskip":{
"message":"Resaute"
},
"paused":{
"message":"Pause"
},
"confirmMSG":{
"message":"\n\nPour modifier ou enlever des soumissions, clique sur le bouton d'info."
},
"clearThis":{
"message":"Êtes-vous certaines vous voulez enlever vos soumissions?\n\n"
},
"Unknown":{
"message":"Erreur, essayer encore plus tard."
},
"sponsorFound":{
"message":"Cette vidéo est dans le database!"
},
"sponsor404":{
"message":"Rien d'endossements trouvé"
},
"sponsorStart":{
"message":"Endossement Commence Maintenant"
},
"sponsorEnd":{
"message":"Endossement Arête Maintenant"
},
"noVideoID":{
"message":"Ceci n'est pas une tab de YouTube, ou vous avez cliqué trop tôt. \n Si vous savez que ceci est une tab YouTube, ferme ce menu et essayé encore."
},
"success":{
"message":"Succès!"
},
"voted":{
"message":"Voté!"
},
"voteFail":{
"message":"Vous avez déjà voté la même façon."
},
"serverDown":{
"message":"Le serveur ne fonctionne pas. Message le développeur."
},
"connectionError":{
"message":"Erreur. Code: "
},
"wantToSubmit":{
"message":"Voulez-vous soumettre les endossements sur le vidéo"
},
"leftTimes":{
"message":"Vous avez laissé les endossements qui n'étaient pas soumis. Retournez à la page pour les soumettre (Ils ne sont pas enlevés)."
},
"submitCheck":{
"message":"Êtes-vous certaines vous voulez soumettre?"
"message":"SponsorBlock para YouTube - Pule patrocínios",
"description":"Nome da extensão."
},
"Description":{
"message":"Pule patrocinadores em vídeos do YouTube. Reporte patrocinadores em videos que você assiste para salvar o tempo dos outros.",
"description":"Descrição da extensão."
},
"helpPage":{
"message":"index_en.html"
},
"400":{
"message":"O servidor disse que esse pedido foi inválido"
},
"429":{
"message":"Você enviou muitos segmentos para esse vídeo, tem certeza que tem tantos assim?"
},
"409":{
"message":"Isso já foi enviado antes"
},
"502":{
"message":"Parece que o servidor caiu. Contate o desenvolvedor para informá-los."
},
"channelWhitelisted":{
"message":"Canal adicionado a lista branca!"
},
"Sponsor":{
"message":"patrocinador"
},
"Sponsors":{
"message":"patrocinadores"
},
"Segment":{
"message":"segmento de patrocinador"
},
"Segments":{
"message":"segmento de patrocinadores"
},
"noticeTitle":{
"message":"Patrocinador pulado"
},
"reportButtonTitle":{
"message":"Reportar"
},
"reportButtonInfo":{
"message":"Reportar essa subimissão como inválida."
},
"Dismiss":{
"message":"Ignorar"
},
"Loading":{
"message":"Carregando..."
},
"Mins":{
"message":"Minutos"
},
"Secs":{
"message":"Segundos"
},
"Hide":{
"message":"Nunca mostrar"
},
"hitGoBack":{
"message":"Aperta reverter pulo para voltar onde estava"
},
"unskip":{
"message":"Reverter pulo"
},
"reskip":{
"message":"Pular novamente"
},
"paused":{
"message":"Pausado"
},
"confirmMSG":{
"message":"\n\nPara editar ou remover linhas individuais, clique com o botão direito ou abra o popup da extensão pelo icone no canto superior direito."
},
"clearThis":{
"message":"Tem certeza que quer limpar isso?\n\n"
},
"Unknown":{
"message":"Teve um erro ao enviar seus segmentos, tente novamente depois"
},
"sponsorFound":{
"message":"Os patrocinadores desse vídeo estão no banco de dados!"
},
"sponsor404":{
"message":"Nenhum patrocinador encontrado"
},
"sponsorStart":{
"message":"Patrocínio começa agora"
},
"sponsorEnd":{
"message":"Patrocínio termina agora"
},
"noVideoID":{
"message":"Isso provavelmente não é uma tab do YouTube, ou você clicou muito cedo. \n Se sabe que é uma tab do YouTube,\n fecha esse popup e abre de novo."
},
"success":{
"message":"Sucesso!"
},
"voted":{
"message":"Votado!"
},
"voteFail":{
"message":"Você já votou antes."
},
"serverDown":{
"message":"Parece que o servidor caiu. Contate o desenvolvedor o quanto antes."
},
"connectionError":{
"message":"Um erro de conexão aconteceu: Código: "
},
"wantToSubmit":{
"message":"Quer enviar os segmentos para o vídeo de ID"
},
"leftTimes":{
"message":"Parece que você esqueceu de enviar alguns segmentos. Volta pra página para enviar eles (não foram deletados)."
"description":"Название расширения, не переводится."
},
"fullName":{
"message":"SponsorBlock для YouTube - Пропускайте спонсорские вставки",
"description":"Название расширения."
},
"Description":{
"message":"Пропускайте спонсорские вставки в видео на YouTube. Сообщайте о спонсорских вставках в видео, которые Вы смотрите, чтобы сэкономить время других пользователей.",
"description":"Описание раширения."
},
"helpPage":{
"message":"index_en.html"
},
"400":{
"message":"Сервер отклонил этот запрос."
},
"429":{
"message":"Вы отправили слишком много спонсоров для этого видео. Вы уверены, что их так много?"
},
"409":{
"message":"Этот запрос был отправлен ранее."
},
"502":{
"message":"Сервер недоступен. Свяжитесь с разработчиком и сообщите ему об этом."
},
"channelWhitelisted":{
"message":"Канал добавлен в белый список!"
},
"Sponsor":{
"message":"Спонсор"
},
"Sponsors":{
"message":"Спонсоры"
},
"Segment":{
"message":"спонсорская вставка"
},
"Segments":{
"message":"спонсорские вставки"
},
"noticeTitle":{
"message":"Спонсор пропущен"
},
"reportButtonTitle":{
"message":"Ошибка"
},
"reportButtonInfo":{
"message":"Сообщить, что информация об этом спонсорском сегменте ошибочна."
},
"Dismiss":{
"message":"Закрыть"
},
"Loading":{
"message":"Загрузка..."
},
"Mins":{
"message":"мин"
},
"Secs":{
"message":"сек"
},
"Hide":{
"message":"Не показывать"
},
"hitGoBack":{
"message":"Нажмите «Назад», чтобы вернуться обратно."
},
"unskip":{
"message":"Назад"
},
"reskip":{
"message":"Пропустить"
},
"paused":{
"message":"Пауза"
},
"confirmMSG":{
"message":"\n\nЧтобы изменить или удалить отдельные значения, нажмите кнопку «Информация» или откройте всплывающее окно расширения, щелкнув значок расширения в правом верхнем углу."
},
"clearThis":{
"message":"Вы уверены, что хотите удалить эту информацию?\n\n"
},
"Unknown":{
"message":"При отправке отчета о спонсорском сегменте произошла ошибка. Попытайтесь отправить его позже."
},
"sponsorFound":{
"message":"Спонсоры этого видео уже находятся в базе данных!"
"message":"Возможно, это не вкладка YouTube, или Вы нажали слишком рано. \n Если это вкладка YouTube,\n закройте это всплывающее окно и откройте его снова."
},
"success":{
"message":"Успех!"
},
"voted":{
"message":"Голос засчитан!"
},
"voteFail":{
"message":"Вы уже проголосовали таким образом раньше."
},
"serverDown":{
"message":"Кажется, сервер не работает. Свяжитесь с разработчиком."
},
"connectionError":{
"message":"Ошибка соединения. Код ошибки: "
},
"wantToSubmit":{
"message":"Вы точно хотите отправить отчёт о спонсорских вставках в видео с идентификатором"
},
"leftTimes":{
"message":"Вы ещё не отправили отчёты о некоторых спонсорских вставках. Хотите вернуться на эту страницу, чтобы отправить их (они не удаляются)."
},
"submitCheck":{
"message":"Вы уверены, что хотите отправить эту информацию?"
Come contribute, make some suggestions and help out in the Discord: <ahref="https://discord.gg/QnmVMpU">https://discord.gg/QnmVMpU</a>
</p>
<h1>How skipping works</h1>
<pclass="projectPreview">
<spanclass="projectPreviewImageLarge">
<imgsrc="https://i.imgur.com/caf5Bju.png">
</span>
Videos will automatically be skipped if they are found in the database. You can open the popup by clicking the extension icon to get a preview of what they are.
<br/>
<br/>
Whenever you skip a video, you will get a notice report that submission. If the timing seems wrong, report it! You can also vote in the popup. The extension auto upvotes it if you don't report it, so make sure to report when necessary.
Submitting can either be done in the popup by hitting the "Sponsorship Starts Now" button or in the video player with the buttons on the player.
<br/>
<br/>
Clicking the play button indicated the start of a sponsorship section and clicking the stop icon indicates the end. You can prepare multiple sponsors before hitting submit. Clicking the upload button will submit. Clicking the garbage can will delete.
</p>
<h1>Editing</h1>
<pclass="projectPreview">
<spanclass="projectPreviewImageLarge">
<imgsrc="https://i.imgur.com/DZHqbsx.gif">
</span>
If you messed up, you can edit or delete your sponsor times in the popup or in the info menu (by hitting the info icon).
</p>
<h1>This is too slow</h1>
<p>
There are hotkeys if you want to use them. You must be focused on the YouTube player to use them. Press the semicolon key to indicate the start/end of a sponsor segment and click the appostrophe to submit.
</p>
<h1>I hate these buttons, they are so ugly</h1>
<p>
All player buttons can be hidden in the options.
</p>
<h1>Can I get a copy of the Database? What happens if you disappear?</h1>
<p>
The database is public and available at <ahref="https://sponsor.ajay.app/database.db">https://sponsor.ajay.app/database.db</a>. The source code is freely available. So, even if something happens to me, your submissions are not lost.
</p>
<h1>News and how it is made</h1>
<p>
See <ahref="https://sponsor.ajay.app/news">https://sponsor.ajay.app/news</a>.
</p>
<h1>I want more features!</h1>
<p>
Ask on Discord or make an Issue on GitHub. I am happy to hear suggestions or improvements you want. You may also contribute code or graphics if you would like.
<p>The awesome <ahref="https://github.com/omarroth/invidious/wiki/API">Invidious API</a> is used to grab the time the video was published.</p>
<p>Some icons made by <ahref="https://www.flaticon.com/authors/gregor-cresnar"title="Gregor Cresnar">Gregor Cresnar</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> and are licensed by <ahref="http://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a></p>
<p>Some icons made by <ahref="https://www.flaticon.com/authors/freepik"title="Freepik">Freepik</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> and are licensed by <ahref="http://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a></p>
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2)format('woff2');
unicode-range:U+1F00-1FFF;
}
/* greek */
@font-face{
font-family:'Source Sans Pro';
font-style:normal;
font-weight:400;
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2)format('woff2');
unicode-range:U+0370-03FF;
}
/* vietnamese */
@font-face{
font-family:'Source Sans Pro';
font-style:normal;
font-weight:400;
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2)format('woff2');
<buttonid="unwhitelistChannel"class="whitelistButton popupElement"style="display: none">Remove Channel From Whitelist</button>
</div>
<subclass="popupElement">
Whitelist the channels who do sponsorships ethically to encourage good behavior, or maybe if they are just entertaining and funny. Or don't, that's your call.
</sub>
<br/>
<br/>
<buttonid="reportAnIssue"class="dangerButton popupElement">Vote On A Sponsor Time</button>
This is used on the public stats page to show off how much you've contributed. See it <aclass="popupElement discreteLink"href="https://sponsor.ajay.app/stats"target="_blank">here</a>.
"message":"SponsorBlock for YouTube - Skip Sponsorships",
"description":"Name of the extension."
},
"Description":{
"message":"Skip sponsorships, subscription begging and more on YouTube videos. Report sponsors on videos you watch to save others' time.",
"description":"Description of the extension."
},
"400":{
"message":"Server said this request was invalid"
},
"429":{
"message":"You have submitted too many sponsor times for this one video, are you sure there are this many?"
},
"409":{
"message":"This has already been submitted before"
},
"channelWhitelisted":{
"message":"Channel Whitelisted!"
},
"Segment":{
"message":"segment"
},
"Segments":{
"message":"segments"
},
"upvoteButtonInfo":{
"message":"Upvote this submission"
},
"reportButtonTitle":{
"message":"Report"
},
"reportButtonInfo":{
"message":"Report this submission as incorrect."
},
"Dismiss":{
"message":"Dismiss"
},
"Loading":{
"message":"Loading..."
},
"Hide":{
"message":"Never Show"
},
"hitGoBack":{
"message":"Hit unskip to get to where you came from."
},
"unskip":{
"message":"Unskip"
},
"reskip":{
"message":"Reskip"
},
"unmute":{
"message":"Unmute"
},
"paused":{
"message":"Paused"
},
"manualPaused":{
"message":"Timer Stopped"
},
"confirmMSG":{
"message":"To edit or delete individual values, click the info button or open the extension popup by clicking the extension icon in the top right corner."
},
"clearThis":{
"message":"Are you sure you want to clear this?\n\n"
},
"Unknown":{
"message":"There was an error submitting your sponsor times, please try again later."
},
"sponsorFound":{
"message":"This video has segments in the database!"
},
"sponsor404":{
"message":"No segments found"
},
"sponsorStart":{
"message":"Segment Starts Now"
},
"sponsorEnd":{
"message":"Segment Ends Now"
},
"sponsorCancel":{
"message":"Cancel Creating Segment"
},
"noVideoID":{
"message":"No YouTube video found.\nIf this is incorrect, refresh the tab."
},
"refreshSegments":{
"message":"Refresh segments"
},
"success":{
"message":"Success!"
},
"voted":{
"message":"Voted!"
},
"serverDown":{
"message":"It seems the server is down. Contact the dev immediately."
},
"connectionError":{
"message":"A connection error has occured. Error code: "
},
"clearTimes":{
"message":"Clear Segments"
},
"openPopup":{
"message":"Open SponsorBlock Popup"
},
"closePopup":{
"message":"Close Popup"
},
"SubmitTimes":{
"message":"Submit Segments"
},
"submitCheck":{
"message":"Are you sure you want to submit this?"
},
"whitelistChannel":{
"message":"Whitelist channel"
},
"removeFromWhitelist":{
"message":"Remove channel from whitelist"
},
"voteOnTime":{
"message":"Vote On A Segment"
},
"Submissions":{
"message":"Submissions"
},
"savedPeopleFrom":{
"message":"You've saved people from "
},
"viewLeaderboard":{
"message":"Leaderboard"
},
"recordTimesDescription":{
"message":"Submit"
},
"submissionEditHint":{
"message":"Section editing will appear after you click submit",
"description":"Appears in the popup to inform them that editing has been moved to the video player."
},
"popupHint":{
"message":"Hint: You can setup keybinds for submitting in the options"
},
"clearTimesButton":{
"message":"Clear Times"
},
"submitTimesButton":{
"message":"Submit Times"
},
"publicStats":{
"message":"This is used on the public stats page to show off how much you've contributed. See it"
},
"Username":{
"message":"Username"
},
"setUsername":{
"message":"Set Username"
},
"copyPublicID":{
"message":"Copy Public UserID"
},
"discordAdvert":{
"message":"Come join the official discord server to give suggestions and feedback!"
},
"hideThis":{
"message":"Hide this"
},
"Options":{
"message":"Options"
},
"showButtons":{
"message":"Show Buttons On YouTube Player"
},
"hideButtons":{
"message":"Hide Buttons On YouTube Player"
},
"hideButtonsDescription":{
"message":"This hides the buttons that appear on the YouTube player to submit skip segments."
},
"showSkipButton":{
"message":"Keep Skip To Highlight Button On Player"
},
"showInfoButton":{
"message":"Show Info Button On YouTube Player"
},
"hideInfoButton":{
"message":"Hide Info Button On YouTube Player"
},
"autoHideInfoButton":{
"message":"Auto-hide Info Button"
},
"hideDeleteButton":{
"message":"Hide Delete Button On YouTube Player"
},
"showDeleteButton":{
"message":"Show Delete Button On YouTube Player"
},
"enableViewTracking":{
"message":"Enable Skip Count Tracking"
},
"whatViewTracking":{
"message":"This feature tracks which segments you have skipped to let users know how much their submission has helped others and used as a metric along with upvotes to ensure that spam doesn't get into the database. The extension sends a message to the server each time you skip a segment. Hopefully most people don't change this setting so that the view numbers are accurate. :)"
},
"enableViewTrackingInPrivate":{
"message":"Enable Skip Count Tracking In Private/Incognito tabs"
},
"enableTrackDownvotes":{
"message":"Store segment downvotes"
},
"whatTrackDownvotes":{
"message":"Any segments you downvote will remain hidden even after refreshing"
},
"trackDownvotesWarning":{
"message":"Warning: Disabling this will delete all previously stored downvotes"
},
"enableQueryByHashPrefix":{
"message":"Query By Hash Prefix"
},
"whatQueryByHashPrefix":{
"message":"Instead of requesting segments from the server using the videoID, the first 4 characters of the hash of the videoID are sent. This server will send back data for all videos with similar hashes."
},
"enableRefetchWhenNotFound":{
"message":"Refetch Segments On New Videos"
},
"whatRefetchWhenNotFound":{
"message":"If the video is new, and there are no segments found, it will keep refetching every few minutes while you watch."
},
"showNotice":{
"message":"Show Notice Again"
},
"showSkipNotice":{
"message":"Show Notice After A Segment Is Skipped"
},
"noticeVisibilityMode0":{
"message":"Full Size Skip Notices"
},
"noticeVisibilityMode1":{
"message":"Small Skip Notices for Auto Skip"
},
"noticeVisibilityMode2":{
"message":"All Small Skip Notices"
},
"noticeVisibilityMode3":{
"message":"Faded Skip Notices for Auto Skip"
},
"noticeVisibilityMode4":{
"message":"All Faded Skip Notices"
},
"longDescription":{
"message":"SponsorBlock lets you skip over sponsors, intros, outros, subscription reminders, and other annoying parts of YouTube videos. SponsorBlock is a crowdsourced browser extension that lets anyone submit the start and end times of sponsored segments and other segments of YouTube videos. Once one person submits this information, everyone else with this extension will skip right over the sponsored segment. You can also skip over non music sections of music videos.",
"description":"Full description of the extension on the store pages."
},
"website":{
"message":"Website",
"description":"Used on Firefox Store Page"
},
"sourceCode":{
"message":"Source Code",
"description":"Used on Firefox Store Page"
},
"noticeUpdate":{
"message":"The notice has been upgraded!",
"description":"The first line of the message displayed after the notice was upgraded."
},
"noticeUpdate2":{
"message":"If you still don't like it, hit the never show button.",
"description":"The second line of the message displayed after the notice was upgraded."
},
"setSkipShortcut":{
"message":"Skip segment",
"description":"Keybind label"
},
"setStartSponsorShortcut":{
"message":"Start/stop segment",
"description":"Keybind label"
},
"setSubmitKeybind":{
"message":"Submit segments",
"description":"Keybind label"
},
"keybindDescription":{
"message":"Select a key by typing it and choose any modifier keys you wish to use."
},
"0":{
"message":"Connection Timeout. Check your internet connection. If your internet is working, the server is probably overloaded or down."
},
"disableSkipping":{
"message":"Skipping is enabled"
},
"enableSkipping":{
"message":"Skipping is disabled"
},
"yourWork":{
"message":"Your Work",
"description":"Used to describe the section that will show you the statistics from your submissions."
},
"502":{
"message":"The server seems to be overloaded. Try again in a few seconds."
},
"errorCode":{
"message":"Error Code: "
},
"skip":{
"message":"Skip"
},
"mute":{
"message":"Mute"
},
"full":{
"message":"Full Video",
"description":"Used for the name of the option to label an entire video as sponsor or self promotion."
},
"skip_category":{
"message":"Skip {0}?"
},
"mute_category":{
"message":"Mute {0}?"
},
"skip_to_category":{
"message":"Skip to {0}?",
"description":"Used for skipping to things (Skip to Highlight)"
},
"skipped":{
"message":"{0} Skipped",
"description":"Example: Sponsor Skipped"
},
"muted":{
"message":"{0} Muted",
"description":"Example: Sponsor Muted"
},
"skipped_to_category":{
"message":"Skipped to {0}",
"description":"Used for skipping to things (Skipped to Highlight)"
},
"disableAutoSkip":{
"message":"Disable Auto Skip"
},
"enableAutoSkip":{
"message":"Enable Auto Skip"
},
"audioNotification":{
"message":"Audio Notification On Skip"
},
"audioNotificationDescription":{
"message":"Audio notification on skip will play a sound whenever a segment is skipped. If disabled (or auto skip is disabled), no sound will be played."
},
"showTimeWithSkips":{
"message":"Show Time With Skips Removed"
},
"showTimeWithSkipsDescription":{
"message":"This time appears in brackets next to the current time on below the seekbar. This shows the total video duration minus any segments. This includes segments marked as only \"Show In Seekbar\"."
},
"youHaveSkipped":{
"message":"You've skipped "
},
"minLower":{
"message":"minute"
},
"minsLower":{
"message":"minutes"
},
"hourLower":{
"message":"hour"
},
"hoursLower":{
"message":"hours"
},
"youHaveSavedTime":{
"message":"You've saved people",
"description":"You've saved people from 887,362 segments (236d 15h 5.3 minutes of their lives)."
},
"youHaveSavedTimeEnd":{
"message":" of their lives",
"description":"You've saved people from 887,362 segments (236d 15h 5.3 minutes of their lives)."
},
"statusReminder":{
"message":"Check status.sponsor.ajay.app for server status."
},
"changeUserID":{
"message":"Import/Export Your UserID"
},
"whatChangeUserID":{
"message":"This should be kept private. This is like a password and should not be shared with anyone. If someone has this, they can impersonate you. If you are looking for your public userID, click the clipboard icon in the popup."
},
"setUserID":{
"message":"Set UserID"
},
"userIDChangeWarning":{
"message":"Warning: Changing the UserID is permanent. Are you sure you would like to do this? Make sure to backup your old one just in case."
},
"createdBy":{
"message":"Created By"
},
"supportOtherSites":{
"message":"Support 3rd Party YouTube-Sites"
},
"supportOtherSitesDescription":{
"message":"Support third party YouTube clients. To enable support, you must accept the extra permissions. This does NOT work in incognito on Chrome and other Chromium variants.",
"description":"This replaces the 'supports Invidious' option because it now works on other YouTube sites such as Cloudtube"
},
"supportedSites":{
"message":"Supported Sites: "
},
"optionsInfo":{
"message":"Enable Invidious support, disable autoskip, hide buttons and more."
},
"addInvidiousInstance":{
"message":"Add 3rd-Party Client Instance"
},
"addInvidiousInstanceDescription":{
"message":"Add a custom instance. This must be formatted with JUST the domain. Example: invidious.ajay.app"
},
"add":{
"message":"Add"
},
"addInvidiousInstanceError":{
"message":"This is an invalid domain. This should JUST include the domain part. Example: invidious.ajay.app"
},
"resetInvidiousInstance":{
"message":"Reset Invidious Instance List"
},
"resetInvidiousInstanceAlert":{
"message":"You are about to reset the Invidious instance list"
},
"currentInstances":{
"message":"Current Instances:"
},
"minDuration":{
"message":"Minimum duration (seconds):"
},
"minDurationDescription":{
"message":"Segments shorter than the set value will not be skipped or show in the player."
},
"skipNoticeDuration":{
"message":"Skip notice duration (seconds):"
},
"skipNoticeDurationDescription":{
"message":"The skip notice will stay on screen for at least this many seconds. For manual skipping, it may be visible for longer."
},
"shortCheck":{
"message":"The following submission is shorter than your minimum duration option. This could mean that this is already submitted, and just being ignored due to this option. Are you sure you would like to submit?"
},
"liveOrPremiere":{
"message":"Submitting on an active livestream or premiere is not allowed. Please wait until it finishes, then refresh the page and verify that the segments are still valid."
},
"showUploadButton":{
"message":"Show Upload Button"
},
"customServerAddress":{
"message":"SponsorBlock Server Address"
},
"customServerAddressDescription":{
"message":"The address SponsorBlock uses to make calls to the server.\nUnless you have your own server instance, this should not be changed."
},
"save":{
"message":"Save"
},
"reset":{
"message":"Reset"
},
"customAddressError":{
"message":"This address is not in the right form. Make sure you have http:// or https:// at the beginning and no trailing slashes."
},
"areYouSureReset":{
"message":"Are you sure you would like to reset this?"
},
"mobileUpdateInfo":{
"message":"m.youtube.com is now supported"
},
"exportOptions":{
"message":"Import/Export All Options"
},
"exportOptionsCopy":{
"message":"Edit/copy"
},
"exportOptionsDownload":{
"message":"Save to file"
},
"exportOptionsUpload":{
"message":"Load from file"
},
"whatExportOptions":{
"message":"This is your entire configuration in JSON. This includes your userID, so be sure to share this wisely."
},
"setOptions":{
"message":"Set Options"
},
"exportOptionsWarning":{
"message":"Warning: Changing the options is permanent and can break your install. Are you sure you would like to do this? Make sure to backup your old one just in case."
},
"incorrectlyFormattedOptions":{
"message":"This JSON is not formatted correctly. Your options have not been changed."
},
"confirmNoticeTitle":{
"message":"Submit Segment"
},
"submit":{
"message":"Submit"
},
"cancel":{
"message":"Cancel"
},
"delete":{
"message":"Delete"
},
"preview":{
"message":"Preview"
},
"unsubmitted":{
"message":"Unsubmitted"
},
"inspect":{
"message":"Inspect"
},
"edit":{
"message":"Edit"
},
"copyDebugInformation":{
"message":"Copy Debug Information To Clipboard"
},
"copyDebugInformationFailed":{
"message":"Failed to write to clipboard"
},
"copyDebugInformationOptions":{
"message":"Copies information to the clipboard to be provided to a developer when raising a bug / when a developer requests it. Sensitive information such as your user ID, whitelisted channels, and custom server address have been removed. However it does contain information such as your useragent, browser, operating system, and extension version number. "
},
"copyDebugInformationComplete":{
"message":"The debug information has been copied to the clip board. Feel free to remove any information you would rather not share. Save this in a text file or paste into the bug report."
},
"keyAlreadyUsed":{
"message":"This shortcut is bound to another action. Please select a different one."
},
"to":{
"message":"to",
"description":"Used between segments. Example: 1:20 to 1:30"
},
"category_sponsor":{
"message":"Useful Content"
},
"category_sponsor_description":{
"message":"Paid promotion, paid referrals and direct advertisements. Not for self-promotion or free shoutouts to causes/creators/websites/products they like."
},
"category_selfpromo":{
"message":"Unpaid/Self Promotion"
},
"category_selfpromo_description":{
"message":"Similar to \"sponsor\" except for unpaid or self promotion. This includes sections about merchandise, donations, or information about who they collaborated with."
},
"category_exclusive_access":{
"message":"Exclusive Access"
},
"category_exclusive_access_description":{
"message":"Only for labeling entire videos. Used when a video showcases a product, service or location that they've received free or subsidized access to."
},
"category_exclusive_access_pill":{
"message":"This video showcases a product, service or location that they've received free or subsidized access to",
"description":"Short description for this category"
},
"category_interaction":{
"message":"Interaction Reminder (Subscribe)"
},
"category_interaction_description":{
"message":"When there is a short reminder to like, subscribe or follow them in the middle of content. If it is long or about something specific, it should be under self promotion instead."
},
"category_interaction_short":{
"message":"Interaction Reminder"
},
"category_intro":{
"message":"Intermission/Intro Animation"
},
"category_intro_description":{
"message":"An interval without actual content. Could be a pause, static frame, repeating animation. This should not be used for transitions containing information."
},
"category_intro_short":{
"message":"Intermission"
},
"category_outro":{
"message":"Endcards/Credits"
},
"category_outro_description":{
"message":"Credits or when the YouTube endcards appear. Not for conclusions with information."
},
"category_preview":{
"message":"Preview/Recap"
},
"category_preview_description":{
"message":"Quick recap of previous episodes, or a preview of what's coming up later in the current video. Meant for edited together clips, not for spoken summaries."
},
"category_filler":{
"message":"Filler Tangent/Jokes"
},
"category_filler_description":{
"message":"Tangential scenes added only for filler or humor that are not required to understand the main content of the video. This should not include segments providing context or background details."
},
"category_filler_short":{
"message":"Filler"
},
"category_music_offtopic":{
"message":"Music: Non-Music Section"
},
"category_music_offtopic_description":{
"message":"Only for use in music videos. This only should be used for sections of music videos that aren't already covered by another category."
},
"category_music_offtopic_short":{
"message":"Non-Music"
},
"category_poi_highlight":{
"message":"Highlight"
},
"category_poi_highlight_description":{
"message":"The part of the video that most people are looking for. Similar to \"Video starts at x\" comments."
},
"category_livestream_messages":{
"message":"Livestream: Donation/Message Readings"
},
"category_livestream_messages_short":{
"message":"Message Reading"
},
"autoSkip":{
"message":"Auto Skip"
},
"manualSkip":{
"message":"Manual Skip"
},
"showOverlay":{
"message":"Show In Seek Bar"
},
"disable":{
"message":"Disable"
},
"autoSkip_POI":{
"message":"Auto skip to the start"
},
"manualSkip_POI":{
"message":"Ask when video loads"
},
"showOverlay_POI":{
"message":"Show In Seek Bar"
},
"showOverlay_full":{
"message":"Show Label"
},
"autoSkipOnMusicVideos":{
"message":"Auto skip all segments when there is a non-music segment"
},
"muteSegments":{
"message":"Allow segments that mute audio instead of skip"
},
"fullVideoSegments":{
"message":"Show an icon when a video is entirely an advertisement",
"description":"Referring to the category pill that is now shown on videos that are entirely sponsor or entirely selfpromo"
},
"previewColor":{
"message":"Unsubmitted Color",
"description":"Referring to submissions that have not been sent to the server yet."
},
"seekBarColor":{
"message":"Seek Bar Color"
},
"category":{
"message":"Category"
},
"skipOption":{
"message":"Skip Option",
"description":"Used on the options page to describe the ways to skip the segment (auto skip, manual, etc.)"
},
"enableTestingServer":{
"message":"Enable Beta Testing Server"
},
"whatEnableTestingServer":{
"message":"Your submissions and votes WILL NOT COUNT towards the main server. Only use this for testing."
},
"testingServerWarning":{
"message":"All submissions and votes WILL NOT COUNT towards the main server while connecting to the test server. Make sure to disable this when you want to make real submissions."
},
"bracketNow":{
"message":"(Now)"
},
"moreCategories":{
"message":"More Categories"
},
"chooseACategory":{
"message":"Choose a Category"
},
"enableThisCategoryFirst":{
"message":"To submit segments with the category of \"{0}\", you must enable it in the options. You will be redirected to the options now.",
"description":"Used when submitting segments to only let them select a certain category if they have it enabled in the options."
},
"poiOnlyOneSegment":{
"message":"Warning: This type of segment can have a maximum of one active at a time. Submitting multiple will cause a random one to be shown."
},
"youMustSelectACategory":{
"message":"You must select a category for all segments you are submitting!"
},
"bracketEnd":{
"message":"(End)"
},
"hiddenDueToDownvote":{
"message":"hidden: downvote"
},
"hiddenDueToDuration":{
"message":"hidden: too short"
},
"manuallyHidden":{
"message":"manually hidden"
},
"channelDataNotFound":{
"description":"This error appears in an alert when they try to whitelist a channel and the extension is unable to determine what channel they are looking at.",
"message":"Channel ID is not loaded yet. If you are using an embedded video, try using the YouTube homepage instead. This could also be caused by changes in the YouTube layout, if you think so, make a comment here:"
},
"videoInfoFetchFailed":{
"message":"It seems that something is blocking SponsorBlock's ability to get video data. Please see https://github.com/ajayyy/SponsorBlock/issues/741 for more info."
},
"youtubePermissionRequest":{
"message":"It seems that SponsorBlock is unable to reach the YouTube API. To fix this, accept the permission prompt that will appear next, wait a few seconds, and then reload the page."
},
"acceptPermission":{
"message":"Accept permission"
},
"permissionRequestSuccess":{
"message":"Permission request succeeded!"
},
"permissionRequestFailed":{
"message":"Permission request failed, did you click deny?"
},
"adblockerIssueWhitelist":{
"message":"If you are unable to resolve this, then disable the setting 'Force Channel Check Before Skipping', as SponsorBlock is unable to retrieve the channel information for this video"
},
"forceChannelCheck":{
"message":"Force Channel Check Before Skipping"
},
"whatForceChannelCheck":{
"message":"By default, it will skip segments right away before it even knows what the channel is. By default, some segments at the start of the video might be skipped on whitelisted channels. Enabling this option will prevent this but making all skipping have a slight delay as getting the channelID can take some time. This delay might be unnoticeable if you have fast internet."
},
"forceChannelCheckPopup":{
"message":"Consider Enabling \"Force Channel Check Before Skipping\""
},
"downvoteDescription":{
"message":"Incorrect/Wrong Timing"
},
"incorrectCategory":{
"message":"Change Category"
},
"nonMusicCategoryOnMusic":{
"message":"This video is categorized as music. Are you sure this has a sponsor? If this is actually a \"Non-Music segment\", open up the extension options and enable this category. Then, you can submit this segment as \"Non-Music\" instead of sponsor. Please read the guidelines if you are confused."
},
"multipleSegments":{
"message":"Multiple Segments"
},
"guidelines":{
"message":"Guidelines"
},
"readTheGuidelines":{
"message":"Read The Guidelines!!",
"description":"Show the first time they submit or if they are \"high risk\""
},
"categoryUpdate1":{
"message":"Categories are here!"
},
"categoryUpdate2":{
"message":"Open the options to skip intros, outros, merch, etc."
},
"help":{
"message":"Help"
},
"GotIt":{
"message":"Got it",
"description":"Used as the button to dismiss a tooltip"
},
"fullVideoTooltipWarning":{
"message":"This segment is large. If the whole video is about one topic, then change from \"Skip\" to \"Full Video\". See the guidelines for more information."
},
"categoryPillTitleText":{
"message":"This entire video is labeled as this category and is too tightly integrated to be able to separate"
},
"experiementOptOut":{
"message":"Opt-out of all future experiments",
"description":"This is used in a popup about a new experiment to get a list of unlisted videos to back up since all unlisted videos uploaded before 2017 will be set to private."
},
"hideForever":{
"message":"Hide forever"
},
"warningChatInfo":{
"message":"You got a warning and cannot submit segments temporarily. This means that we noticed you were making some common mistakes that are not malicious, please just confirm that you understand the rules and we will remove the warning. You can also join this chat using discord.gg/SponsorBlock or matrix.to/#/#sponsor:ajay.app"
},
"voteRejectedWarning":{
"message":"Vote rejected due to a warning. Click to open a chat to resolve it, or come back later when you have time.",
"description":"This is an integrated chat panel that will appearing allowing them to talk to the Discord/Matrix chat without leaving their browser."
},
"Donate":{
"message":"Donate"
},
"considerDonating":{
"message":"Help fund development"
},
"hideDonationLink":{
"message":"Hide Donation Link"
},
"darkModeOptionsPage":{
"message":"Dark Mode On Options Page"
},
"helpPageThanksForInstalling":{
"message":"Thanks for installing SponsorBlock."
},
"helpPageReviewOptions":{
"message":"Please review the options below"
},
"helpPageFeatureDisclaimer":{
"message":"Many features are disabled by default. If you want to skip intros, outros, use Invidious, etc., enable them below. You can also hide/show UI elements."
},
"helpPageHowSkippingWorks":{
"message":"How skipping works"
},
"helpPageHowSkippingWorks1":{
"message":"Video segments will automatically be skipped if they are found in the database. You can open the popup by clicking the extension icon to get a preview of what they are."
},
"helpPageHowSkippingWorks2":{
"message":"Whenever you skip a segment, you will get notice. If the timing seems wrong vote down by clicking downvote! You can also vote in the popup."
},
"Submitting":{
"message":"Submitting"
},
"helpPageSubmitting1":{
"message":"Submitting can either be done in the popup by hitting the \"Segment Starts Now\" button or in the video player with the buttons on the player."
},
"helpPageSubmitting2":{
"message":"Clicking the play button indicated the start of a segment and clicking the stop icon indicates the end. You can prepare multiple sponsors before hitting submit. Clicking the upload button will submit. Clicking the garbage can will delete."
},
"Editing":{
"message":"Editing"
},
"helpPageEditing1":{
"message":"If you messed up, you can edit or delete your segments after clicking the up arrow button."
},
"helpPageTooSlow":{
"message":"This is too slow"
},
"helpPageTooSlow1":{
"message":"There are hotkeys if you want to use them. Press the semicolon key to indicate the start/end of a sponsor segment and click the apostrophe to submit. These can be changed in the options. If you don't use QWERTY, you should probably change the keybinding."
},
"helpPageCopyOfDatabase":{
"message":"Can I get a copy of the Database? What happens if you disappear?"
},
"helpPageCopyOfDatabase1":{
"message":"The database is public and available at"
},
"helpPageCopyOfDatabase2":{
"message":"The source code is freely available. So, even if something happens to me, your submissions are not lost."
},
"helpPageNews":{
"message":"News and how it is made"
},
"helpPageSourceCode":{
"message":"Where can I get the source code?"
},
"Credits":{
"message":"Credits"
},
"LearnMore":{
"message":"Learn More"
},
"CopyDownvoteButtonInfo":{
"message":"Downvotes and creates a local copy for you to resubmit"
},
"OpenCategoryWikiPage":{
"message":"Open this category's wiki page."
},
"CopyAndDownvote":{
"message":"Copy and downvote"
},
"ContinueVoting":{
"message":"Continue Voting"
},
"ChangeCategoryTooltip":{
"message":"This will instantly apply to your segments"
},
"SponsorTimeEditScrollNewFeature":{
"message":"Use your mousewheel while hovering over the edit box to quickly adjust the time. Combinations of the ctrl or shift key can be used to fine tune the changes."
},
"categoryPillNewFeature":{
"message":"New! See when a video is entirely sponsored or self-promotion"
},
"dayAbbreviation":{
"message":"d",
"description":"100d"
},
"hourAbbreviation":{
"message":"h",
"description":"100h"
},
"optionsTabBehavior":{
"message":"Behavior",
"description":"Appears in Options as a tab header for options related to categories and skipping behavior. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabInterface":{
"message":"Interface",
"description":"Appears in Options as a tab header for options related to GUI and sounds. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabKeyBinds":{
"message":"Keyboard shortcuts",
"description":"Appears in Options as a tab header for keybinds. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabBackup":{
"message":"Backup/Restore",
"description":"Appears in Options as a tab header for options related to saving/restoring your settings. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"optionsTabAdvanced":{
"message":"Miscellaneous",
"description":"Appears in Options as a tab header for advanced/niche options. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)."
},
"noticeVisibilityLabel":{
"message":"Skip notice appearance",
"description":"Option label"
},
"unbind":{
"message":"Unbind",
"description":"Unbind keyboard shortcut"
},
"notSet":{
"message":"Not set"
},
"change":{
"message":"Change"
},
"youtubeKeybindWarning":{
"message":"This is a built-in YouTube shortcut. Are you sure you want to use it?"
By using this extension, you agree to the <ahref="https://gist.github.com/ajayyy/aa9f8ded2b573d4f73a3ffa0ef74f796">Privacy Policy</a> and <ahref="https://gist.github.com/ajayyy/9e8100f069348e0bc062641f34d6af12">Terms of Use</a>.
</p>
<p>
<b>Please uninstall regular SponsorBlock before trying this out.</b> Good luck! This extension was created for April 1st 2022.
<p>Some icons made by <ahref="https://www.flaticon.com/authors/gregor-cresnar"title="Gregor Cresnar">Gregor Cresnar</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> and are licensed by <ahref="https://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a></p>
<p>Some icons made by <ahref="https://www.flaticon.com/authors/freepik"title="Freepik">Freepik</a> from <ahref="https://www.flaticon.com/"title="Flaticon">www.flaticon.com</a> and are licensed by <ahref="https://creativecommons.org/licenses/by/3.0/"title="Creative Commons BY 3.0"target="_blank">CC 3.0 BY</a></p>
d="m 282.58,568 a 65,65 0 0 1 -34.14,-9.66 C 95.41,463.94 2.54,300.46 0,121 a 64.91,64.91 0 0 1 34,-58.09 522.56,522.56 0 0 1 497.16,0 64.91,64.91 0 0 1 34,58.12 c -2.53,179.43 -95.4,342.91 -248.42,437.3 A 65,65 0 0 1 282.58,568 Z m 0,-548.31 A 502.24,502.24 0 0 0 43.4,80.22 45.27,45.27 0 0 0 19.7,120.75 c 2.44,172.67 91.81,330 239.07,420.83 a 46.19,46.19 0 0 0 47.61,0 C 453.64,450.73 543,293.42 545.45,120.75 A 45.26,45.26 0 0 0 521.75,80.21 502.26,502.26 0 0 0 282.58,19.69 Z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#ffffff"/>
<path
style="fill:#ffffff"
d="M 284.70508 42.693359 A 479.9 479.9 0 0 0 54.369141 100.41992 A 22.53 22.53 0 0 0 42.669922 120.41992 C 45.069922 290.25992 135.67008 438.63977 270.83008 522.00977 A 22.48 22.48 0 0 0 294.32031 522.00977 C 429.48031 438.63977 520.08047 290.25992 522.48047 120.41992 A 22.53 22.53 0 0 0 510.7793 100.41992 A 479.9 479.9 0 0 0 284.70508 42.693359 z M 224.94922 162.35352 L 282.57422 219.98047 L 340.20117 162.35352 L 384.33984 206.49219 L 326.71484 264.11719 L 384.33984 321.74414 L 340.20117 365.88281 L 282.57422 308.25781 L 224.94922 365.88281 L 180.81055 321.74414 L 238.4375 264.11719 L 180.81055 206.49219 L 224.94922 162.35352 z "
d="m 282.58,568 a 65,65 0 0 1 -34.14,-9.66 C 95.41,463.94 2.54,300.46 0,121 a 64.91,64.91 0 0 1 34,-58.09 522.56,522.56 0 0 1 497.16,0 64.91,64.91 0 0 1 34,58.12 c -2.53,179.43 -95.4,342.91 -248.42,437.3 A 65,65 0 0 1 282.58,568 Z m 0,-548.31 A 502.24,502.24 0 0 0 43.4,80.22 45.27,45.27 0 0 0 19.7,120.75 c 2.44,172.67 91.81,330 239.07,420.83 a 46.19,46.19 0 0 0 47.61,0 C 453.64,450.73 543,293.42 545.45,120.75 A 45.26,45.26 0 0 0 521.75,80.21 502.26,502.26 0 0 0 282.58,19.69 Z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#ffffff"/>
<path
style="fill:#ffffff"
d="M 284.70508 42.693359 A 479.9 479.9 0 0 0 54.369141 100.41992 A 22.53 22.53 0 0 0 42.669922 120.41992 C 45.069922 290.25992 135.67008 438.63977 270.83008 522.00977 A 22.48 22.48 0 0 0 294.32031 522.00977 C 429.48031 438.63977 520.08047 290.25992 522.48047 120.41992 A 22.53 22.53 0 0 0 510.7793 100.41992 A 479.9 479.9 0 0 0 284.70508 42.693359 z M 184.84375 113.77344 L 380.30664 113.77344 L 380.30664 161.31836 L 184.84375 161.31836 L 184.84375 113.77344 z M 184.84375 174.45703 L 380.30469 174.45703 L 380.30469 430.16992 L 184.84375 430.16992 L 184.84375 174.45703 z "
d="M 279.39062,24.197266 C 179.21701,24.603169 98.318528,101.48391 98.605469,196.00391 c 0.159023,40.69515 15.666041,80.00792 43.744141,110.89843 V 147.87891 l 16.75935,97.00627 C 164.72335,211.06602 65.553309,180.55346 92.112522,170.56303 L 193.6089,410.46016 435.49163,328.41259 443.41016,147.87891 v 46.7539 l 18.32422,-0.0996 C 461.16135,100.01356 379.56507,23.790617 279.39062,24.197266 Z M 443.41016,195.51367 v 74.92188 c 12.04625,-23.34115 18.3128,-48.96032 18.32617,-74.92188 z"
sodipodi:nodetypes="cccccccccccccccc"/>
<path
style="fill:#008000"
d="m 281.94584,119.65312 -239.275918,0.7668 c 0,0 -0.08983,-8.3148 0,0 2.4,169.84 93.000158,318.21985 228.160158,401.58985 7.20735,4.41633 16.28288,4.41633 23.49023,0 135.16,-83.37 225.76016,-231.74985 228.16016,-401.58985 v 0 z M 220.41016,145.74023 411.2793,255.93945 220.41016,366.14062 Z"
d="m 282.58,568 a 65,65 0 0 1 -34.14,-9.66 C 95.41,463.94 2.54,300.46 0,121 a 64.91,64.91 0 0 1 34,-58.09 522.56,522.56 0 0 1 497.16,0 64.91,64.91 0 0 1 34,58.12 c -2.53,179.43 -95.4,342.91 -248.42,437.3 A 65,65 0 0 1 282.58,568 Z m 0,-548.31 A 502.24,502.24 0 0 0 43.4,80.22 45.27,45.27 0 0 0 19.7,120.75 c 2.44,172.67 91.81,330 239.07,420.83 a 46.19,46.19 0 0 0 47.61,0 C 453.64,450.73 543,293.42 545.45,120.75 A 45.26,45.26 0 0 0 521.75,80.21 502.26,502.26 0 0 0 282.58,19.69 Z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#ffffff"/>
<path
style="fill:#ffffff"
d="M 284.70508 42.693359 A 479.9 479.9 0 0 0 54.369141 100.41992 A 22.53 22.53 0 0 0 42.669922 120.41992 C 45.069922 290.25992 135.67008 438.63977 270.83008 522.00977 A 22.48 22.48 0 0 0 294.32031 522.00977 C 429.48031 438.63977 520.08047 290.25992 522.48047 120.41992 A 22.53 22.53 0 0 0 510.7793 100.41992 A 479.9 479.9 0 0 0 284.70508 42.693359 z M 282.57422 112.11133 L 282.87109 112.11133 L 423.75977 365.75391 L 330.30273 365.75391 L 330.30273 409.21094 L 234.84766 409.21094 L 234.84766 365.75391 L 141.39062 365.75391 L 282.57422 112.11133 z "
d="m 282.58,568 a 65,65 0 0 1 -34.14,-9.66 C 95.41,463.94 2.54,300.46 0,121 a 64.91,64.91 0 0 1 34,-58.09 522.56,522.56 0 0 1 497.16,0 64.91,64.91 0 0 1 34,58.12 c -2.53,179.43 -95.4,342.91 -248.42,437.3 A 65,65 0 0 1 282.58,568 Z m 0,-548.31 A 502.24,502.24 0 0 0 43.4,80.22 45.27,45.27 0 0 0 19.7,120.75 c 2.44,172.67 91.81,330 239.07,420.83 a 46.19,46.19 0 0 0 47.61,0 C 453.64,450.73 543,293.42 545.45,120.75 A 45.26,45.26 0 0 0 521.75,80.21 502.26,502.26 0 0 0 282.58,19.69 Z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#ffffff"/>
<path
style="fill:#ffffff"
d="M 284.70508 42.693359 A 479.9 479.9 0 0 0 54.369141 100.41992 A 22.53 22.53 0 0 0 42.669922 120.41992 C 45.069922 290.25992 135.67008 438.63977 270.83008 522.00977 A 22.48 22.48 0 0 0 294.32031 522.00977 C 429.48031 438.63977 520.08047 290.25992 522.48047 120.41992 A 22.53 22.53 0 0 0 510.7793 100.41992 A 479.9 479.9 0 0 0 284.70508 42.693359 z M 188.7168 140.07227 L 312.64844 264.00586 L 188.7168 387.9375 L 159.5918 358.8125 L 254.19336 264.00586 L 159.5918 169.19727 L 188.7168 140.07227 z M 305.625 140.07227 L 429.55859 264.00586 L 305.625 387.9375 L 276.50195 358.8125 L 371.10352 264.00586 L 276.50195 169.19727 L 305.625 140.07227 z "
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2)format('woff2');
unicode-range:U+1F00-1FFF;
}
/* greek */
@font-face{
font-family:'Source Sans Pro';
font-style:normal;
font-weight:400;
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2)format('woff2');
unicode-range:U+0370-03FF;
}
/* vietnamese */
@font-face{
font-family:'Source Sans Pro';
font-style:normal;
font-weight:400;
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2)format('woff2');
src:local('Source Sans Pro Regular'),local('SourceSansPro-Regular'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2)format('woff2');
src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2)format('woff2');
src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2)format('woff2');
src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2)format('woff2');
unicode-range:U+1F00-1FFF;
}
/* greek */
@font-face{
font-family:'Source Sans Pro';
font-style:normal;
font-weight:700;
src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2)format('woff2');
unicode-range:U+0370-03FF;
}
/* vietnamese */
@font-face{
font-family:'Source Sans Pro';
font-style:normal;
font-weight:700;
src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2)format('woff2');
src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2)format('woff2');
src:local('Source Sans Pro Bold'),local('SourceSansPro-Bold'),url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2)format('woff2');
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.