Compare commits

...

10 Commits

Author SHA1 Message Date
Ajay Ramachandran
bf55b0f233 Merge pull request #415 from ajayyy/react
Fixed minutes not displaying zero when hours are displayed
2020-07-18 22:23:46 -04:00
Ajay Ramachandran
df1d3b401c Update version number 2020-07-18 22:19:47 -04:00
Ajay Ramachandran
4d55a71619 Fixed minutes not displaying zero when hours are displayed 2020-07-18 22:19:13 -04:00
Ajay Ramachandran
29e6ebab29 Merge pull request #414 from ajayyy/react
Improvements
2020-07-18 22:11:44 -04:00
Ajay Ramachandran
97e80c6f4e New Crowdin updates (#407)
* New translations messages.json (Romanian)

* New translations messages.json (German)

* New translations messages.json (French)

* New translations messages.json (Swedish)

* New translations messages.json (Japanese)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (Portuguese, Brazilian)

* New translations messages.json (French)

* New translations messages.json (German)
2020-07-18 21:22:23 -04:00
Ajay Ramachandran
3ac730c053 Fix errors when response fails 2020-07-18 21:21:53 -04:00
Ajay Ramachandran
d25951f313 Update version number 2020-07-18 21:20:36 -04:00
Ajay Ramachandran
886e134010 Made all preview segments auto skip 2020-07-18 21:20:18 -04:00
Ajay Ramachandran
cde50b0cb5 Update README.md 2020-07-18 17:52:47 -04:00
Ajay Ramachandran
19ac01a17c Updated description 2020-07-18 15:24:31 -04:00
11 changed files with 103 additions and 18 deletions

View File

@@ -34,9 +34,9 @@
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.
SponsorBlock is an open-source crowdsourced browser extension to skip sponsor segments in YouTube videos. Users submit when a sponsor happens from the extension, and the extension automatically skips sponsors it knows about. It also supports skipping other categories, such as intros, outros and reminders to subscribe.
Also supports Invidio.us.
It also supports Invidio.us.
**Translate:** [![Crowdin](https://badges.crowdin.net/sponsorblock/localized.svg)](https://crowdin.com/project/sponsorblock)

View File

@@ -1,7 +1,7 @@
{
"name": "__MSG_fullName__",
"short_name": "SponsorBlock",
"version": "2.0.4",
"version": "2.0.4.2",
"default_locale": "en",
"description": "__MSG_Description__",
"content_scripts": [{

View File

@@ -128,7 +128,7 @@
"message": "Kanal auf Whitelist setzen "
},
"removeFromWhitelist": {
"message": "Kanal von Whitelist entfernen"
"message": "Kanal von der Whitelist entfernen"
},
"voteOnTime": {
"message": "Stimme für Zeiten ab"
@@ -571,6 +571,12 @@
"moreCategories": {
"message": "Weitere Kategorien"
},
"chooseACategory": {
"message": "Wähle eine Kategorie"
},
"youMustSelectACategory": {
"message": "Sie müssen eine Kategorie für alle Segmente auswählen, die Sie abschicken!"
},
"bracketEnd": {
"message": "(Ende)"
},

View File

@@ -4,7 +4,7 @@
"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.",
"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": {
@@ -218,7 +218,7 @@
"message": "Show Notice Again"
},
"longDescription": {
"message": "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. \n\n You can also skip intros, outros, reminders to subscribe and other categories.",
"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 let's anyone submit the start and end time's 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": {

View File

@@ -217,6 +217,10 @@
"showNotice": {
"message": "Afficher la notification"
},
"longDescription": {
"message": "SponsorBlock est une extension qui permet de sauter les segments sponsorisés des vidéos de YouTube. SponsorBlock est une extension de navigateur participative qui permet à quiconque de soumettre les heures de début et de fin des segments sponsorisés des vidéos de YouTube. Une fois qu'une personne a soumis ces informations, toutes les autres personnes possédant cette extension sauteront automatiquement les segments sponsorisés. \n\n Vous pouvez également sauter les intros, les outros, les rappels d'abonnement et d'autres catégories.",
"description": "Full description of the extension on the store pages."
},
"website": {
"message": "Site web",
"description": "Used on Firefox Store Page"
@@ -285,6 +289,12 @@
"audioNotificationDescription": {
"message": "La notification audio lors du passage jouera un son à chaque fois qu'un sponsor est ignoré. Si désactivé (ou si le passage automatique est désactivé), aucun son ne sera joué."
},
"showTimeWithSkips": {
"message": "Afficher le temps avec les passages supprimés"
},
"showTimeWithSkipsDescription": {
"message": "Ce temps apparaît entre crochets à côté du temps actuel sous la barre de défilement. Cela indique la durée totale de la vidéo après déduction de tout les segments. Ceci comprend les segments marqués comme étant uniquement à \"Afficher dans la barre de recherche\"."
},
"youHaveSkipped": {
"message": "Vous avez passé "
},
@@ -475,6 +485,15 @@
"category_sponsor_description": {
"message": "Promotion rémunérée, parrainage rémunéré et publicité directe. Pas pour l'autopromotion ou les présentations gratuites de causes, de créateurs, de sites web ou de produits qu'ils aiment."
},
"category_intro": {
"message": "Entracte/Animation d'intro"
},
"category_intro_description": {
"message": "Un intervalle sans contenu réel. Peut être une pause, une image statique, une animation répétitive. Ceci ne doit pas être utilisé pour les transitions contenant des informations ou être utilisé sur les vidéos musicales."
},
"category_intro_short": {
"message": "Entracte"
},
"category_outro": {
"message": "Générique de fin"
},
@@ -552,6 +571,12 @@
"moreCategories": {
"message": "Autres catégories"
},
"chooseACategory": {
"message": "Choisissez une catégorie"
},
"youMustSelectACategory": {
"message": "Vous devez sélectionner une catégorie pour tous les segments que vous soumettez !"
},
"bracketEnd": {
"message": "(Fin)"
},

View File

@@ -1 +1,6 @@
{}
{
"fullName": {
"message": "SponserBlock for YouTube - 動画のスポンサーセクションを自動でスキップする",
"description": "Name of the extension."
}
}

View File

@@ -31,6 +31,9 @@
"Segments": {
"message": "segmentos de patrocinadores"
},
"upvoteButtonInfo": {
"message": "Votar nesse segmento positivamente"
},
"reportButtonTitle": {
"message": "Reportar"
},
@@ -64,6 +67,9 @@
"paused": {
"message": "Pausado"
},
"manualPaused": {
"message": "Tempo parado"
},
"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."
},
@@ -211,6 +217,10 @@
"showNotice": {
"message": "Mostrar notificação outra vez"
},
"longDescription": {
"message": "SponsorBlock é uma extensão que pula patrocínios em vídeos no YouTube. SponsorBlock é uma extensão de navegador que deixa qualquer pessoa enviar o começo e fim de segmentos patrocinados em vídeos no YouTube. Quando uma pessoa envia essa informação, todo mundo com a extensão vai pular essa mesma parte patrocinada. \n\n Você também pode pular introduções, finais do vídeo, lembretes para inscrever e outras categorias.",
"description": "Full description of the extension on the store pages."
},
"website": {
"message": "Site",
"description": "Used on Firefox Store Page"
@@ -279,6 +289,9 @@
"audioNotificationDescription": {
"message": "A notificação de áudio ao pular irá tocar um som sempre que um patrocínio for ignorado. Se desativado (ou o pulo automático estiver desativado), nenhum som será reproduzido."
},
"showTimeWithSkips": {
"message": "Mostrar tempo com pulos removidos"
},
"youHaveSkipped": {
"message": "Você pulou "
},

View File

@@ -217,6 +217,10 @@
"showNotice": {
"message": "Arată Notificarea Din Nou"
},
"longDescription": {
"message": "SponsorBlock este o extensie care va sări peste segmentele sponsorizate din videoclipurile de pe YouTube. SponsorBlock este o extensie crowdsourced care lasă pe oricine să trimită începutul și finalul segmentelor sponsorizate din videoclipurile de pe YouTube. Odată ce o persoană trimite aceste informații, toată lumea cu această extensie va sări peste acel segment sponsorizat. \n\n Poți de asemenea să sari peste intro-uri, outro-uri, amintiri de abonare și alte categorii.",
"description": "Full description of the extension on the store pages."
},
"website": {
"message": "Website",
"description": "Used on Firefox Store Page"
@@ -285,6 +289,12 @@
"audioNotificationDescription": {
"message": "Notificarea audio va reda un sunet atunci când sari peste un segement sponsorizat. Daca este dezactivat (sau autoskip este dezactivat), niciun sunet nu va fi redat."
},
"showTimeWithSkips": {
"message": "Arată timpul cu săriturile eliminate"
},
"showTimeWithSkipsDescription": {
"message": "Acest timp apare în paranteze lângă ora curentă sub bara de progres. Aceasta arată durata totală a videoclipului minus orice segment. Aceasta include segmente marcate doar ca \"Afișare în Seekbar\"."
},
"youHaveSkipped": {
"message": "Ai sărit peste "
},
@@ -475,6 +485,15 @@
"category_sponsor_description": {
"message": "Promovare plătită, refferali plătiți și reclame directe. Nu pentru autopromovări sau promovări gratis ale cauzelor/creatorilor/website-urilor/produselor."
},
"category_intro": {
"message": "Pauză/Animație Intro"
},
"category_intro_description": {
"message": "Un interval fără conținut real. Poate fi o pauză, un cadru static, o animație care se repetă. Acestea nu ar trebui utilizate pentru tranziții care conțin informații sau nu ar trebui utilizate pe videoclipuri muzicale."
},
"category_intro_short": {
"message": "Pauză"
},
"category_outro": {
"message": "Ecran De Final/Credite"
},
@@ -552,6 +571,12 @@
"moreCategories": {
"message": "Mai multe categorii"
},
"chooseACategory": {
"message": "Alege o categorie"
},
"youMustSelectACategory": {
"message": "Trebuie să selectaţi o categorie pentru toate segmentele pe care le trimiteţi!"
},
"bracketEnd": {
"message": "(Sfârșit)"
},

View File

@@ -502,6 +502,12 @@
"moreCategories": {
"message": "Fler Kategorier"
},
"chooseACategory": {
"message": "Välj en kategori"
},
"youMustSelectACategory": {
"message": "Du måste välja en kategori för alla segment du skickar in!"
},
"bracketEnd": {
"message": "(Slut)"
},

View File

@@ -493,7 +493,8 @@ function startSponsorSchedule(includeIntersectingSegments: boolean = false, curr
}
// Don't skip if this category should not be skipped
if (utils.getCategorySelection(currentSkip.category).option === CategorySkipOption.ShowOverlay) return;
if (utils.getCategorySelection(currentSkip.category)?.option === CategorySkipOption.ShowOverlay
&& skipInfo.array !== sponsorTimesSubmitting) return;
let skippingFunction = () => {
let forcedSkipTime: number = null;
@@ -504,8 +505,7 @@ function startSponsorSchedule(includeIntersectingSegments: boolean = false, curr
if (video.currentTime >= skipTime[0] && video.currentTime < skipTime[1]) {
skipToTime(video, skipTime, skippingSegments, skipInfo.openNotice);
// TODO: Know the autoSkip settings for ALL items being skipped
if (utils.getCategorySelection(currentSkip.category).option === CategorySkipOption.ManualSkip) {
if (utils.getCategorySelection(currentSkip.category)?.option === CategorySkipOption.ManualSkip) {
forcedSkipTime = skipTime[0] + 0.001;
} else {
forcedSkipTime = skipTime[1];
@@ -618,7 +618,7 @@ function sponsorsLookup(id: string) {
videoID: id,
categories
}).then(async (response: FetchResponse) => {
if (response.ok) {
if (response?.ok) {
let recievedSegments: SponsorTime[] = JSON.parse(response.responseText);
if (!recievedSegments.length) {
console.error("[SponsorBlock] Server returned malformed response: " + JSON.stringify(recievedSegments));
@@ -662,7 +662,7 @@ function sponsorsLookup(id: string) {
}
sponsorLookupRetries = 0;
} else if (response.status === 404) {
} else if (response?.status === 404) {
sponsorDataFound = false;
//check if this video was uploaded recently
@@ -898,12 +898,12 @@ function getNextSkipIndex(currentTime: number, includeIntersectingSegments: bool
function getLatestEndTimeIndex(sponsorTimes: SponsorTime[], index: number, hideHiddenSponsors: boolean = true): number {
// Only combine segments for AutoSkip
if (index == -1 ||
utils.getCategorySelection(sponsorTimes[index].category).option !== CategorySkipOption.AutoSkip) return index;
utils.getCategorySelection(sponsorTimes[index].category)?.option !== CategorySkipOption.AutoSkip) return index;
// Default to the normal endTime
let latestEndTimeIndex = index;
for (let i = 0; i < sponsorTimes.length; i++) {
for (let i = 0; i < sponsorTimes?.length; i++) {
let currentSegment = sponsorTimes[i].segment;
let latestEndTime = sponsorTimes[latestEndTimeIndex].segment[1];
@@ -939,7 +939,7 @@ function getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments:
let startTimes: number[] = [];
for (let i = 0; i < sponsorTimes.length; i++) {
for (let i = 0; i < sponsorTimes?.length; i++) {
if ((minimum === undefined || (sponsorTimes[i].segment[0] >= minimum || (includeIntersectingSegments && sponsorTimes[i].segment[1] > minimum)))
&& (!onlySkippableSponsors || utils.getCategorySelection(sponsorTimes[i].category).option !== CategorySkipOption.ShowOverlay)
&& (!hideHiddenSponsors || sponsorTimes[i].hidden === SponsorHideType.Visible)) {
@@ -968,7 +968,7 @@ function previewTime(time: number) {
//skip from the start time to the end time for a certain index sponsor time
function skipToTime(v: HTMLVideoElement, skipTime: number[], skippingSegments: SponsorTime[], openNotice: boolean) {
// There will only be one submission if it is manual skip
let autoSkip: boolean = utils.getCategorySelection(skippingSegments[0].category).option === CategorySkipOption.AutoSkip;
let autoSkip: boolean = utils.getCategorySelection(skippingSegments[0].category)?.option === CategorySkipOption.AutoSkip;
if (autoSkip || sponsorTimesSubmitting.includes(skippingSegments[0])) {
v.currentTime = skipTime[1];

View File

@@ -334,6 +334,7 @@ class Utils {
getFormattedTime(seconds: number, precise?: boolean): string {
let hours = Math.floor(seconds / 60 / 60);
let minutes = Math.floor(seconds / 60) % 60;
let minutesDisplay = String(minutes);
let secondsNum = seconds % 60;
if (!precise) {
secondsNum = Math.floor(secondsNum);
@@ -345,8 +346,12 @@ class Utils {
//add a zero
secondsDisplay = "0" + secondsDisplay;
}
if (hours && minutes < 10) {
//add a zero
minutesDisplay = "0" + minutesDisplay;
}
let formatted = (hours ? hours + ":" : "") + minutes + ":" + secondsDisplay;
let formatted = (hours ? hours + ":" : "") + minutesDisplay + ":" + secondsDisplay;
return formatted;
}