Merge branch 'master' of https://github.com/ajayyy/SponsorBlock into react

This commit is contained in:
Ajay Ramachandran 2020-07-03 20:58:15 -04:00
commit 4fc7a69dd5
13 changed files with 303 additions and 28 deletions

View file

@ -11,18 +11,21 @@
<b>Download:</b>
<a href="https://chrome.google.com/webstore/detail/mnjggcdmjocbbbhaepdhchncahnbgone">Chrome/Chromium</a> |
<a href="https://addons.mozilla.org/addon/sponsorblock/?src=external-github">Firefox</a> |
<a href="https://github.com/ajayyy/SponsorBlock/wiki/Android">Android</a> |
<a href="https://sponsor.ajay.app">Website</a> |
<a href="https://sponsor.ajay.app/stats">Stats</a>
</p>
<p align="center">
<b>Unofficial Ports:</b>
<a href="https://github.com/ajayyy/SponsorBlock/wiki/Unofficial-Ports#mpv-media-player">MPV</a>
<a href="https://github.com/ajayyy/SponsorBlock/wiki/Unofficial-Ports#mpv-media-player">MPV</a> |
<a href="https://github.com/ajayyy/SponsorBlock/wiki/Unofficial-Ports#kodi">Kodi</a> |
<a href="https://github.com/ajayyy/SponsorBlock/wiki/Unofficial-Ports#ios">iOS</a>
</p>
<p align="center">
<a href="https://addons.mozilla.org/addon/sponsorblock/?src=external-github"><img src="https://img.shields.io/amo/users/sponsorblock?label=Firefox%20Users" alt="Badge"></img></a>
<a href="https://chrome.google.com/webstore/detail/mnjggcdmjocbbbhaepdhchncahnbgone"><img src="https://img.shields.io/chrome-web-store/users/mnjggcdmjocbbbhaepdhchncahnbgone?label=Chome%20Users" alt="Badge"></img></a>
<a href="https://chrome.google.com/webstore/detail/mnjggcdmjocbbbhaepdhchncahnbgone"><img src="https://img.shields.io/chrome-web-store/users/mnjggcdmjocbbbhaepdhchncahnbgone?label=Chrome%20Users" alt="Badge"></img></a>
<a href="https://sponsor.ajay.app/stats"><img src="https://img.shields.io/badge/dynamic/json?label=Sponsors%20Submitted&query=totalSubmissions&suffix=%20sponsors&url=http%3A%2F%2Fsponsor.ajay.app%2Fapi%2FgetTotalStats&color=darkred" alt="Badge"></img></a>
<a href="https://sponsor.ajay.app/stats"><img src="https://img.shields.io/badge/dynamic/json?label=Contributing%20Users&query=userCount&url=http%3A%2F%2Fsponsor.ajay.app%2Fapi%2FgetTotalStats&color=darkblue" alt="Badge"></img></a>
<a href="https://sponsor.ajay.app/stats"><img src="https://img.shields.io/badge/dynamic/json?label=Time%20Saved%20From%20Skips&query=daysSaved&url=http%3A%2F%2Fsponsor.ajay.app%2Fapi%2FgetDaysSavedFormatted&color=darkgreen&suffix=%20days" alt="Badge"></img></a>
@ -32,7 +35,7 @@
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.
Also support Invidio.us.
Also supports Invidio.us.
**Translate:** [![Crowdin](https://badges.crowdin.net/sponsorblock/localized.svg)](https://crowdin.com/project/sponsorblock)

View file

@ -124,5 +124,29 @@
},
"voteOnTime": {
"message": "Гласуване за спонсорства"
},
"savedPeopleFrom": {
"message": "Вие сте помогнали на хора да пропуснат "
},
"viewLeaderboard": {
"message": "Вижте leaderboard-а"
},
"here": {
"message": "тук"
},
"discordAdvert": {
"message": "Елате в официалния Discord сървър за да давате предложения!"
},
"hideThis": {
"message": "Скрий това"
},
"Options": {
"message": "Настройки"
},
"showButtons": {
"message": "Показване на бутоните в YouTube Player-а"
},
"hideButtons": {
"message": "Скриване на бутоните в YouTube Player-а"
}
}

View file

@ -33,11 +33,17 @@
"message": "gesponsorter Inhalt"
},
"Segments": {
"message": "gesponsorte Inhalte"
"message": "gesponserten Inhalten"
},
"upvoteButtonInfo": {
"message": "Diesen Beitrag aufwerten"
},
"reportButtonTitle": {
"message": "Melden"
},
"reportButtonInfo": {
"message": "Beitrag als unzulässig melden."
},
"Dismiss": {
"message": "Abbrechen"
},
@ -98,6 +104,9 @@
"voted": {
"message": "Abgestimmt!"
},
"serverDown": {
"message": "Der Server ist scheinbar offline. Bitte unverzüglich dem Entwickler melden."
},
"connectionError": {
"message": "Ein Verbindungsfehler ist aufgetreten. Fehlermeldung: "
},
@ -501,6 +510,9 @@
"category_interaction_short": {
"message": "Interaktions-Erinnerung"
},
"category_selfpromo": {
"message": "Unbezahlt/Eigenwerbung"
},
"category_selfpromo_description": {
"message": "Ähnlich wie bei \"Sponsor\" mit Ausnahme von unbezahlten oder Selbstpromotion. Dies beinhaltet Abschnitte über Waren, Spenden oder Informationen darüber, mit wem sie zusammengearbeitet haben."
},
@ -596,6 +608,9 @@
"nonMusicCategoryOnMusic": {
"message": "Dieses Video ist als Musik kategorisiert. Sind Sie sicher, dass Sie Segmente mit Nicht-Musikkategorien einreichen möchten? Wenn dieses Video nicht wirklich Musik ist, sollten Sie dieses Segment nicht einreichen. Bitte lesen Sie die Richtlinien, wenn Sie verwirrt sind."
},
"multipleSegments": {
"message": "Mehrere Segmente"
},
"guidelines": {
"message": "Richtlinien"
},

View file

@ -289,6 +289,12 @@
"audioNotificationDescription": {
"message": "Audio notification on skip will play a sound whenever a sponsor 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 have skipped "
},

View file

@ -81,10 +81,10 @@
"message": "Êtes-vous certain(e) de vouloir supprimer vos soumissions ?\n\n"
},
"Unknown": {
"message": "Une erreur s'est produite lors de la soumission, veuillez ré-essayer plus tard."
"message": "Une erreur s'est produite lors de la soumission, veuillez réessayer plus tard."
},
"sponsorFound": {
"message": "Les messages commerciaux pour cette vidéo sont déjà dans notre base de donnée !"
"message": "Les messages commerciaux pour cette vidéo sont déjà dans notre base de données !"
},
"sponsor404": {
"message": "Pas de messages commerciaux trouvés"
@ -168,10 +168,10 @@
"message": "Soumettre les temps"
},
"publicStats": {
"message": "Affiché sur le classement public pour montrer vos contributions. Voir sur"
"message": "Votre pseudo est inscrit dans le classement public pour afficher vos contributions. Le consulter"
},
"setUsername": {
"message": "Choisir pseudo"
"message": "Choisir un pseudonyme"
},
"discordAdvert": {
"message": "Rejoignez le serveur Discord officiel pour toutes suggestions ou remarques!"
@ -297,7 +297,7 @@
"message": "Vous avez passé "
},
"youHaveSaved": {
"message": "Vous avez économisé "
"message": "Vous vous êtes économisé "
},
"minLower": {
"message": "minute"
@ -342,13 +342,13 @@
"message": "Passage automatique"
},
"showSkipNotice": {
"message": "Afficher l'avis après le passage d'un sponsor"
"message": "Notifier après qu'un sponsor ait été sauté"
},
"keybindCurrentlySet": {
"message": ". Il est actuellement réglé sur :"
},
"supportInvidious": {
"message": "Soutenir Invidious"
"message": "Supporter Invidious"
},
"supportInvidiousDescription": {
"message": "Invidious (invidio.us) est un client tiers pour YouTube. Vous devez accepter des permissions supplémentaires pour activer son support. Cette fonctionnalité ne fonctionne pas en mode incognito sur Chrome et les autres variantes de Chromium."
@ -483,18 +483,48 @@
"category_sponsor": {
"message": "Message commercial"
},
"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": "Générique d'introduction"
},
"category_intro_description": {
"message": "Introductions animées qui sont récurrentes ou qui n'ont pas de valeur ajoutée directe dans la série. Ne doit pas être utilisé pour les vidéos musicales."
},
"category_intro_short": {
"message": "Introduction"
},
"category_outro": {
"message": "Générique de fin"
},
"category_outro_description": {
"message": "Générique de fin ou quand les fiches de fin de vidéo apparaissent. Ne pas utiliser pour les conclusions orales. Ne doit pas inclure de contenu utile. Ne pas utiliser sur les vidéos de musique."
},
"category_interaction": {
"message": "Rappel d'interaction (abonnement)"
},
"category_interaction_description": {
"message": "Lorsqu'il y a un bref rappel pour liker, s'abonner ou les follow parmi le contenu. Si le message est long ou porte sur quelque chose de spécifique, cela devrait plutôt être classé comme une autopromotion."
},
"category_interaction_short": {
"message": "Rappel d'interaction"
},
"category_selfpromo": {
"message": "Non rémunéré/autopromotion"
},
"category_selfpromo_description": {
"message": "Semblable au \"sponsor\", excepté pour la promotion non rémunérée ou l'auto-promotion. Cela inclut les marchandises, les dons et les informations sur leurs collaborateurs."
},
"category_music_offtopic": {
"message": "Musique : Segment non-musicale"
},
"category_music_offtopic_description": {
"message": "A utiliser uniquement dans les vidéos musicales. Cela inclut les introductions ou les fins dans les vidéos."
},
"category_music_offtopic_short": {
"message": "Hors musique"
},
"category_livestream_messages": {
"message": "Stream : lecture de dons et messages"
},
@ -507,6 +537,23 @@
"showOverlay": {
"message": "Afficher dans la barre de progression"
},
"colorFormatIncorrect": {
"message": "Votre couleur est mal formatée. Il devrait s'agir d'un code hexadécimal à 3 ou 6 chiffres avec un signe numérique au début."
},
"previewColor": {
"message": "Couleur en mode aperçu",
"description": "Referring to submissions that have not been sent to the server yet."
},
"seekBarColor": {
"message": "Couleur dans la barre de progression"
},
"category": {
"message": "Catégorie"
},
"skipOption": {
"message": "Option de saut",
"description": "Used on the options page to describe the ways to skip the segment (auto skip, manual, etc.)"
},
"enableTestingServer": {
"message": "Activer le serveur de test bêta"
},
@ -560,5 +607,24 @@
},
"multipleSegments": {
"message": "Plusieurs segments"
},
"guidelines": {
"message": "Instructions"
},
"readTheGuidelines": {
"message": "Lisez les instructions !!",
"description": "Show the first time they submit or if they are \"high risk\""
},
"categoryUpdate1": {
"message": "Les catégories sont là !"
},
"categoryUpdate2": {
"message": "Ouvrir les options pour sauter les intros, outros, marchandises, etc."
},
"unsubmittedWarning": {
"message": "Notification de segments non soumis"
},
"unsubmittedWarningDescription": {
"message": "Envoyer une notification lorsque vous quittez une vidéo avec des segments qui ne sont pas téléversés"
}
}

View file

@ -1,4 +1,8 @@
{
"Name": {
"message": "SponsorBlock",
"description": "Name of the extension."
},
"Loading": {
"message": "Betöltés..."
},

View file

@ -11,15 +11,39 @@
"message": "Sla sponsoring over op YouTube video's. Rapporteer sponsors van video's die je bekijkt om tijd van anderen te besparen.",
"description": "Description of the extension."
},
"400": {
"message": "Server zegt dat het verzoek ongeldig is"
},
"429": {
"message": "Je hebt te veel sponsortijden voor deze video doorgegeven, weet je zeker dat het er zo veel zijn?"
},
"409": {
"message": "Dit is al een keer ingediend"
},
"channelWhitelisted": {
"message": "Kanaal gewhitelist!"
},
"Sponsor": {
"message": "sponsor"
},
"Sponsors": {
"message": "sponsoren"
},
"Segment": {
"message": "Sponsor segment"
},
"Segments": {
"message": "Sponsor segmenten"
},
"upvoteButtonInfo": {
"message": "Stem op deze indiening"
},
"reportButtonTitle": {
"message": "Melden"
},
"reportButtonInfo": {
"message": "Rapporteer deze indiening als onjuist."
},
"Dismiss": {
"message": "Negeren"
},
@ -35,9 +59,21 @@
"Hide": {
"message": "Nooit weergeven"
},
"hitGoBack": {
"message": "Druk op unskip om naar waar je vandaan komt te gaan."
},
"unskip": {
"message": "Unskip"
},
"reskip": {
"message": "Reskip"
},
"paused": {
"message": "Gepauzeerd"
},
"manualPaused": {
"message": "Timer gestopt"
},
"clearThis": {
"message": "Weet je zeker dat je dit formulier wilt wissen?\n\n"
},

View file

@ -72,7 +72,7 @@
"message": "Tem certeza que quer limpar isso?\n\n"
},
"Unknown": {
"message": "Teve um erro ao enviar seus segmentos, tente novamente depois."
"message": "Houve um erro ao enviar seus segmentos, tente novamente mais tarde."
},
"sponsorFound": {
"message": "Os patrocinadores desse vídeo estão no banco de dados!"
@ -87,7 +87,7 @@
"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 feche esse popup e abra de novo."
"message": "Nenhum vídeo do YouTube foi encontrado nesta aba. Se você sabe que esta é uma aba do YouTube, feche este pop-up e abra-o novamente. Se isso não funcionar, tente recarregar a aba."
},
"success": {
"message": "Sucesso!"
@ -96,13 +96,13 @@
"message": "Votado!"
},
"connectionError": {
"message": "Um erro de conexão aconteceu: Código: "
"message": "Ocorreu um erro de conexão. Código de erro: "
},
"wantToSubmit": {
"message": "Quer enviar os segmentos para o vídeo de ID"
},
"leftTimes": {
"message": "Parece que você se esqueceu de enviar alguns segmentos. Volta pra página para os enviar (não foram deletados)."
"message": "Parece que você se esqueceu de enviar alguns segmentos. Volte para aquela página para enviá-los (eles não foram deletados)."
},
"clearTimes": {
"message": "Apagar intervalos dos patrocínios"
@ -111,25 +111,25 @@
"message": "Abrir o Popup SponsorBlock"
},
"SubmitTimes": {
"message": "Submeter intervalos dos patrocínios"
"message": "Enviar intervalos de patrocínios"
},
"submitCheck": {
"message": "Tem a certeza que pretende submeter?"
"message": "Você tem certeza que deseja enviar isto?"
},
"whitelistChannel": {
"message": "Meter canal na Whitelist"
"message": "Colocar canal na lista branca"
},
"removeFromWhitelist": {
"message": "Remover canal da Whitelist"
"message": "Remover canal da lista branca"
},
"voteOnTime": {
"message": "Vote num intervalo de patrocínio"
},
"recordTimes": {
"message": "Registe um intervalo de patrocínio"
"message": "Grave os intervalos de um patrocínio"
},
"soFarUHSubmited": {
"message": "Até agora submeteu"
"message": "Até agora, você já enviou"
},
"savedPeopleFrom": {
"message": "Poupaste a outros de "
@ -141,10 +141,10 @@
"message": "aqui"
},
"recordTimesDescription": {
"message": "Clique no botão abaixo quando o patrocínio começar e quando terminar para registrar e submetê-lo à base de dados."
"message": "Clique no botão abaixo quando o patrocínio começa e termina para gravá-lo na base de dados."
},
"popupHint": {
"message": "Dica: Aperte a tecla ; enquanto reproduzir o vídeo para registar o começo/fim de um patrocínio e \" para enviar. (Essa configuração pode ser mudada em opções.)"
"message": "Dica: Aperte a tecla ponto e vírgula (;) com a janela focada em um vídeo para reportar o começo/fim de um patrocínio e aspas (\") para enviar. (Esta configuração pode ser mudada nas opções.)"
},
"lastTimes": {
"message": "Últimos Intervalos de Patrocínios Seleciados"
@ -159,10 +159,10 @@
"message": "Isso é usado na página pública de estatísticas que mostra o quanto você já contríbuíu. Veja-a"
},
"setUsername": {
"message": "Criar nomde de utilizador"
"message": "Definir nome de usuário"
},
"discordAdvert": {
"message": "Junte-se ao discord oficial para sugerir dicas e sugestões!"
"message": "Junte-se ao servidor do discord oficial para dar dicas e sugestões!"
},
"hideThis": {
"message": "Esconder isto"

View file

@ -1,4 +1,8 @@
{
"Name": {
"message": "SponsorBlock",
"description": "Name of the extension."
},
"fullName": {
"message": "SponsorBlock för YouTube - Hoppa över sponsring",
"description": "Name of the extension."
@ -19,6 +23,9 @@
"channelWhitelisted": {
"message": "Kanal vitlistad!"
},
"Sponsor": {
"message": "sponsor"
},
"Sponsors": {
"message": "sponsorer"
},
@ -31,6 +38,9 @@
"reportButtonTitle": {
"message": "Rapportera"
},
"reportButtonInfo": {
"message": "Rapportera det här segmentet som inkorrekt."
},
"Dismiss": {
"message": "Avfärda"
},
@ -58,6 +68,9 @@
"paused": {
"message": "Pausad"
},
"manualPaused": {
"message": "Timern stoppad"
},
"confirmMSG": {
"message": "Klicka på infoknappen eller öppna popup-rutan genom att klicka på tilläggets ikon i hörnet uppe till höger för att redigera eller ta bort inviduella värden."
},
@ -88,6 +101,9 @@
"voted": {
"message": "Röstat!"
},
"serverDown": {
"message": "Det verkar som att servern är nere. Kontakta utvecklaren omedelbart."
},
"connectionError": {
"message": "Anslutningsfel. Felkod: "
},
@ -130,6 +146,9 @@
"viewLeaderboard": {
"message": "Se leaderboarden"
},
"here": {
"message": "här"
},
"recordTimesDescription": {
"message": "Klicka på knappen nedan när sponsormeddelandet börjar och slutar för att spela in och rapportera till databasen."
},
@ -253,6 +272,9 @@
"skip": {
"message": "Hoppa över"
},
"skipped": {
"message": "Skippat"
},
"disableAutoSkip": {
"message": "Avaktivera Hoppa Över Automatiskt"
},
@ -325,6 +347,9 @@
"supportInvidious": {
"message": "Stöd Invidious"
},
"supportInvidiousDescription": {
"message": "Invidious (invidio.us) är en tredjeparts YouTube-klient. För att aktivera stöd måste du acceptera de extra behörigheterna. Detta kommer INTE att fungera i incognito i Chrome och andra Cromium-varianter."
},
"optionsInfo": {
"message": "Aktivera Invidious stöd, avaktivera hoppa över automatiskt, dölj knappar och mer."
},
@ -455,6 +480,21 @@
"category_sponsor": {
"message": "Sponsormeddelande"
},
"category_intro": {
"message": "Intro-animation"
},
"category_intro_description": {
"message": "Intro-animationer som är återkommande i serien eller inte ger direkt värde. Detta bör inte användas på musikvideor."
},
"category_intro_short": {
"message": "Intro"
},
"category_music_offtopic_description": {
"message": "Endast för användning i musikvideor. Detta inkluderar intros och outros i musikvideor."
},
"category_music_offtopic_short": {
"message": "Icke-musik"
},
"disable": {
"message": "Avaktivera"
},
@ -464,6 +504,9 @@
"showOverlay": {
"message": "Visa Lager Ovanpå Spelare"
},
"category": {
"message": "Kategori"
},
"enableTestingServer": {
"message": "Aktivera Server För Betatestning"
},
@ -482,6 +525,9 @@
"bracketEnd": {
"message": "(Slut)"
},
"hiddenDueToDuration": {
"message": "dold: för kort"
},
"channelDataNotFound": {
"message": "Kanal-ID är inte inladdat än."
},
@ -490,5 +536,24 @@
},
"itCouldBeAdblockerIssue": {
"message": "Om detta fortsätter att inträffa, kan orsaken vara din annonsblockerare. Vänligen kontrollera https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests"
},
"downvoteDescription": {
"message": "Fel timing"
},
"incorrectCategory": {
"message": "Fel kategori"
},
"nonMusicCategoryOnMusic": {
"message": "Den här videon är kategoriserad som musik. Är du säker på att du vill skicka in segment med icke-musikkategorier? Om denna video faktiskt är musik, bör du inte skicka in detta segment. Vänligen läs riktlinjerna om du är förvirrad."
},
"multipleSegments": {
"message": "Flera segment"
},
"guidelines": {
"message": "Riktlinjer"
},
"readTheGuidelines": {
"message": "Läs riktlinjerna!!",
"description": "Show the first time they submit or if they are \"high risk\""
}
}

View file

@ -268,6 +268,23 @@
<div class="small-description">__MSG_audioNotificationDescription__</div>
</div>
<br/>
<br/>
<div option-type="toggle" sync-option="showTimeWithSkips">
<label class="switch-container" label-name="__MSG_showTimeWithSkips__">
<label class="switch">
<input type="checkbox" checked>
<span class="slider round"></span>
</label>
</label>
<br/>
<br/>
<div class="small-description">__MSG_showTimeWithSkipsDescription__</div>
</div>
<br/>
<br/>

View file

@ -16,6 +16,7 @@ interface SBConfig {
skipCount: number,
sponsorTimesContributed: number,
submissionCountSinceCategories: number, // New count used to show the "Read The Guidelines!!" message
showTimeWithSkips: boolean,
unsubmittedWarning: boolean,
disableSkipping: boolean,
trackViewCount: boolean,
@ -136,6 +137,7 @@ var Config: SBObject = {
skipCount: 0,
sponsorTimesContributed: 0,
submissionCountSinceCategories: 0,
showTimeWithSkips: true,
unsubmittedWarning: true,
disableSkipping: false,
trackViewCount: true,
@ -448,4 +450,4 @@ function addDefaults() {
// Sync config
setupConfig();
export default Config;
export default Config;

View file

@ -801,7 +801,7 @@ function updatePreviewBar() {
if (localSponsorTimes == null) localSponsorTimes = [];
let allSponsorTimes = localSponsorTimes.concat(sponsorTimesSubmitting);
//create an array of the sponsor types
let types = [];
for (let i = 0; i < localSponsorTimes.length; i++) {
@ -818,6 +818,10 @@ function updatePreviewBar() {
previewBar.set(utils.getSegmentsFromSponsorTimes(allSponsorTimes), types, video.duration)
if (Config.config.showTimeWithSkips) {
showTimeWithoutSkips(allSponsorTimes);
}
//update last video id
lastPreviewBarUpdate = sponsorVideoID;
}
@ -1586,3 +1590,36 @@ function updateAdFlag() {
updateVisibilityOfPlayerControlsButton();
}
}
function showTimeWithoutSkips(allSponsorTimes): void {
let skipDuration = 0;
// Calculate skipDuration based from the segments in the preview bar
for (let i = 0; i < allSponsorTimes.length; i++) {
// If an end time exists
if (allSponsorTimes[i].segment[1]) {
skipDuration += allSponsorTimes[i].segment[1] - allSponsorTimes[i].segment[0];
}
}
// YouTube player time display
let display = document.getElementsByClassName("ytp-time-display notranslate")[0];
if (display === undefined) return
let formatedTime = utils.getFormattedTime(video.duration - skipDuration);
const durationID = "sponsorBlockDurationAfterSkips";
let duration = document.getElementById(durationID);
// Create span if needed
if(duration === null) {
duration = document.createElement('span');
duration.id = durationID;
duration.classList.add("ytp-time-duration");
display.appendChild(duration);
}
duration.innerText = (skipDuration <= 0 || isNaN(skipDuration)) ? "" : " ("+formatedTime+")";
}

View file

@ -338,7 +338,7 @@ class Utils {
secondsNum = Math.floor(secondsNum);
}
let secondsDisplay: string = String(secondsNum.toFixed(3));
let secondsDisplay: string = String(precise ? secondsNum.toFixed(3) : secondsNum);
if (secondsNum < 10) {
//add a zero