mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2024-11-10 01:01:55 +01:00
Merge branch 'master' of github.com:ajayyy/SponsorBlock into fosefx-eslint
This commit is contained in:
commit
c3f32aae26
26 changed files with 1220 additions and 1003 deletions
|
@ -97,6 +97,7 @@ The awesome [Invidious API](https://github.com/omarroth/invidious/wiki/API) was
|
||||||
|
|
||||||
Originally forked from [YTSponsorSkip](https://github.com/NDevTK/YTSponsorSkip), but zero code remains.
|
Originally forked from [YTSponsorSkip](https://github.com/NDevTK/YTSponsorSkip), but zero code remains.
|
||||||
|
|
||||||
Some icons made by <a href="https://www.flaticon.com/authors/gregor-cresnar" title="Gregor Cresnar">Gregor Cresnar</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> and are licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a>
|
Icons made by:
|
||||||
|
* <a href="https://www.flaticon.com/authors/gregor-cresnar" title="Gregor Cresnar">Gregor Cresnar</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> and are licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a>
|
||||||
Some icons made by <a href="https://www.flaticon.com/authors/freepik" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> are licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a>
|
* <a href="https://www.flaticon.com/authors/freepik" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a> and are licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a>
|
||||||
|
* <a href="https://iconmonstr.com/about/#creator">Alexander Kahlkopf</a> from <a href="https://iconmonstr.com/">iconmonstr.com</a> and are licensed by <a href="https://iconmonstr.com/license/">iconmonstr License</a>
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
"icons/PlayerStopIconSponsorBlocker256px.png",
|
"icons/PlayerStopIconSponsorBlocker256px.png",
|
||||||
"icons/PlayerUploadIconSponsorBlocker256px.png",
|
"icons/PlayerUploadIconSponsorBlocker256px.png",
|
||||||
"icons/PlayerUploadFailedIconSponsorBlocker256px.png",
|
"icons/PlayerUploadFailedIconSponsorBlocker256px.png",
|
||||||
|
"icons/settings.svg",
|
||||||
|
"icons/pencil.svg",
|
||||||
|
"icons/check.svg",
|
||||||
"icons/upvote.png",
|
"icons/upvote.png",
|
||||||
"icons/downvote.png",
|
"icons/downvote.png",
|
||||||
"icons/thumbs_down.svg",
|
"icons/thumbs_down.svg",
|
||||||
|
|
6
package-lock.json
generated
6
package-lock.json
generated
|
@ -4129,9 +4129,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bl": {
|
"bl": {
|
||||||
"version": "1.2.2",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
|
||||||
"integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
|
"integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"readable-stream": "^2.3.5",
|
"readable-stream": "^2.3.5",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"fullName": {
|
"fullName": {
|
||||||
"message": "SponsorBlock pro YouTube - Přeskoč Sponzorství",
|
"message": "SponsorBlock pro YouTube - Přeskoč sponzorství",
|
||||||
"description": "Name of the extension."
|
"description": "Name of the extension."
|
||||||
},
|
},
|
||||||
"Description": {
|
"Description": {
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
"message": "segment"
|
"message": "segment"
|
||||||
},
|
},
|
||||||
"Segments": {
|
"Segments": {
|
||||||
"message": "segmenty"
|
"message": "segmentů"
|
||||||
},
|
},
|
||||||
"upvoteButtonInfo": {
|
"upvoteButtonInfo": {
|
||||||
"message": "Hlasovat pro tento příspěvek"
|
"message": "Hlasovat pro tento příspěvek"
|
||||||
|
@ -275,7 +275,7 @@
|
||||||
"message": "Přeskočit {0}?"
|
"message": "Přeskočit {0}?"
|
||||||
},
|
},
|
||||||
"skipped": {
|
"skipped": {
|
||||||
"message": "Přeskočeno"
|
"message": "- přeskočeno"
|
||||||
},
|
},
|
||||||
"disableAutoSkip": {
|
"disableAutoSkip": {
|
||||||
"message": "Zakázat automatické přeskočení"
|
"message": "Zakázat automatické přeskočení"
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{
|
{
|
||||||
|
"fullName": {
|
||||||
|
"message": "SponsorBlock for YouTube - Skip Sponsorships",
|
||||||
|
"description": "Name of the extension."
|
||||||
|
},
|
||||||
"Segment": {
|
"Segment": {
|
||||||
"message": "τμήμα"
|
"message": "τμήμα"
|
||||||
},
|
},
|
||||||
|
@ -67,9 +71,6 @@
|
||||||
"skip": {
|
"skip": {
|
||||||
"message": "Παράκαμψη"
|
"message": "Παράκαμψη"
|
||||||
},
|
},
|
||||||
"skip_category": {
|
|
||||||
"message": "Παράκαμψη {0}?"
|
|
||||||
},
|
|
||||||
"skipped": {
|
"skipped": {
|
||||||
"message": "Παραλείφθηκε"
|
"message": "Παραλείφθηκε"
|
||||||
},
|
},
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
"message": "Segment Ends Now"
|
"message": "Segment Ends Now"
|
||||||
},
|
},
|
||||||
"noVideoID": {
|
"noVideoID": {
|
||||||
"message": "No YouTube video found at this tab. If you know this is a YouTube tab, close this popup and open it again. If that does not work, try reloading the tab."
|
"message": "No YouTube video found.\nIf this is incorrect, refresh the tab."
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"message": "Success!"
|
"message": "Success!"
|
||||||
|
@ -122,31 +122,35 @@
|
||||||
"message": "Are you sure you want to submit this?"
|
"message": "Are you sure you want to submit this?"
|
||||||
},
|
},
|
||||||
"whitelistChannel": {
|
"whitelistChannel": {
|
||||||
"message": "Whitelist Channel"
|
"message": "Add to whitelist"
|
||||||
},
|
},
|
||||||
"removeFromWhitelist": {
|
"removeFromWhitelist": {
|
||||||
"message": "Remove Channel From Whitelist"
|
"message": "Remove from whitelist"
|
||||||
},
|
},
|
||||||
"voteOnTime": {
|
"voteOnTime": {
|
||||||
"message": "Vote On A Segment"
|
"message": "Vote On A Segment"
|
||||||
},
|
},
|
||||||
"soFarUHSubmited": {
|
"Submissions": {
|
||||||
"message": "So far, you've submitted"
|
"message": "Submissions"
|
||||||
},
|
},
|
||||||
"savedPeopleFrom": {
|
"savedPeopleFrom": {
|
||||||
"message": "You have saved people from "
|
"message": "You've saved people from "
|
||||||
},
|
},
|
||||||
"viewLeaderboard": {
|
"viewLeaderboard": {
|
||||||
"message": "View the leaderboard"
|
"message": "Leaderboard"
|
||||||
},
|
},
|
||||||
"here": {
|
"here": {
|
||||||
"message": "here"
|
"message": "here"
|
||||||
},
|
},
|
||||||
"recordTimesDescription": {
|
"recordTimesDescription": {
|
||||||
"message": "Click the button below when the segment starts and ends to record and submit it to the database."
|
"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": {
|
"popupHint": {
|
||||||
"message": "Hint: Press the semicolon key while focused on a video to report the start/end of a segment and quote to submit. (This can be changed in the options)"
|
"message": "Hint: You can setup keybinds for submitting in the options"
|
||||||
},
|
},
|
||||||
"clearTimesButton": {
|
"clearTimesButton": {
|
||||||
"message": "Clear Times"
|
"message": "Clear Times"
|
||||||
|
@ -157,6 +161,9 @@
|
||||||
"publicStats": {
|
"publicStats": {
|
||||||
"message": "This is used on the public stats page to show off how much you've contributed. See it"
|
"message": "This is used on the public stats page to show off how much you've contributed. See it"
|
||||||
},
|
},
|
||||||
|
"Username": {
|
||||||
|
"message": "Username"
|
||||||
|
},
|
||||||
"setUsername": {
|
"setUsername": {
|
||||||
"message": "Set Username"
|
"message": "Set Username"
|
||||||
},
|
},
|
||||||
|
@ -253,10 +260,10 @@
|
||||||
"message": "Connection Timeout. Check your internet connection. If your internet is working, the server is probably overloaded or down."
|
"message": "Connection Timeout. Check your internet connection. If your internet is working, the server is probably overloaded or down."
|
||||||
},
|
},
|
||||||
"disableSkipping": {
|
"disableSkipping": {
|
||||||
"message": "Disable SponsorBlock"
|
"message": "Skipping is enabled"
|
||||||
},
|
},
|
||||||
"enableSkipping": {
|
"enableSkipping": {
|
||||||
"message": "Enable SponsorBlock"
|
"message": "Skipping is disabled"
|
||||||
},
|
},
|
||||||
"yourWork": {
|
"yourWork": {
|
||||||
"message": "Your Work",
|
"message": "Your Work",
|
||||||
|
@ -296,7 +303,7 @@
|
||||||
"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\"."
|
"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": {
|
"youHaveSkipped": {
|
||||||
"message": "You have skipped "
|
"message": "You've skipped "
|
||||||
},
|
},
|
||||||
"youHaveSaved": {
|
"youHaveSaved": {
|
||||||
"message": "You have saved yourself "
|
"message": "You have saved yourself "
|
||||||
|
@ -314,10 +321,10 @@
|
||||||
"message": "hours"
|
"message": "hours"
|
||||||
},
|
},
|
||||||
"youHaveSavedTime": {
|
"youHaveSavedTime": {
|
||||||
"message": "You have saved people"
|
"message": "You've saved people"
|
||||||
},
|
},
|
||||||
"youHaveSavedTimeEnd": {
|
"youHaveSavedTimeEnd": {
|
||||||
"message": " of their lives."
|
"message": " of their lives"
|
||||||
},
|
},
|
||||||
"statusReminder": {
|
"statusReminder": {
|
||||||
"message": "Check status.sponsor.ajay.app for server status."
|
"message": "Check status.sponsor.ajay.app for server status."
|
||||||
|
@ -634,5 +641,8 @@
|
||||||
},
|
},
|
||||||
"unsubmittedWarningDescription": {
|
"unsubmittedWarningDescription": {
|
||||||
"message": "Send a notification when you leave a video with segments that are not uploaded"
|
"message": "Send a notification when you leave a video with segments that are not uploaded"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"message": "Help"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -209,7 +209,7 @@
|
||||||
"message": "En el lugar de solicitar segmentos del servidor usando el videoID, se envían los primeros 4 caracteres del hash del videoID. Este servidor devolverá los datos de todos los vídeos con hashes similares."
|
"message": "En el lugar de solicitar segmentos del servidor usando el videoID, se envían los primeros 4 caracteres del hash del videoID. Este servidor devolverá los datos de todos los vídeos con hashes similares."
|
||||||
},
|
},
|
||||||
"enableRefetchWhenNotFound": {
|
"enableRefetchWhenNotFound": {
|
||||||
"message": "Actualizar segmentos en nuevos vídeos"
|
"message": "Actualizar Segmentos En Nuevos Vídeos"
|
||||||
},
|
},
|
||||||
"whatRefetchWhenNotFound": {
|
"whatRefetchWhenNotFound": {
|
||||||
"message": "Si el video es nuevo, y no hay segmentos encontrados, seguirá recuperándose cada pocos minutos mientras veas."
|
"message": "Si el video es nuevo, y no hay segmentos encontrados, seguirá recuperándose cada pocos minutos mientras veas."
|
||||||
|
@ -272,7 +272,7 @@
|
||||||
"message": "Omitir"
|
"message": "Omitir"
|
||||||
},
|
},
|
||||||
"skip_category": {
|
"skip_category": {
|
||||||
"message": "¿Saltarse {0}?"
|
"message": "¿Saltar {0}?"
|
||||||
},
|
},
|
||||||
"skipped": {
|
"skipped": {
|
||||||
"message": "Omitido"
|
"message": "Omitido"
|
||||||
|
|
|
@ -252,9 +252,6 @@
|
||||||
"skip": {
|
"skip": {
|
||||||
"message": "Ohita"
|
"message": "Ohita"
|
||||||
},
|
},
|
||||||
"skip_category": {
|
|
||||||
"message": "Ohita {0}?"
|
|
||||||
},
|
|
||||||
"skipped": {
|
"skipped": {
|
||||||
"message": "Ohitettu"
|
"message": "Ohitettu"
|
||||||
},
|
},
|
||||||
|
@ -268,7 +265,7 @@
|
||||||
"message": "Äänellinen Ilmoitus Ohitettaessa"
|
"message": "Äänellinen Ilmoitus Ohitettaessa"
|
||||||
},
|
},
|
||||||
"audioNotificationDescription": {
|
"audioNotificationDescription": {
|
||||||
"message": "Ääni-ilmoitus ohituksessa toistaa äänen, kun segmentti ohitetaan. Jos pois päältä (tai automaattinen ohitus on pois käytöstä), ääntä ei soiteta."
|
"message": "Ääni-ilmoitus ohittaessa toistaa äänen kun segmentti ohitetaan. Jos asetus on pois päältä (tai automaattinen ohitus on pois käytöstä), ääntä ei soiteta."
|
||||||
},
|
},
|
||||||
"youHaveSkipped": {
|
"youHaveSkipped": {
|
||||||
"message": "Olet ohittanut "
|
"message": "Olet ohittanut "
|
||||||
|
@ -295,7 +292,7 @@
|
||||||
"message": " heidän elämästään."
|
"message": " heidän elämästään."
|
||||||
},
|
},
|
||||||
"statusReminder": {
|
"statusReminder": {
|
||||||
"message": "Tarkista status.sponsor.ajay.app palvelimen tila."
|
"message": "Tarkista palvelimen tila osoitteessa status.sponsor.ajay.app."
|
||||||
},
|
},
|
||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "Tuo/vie sinun UserID:si"
|
"message": "Tuo/vie sinun UserID:si"
|
||||||
|
@ -346,7 +343,7 @@
|
||||||
"message": "Vähimmäiskesto (sekuntia):"
|
"message": "Vähimmäiskesto (sekuntia):"
|
||||||
},
|
},
|
||||||
"minDurationDescription": {
|
"minDurationDescription": {
|
||||||
"message": "Segmentit, jotka ovat asetettua arvoa lyhyempiä, ei tulla ohittamaan tai näytetä soittimessa."
|
"message": "Segmenttejä jotka ovat asetettua arvoa lyhyempiä ei ohiteta tai näytetä soittimessa."
|
||||||
},
|
},
|
||||||
"showUploadButton": {
|
"showUploadButton": {
|
||||||
"message": "Näytä lähetä-painike"
|
"message": "Näytä lähetä-painike"
|
||||||
|
@ -358,7 +355,7 @@
|
||||||
"message": "SponsorBlock Palvelimen Osoite"
|
"message": "SponsorBlock Palvelimen Osoite"
|
||||||
},
|
},
|
||||||
"customServerAddressDescription": {
|
"customServerAddressDescription": {
|
||||||
"message": "Osoite jota SponsorBlock käyttää lähettääkseen kutsuja palvelimelle.\nEllei sinulla ole omaa palvelin instanssia, tätä ei pitäisi muuttaa."
|
"message": "Osoite jota SponsorBlock käyttää lähettääkseen kutsuja palvelimelle.\nEllei sinulla ole omaa palvelininstanssia, tätä ei pitäisi muuttaa."
|
||||||
},
|
},
|
||||||
"save": {
|
"save": {
|
||||||
"message": "Tallenna"
|
"message": "Tallenna"
|
||||||
|
@ -373,7 +370,7 @@
|
||||||
"message": "Oletko varma, että haluat nollata tämän?"
|
"message": "Oletko varma, että haluat nollata tämän?"
|
||||||
},
|
},
|
||||||
"unlistedCheck": {
|
"unlistedCheck": {
|
||||||
"message": "Ohita Listaamattomat/Yksityiset Videot"
|
"message": "Ohita listaamattomat/yksityiset videot"
|
||||||
},
|
},
|
||||||
"mobileUpdateInfo": {
|
"mobileUpdateInfo": {
|
||||||
"message": "m.youtube.com-osoitetta tuetaan nyt"
|
"message": "m.youtube.com-osoitetta tuetaan nyt"
|
||||||
|
@ -428,7 +425,7 @@
|
||||||
"message": "Sponsori"
|
"message": "Sponsori"
|
||||||
},
|
},
|
||||||
"category_intro": {
|
"category_intro": {
|
||||||
"message": "Väli/Intro Animaatio"
|
"message": "Väli- tai introanimaatio"
|
||||||
},
|
},
|
||||||
"category_intro_description": {
|
"category_intro_description": {
|
||||||
"message": "Aikaväli ilman varsinaista sisältöä. Voi olla tauko, staattinen kehys, toistuva animaatio. Tätä ei pitäisi käyttää siirtymisiin, jotka sisältävät tietoa."
|
"message": "Aikaväli ilman varsinaista sisältöä. Voi olla tauko, staattinen kehys, toistuva animaatio. Tätä ei pitäisi käyttää siirtymisiin, jotka sisältävät tietoa."
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"fullName": {
|
"fullName": {
|
||||||
"message": "SponsorBlock pour YouTube - Supprime les messages commerciaux et publicités intégrées",
|
"message": "SponsorBlock pour YouTube - Supprime les publicités intégrées",
|
||||||
"description": "Name of the extension."
|
"description": "Name of the extension."
|
||||||
},
|
},
|
||||||
"Description": {
|
"Description": {
|
||||||
|
@ -100,6 +100,9 @@
|
||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "Erreur de connexion. Code d'erreur : "
|
"message": "Erreur de connexion. Code d'erreur : "
|
||||||
},
|
},
|
||||||
|
"wantToSubmit": {
|
||||||
|
"message": "Voulez-vous soumettre vos segments pour la vidéo"
|
||||||
|
},
|
||||||
"leftTimes": {
|
"leftTimes": {
|
||||||
"message": "Vous semblez avoir laissé certains segments non soumis. Retournez à cette page pour les soumettre (ils ne sont pas supprimés)."
|
"message": "Vous semblez avoir laissé certains segments non soumis. Retournez à cette page pour les soumettre (ils ne sont pas supprimés)."
|
||||||
},
|
},
|
||||||
|
@ -193,9 +196,31 @@
|
||||||
"whatDeleteButton": {
|
"whatDeleteButton": {
|
||||||
"message": "Il s'agit du bouton qui permet de supprimer tous les segments commerciaux depuis le lecteur YouTube."
|
"message": "Il s'agit du bouton qui permet de supprimer tous les segments commerciaux depuis le lecteur YouTube."
|
||||||
},
|
},
|
||||||
|
"enableViewTracking": {
|
||||||
|
"message": "Activer le suivi du nombre de sauts de segments"
|
||||||
|
},
|
||||||
|
"whatViewTracking": {
|
||||||
|
"message": "Cette fonctionnalité permet de suivre les segments que vous avez sautés pour faire savoir aux utilisateurs à quel point leur soumission a aidé les autres et est utilisée comme donnée avec les votes positifs pour s'assurer que des spams n'entre pas dans la base de données. L'extension envoie un message au serveur chaque fois que vous sautez un segment. Il est à espérer que la plupart des gens ne modifient pas ce paramètre pour que les données sur le nombre d'affichage soient exacts :)"
|
||||||
|
},
|
||||||
|
"enableQueryByHashPrefix": {
|
||||||
|
"message": "Requête par préfixe du hash"
|
||||||
|
},
|
||||||
|
"whatQueryByHashPrefix": {
|
||||||
|
"message": "Au lieu de demander des segments au serveur à l'aide de l'identifiant de la vidéo, les 4 premiers caractères du hash de l'identifiant de la vidéo sont envoyés. Ce serveur renverra les données pour toutes les vidéos ayant des hash similaires."
|
||||||
|
},
|
||||||
|
"enableRefetchWhenNotFound": {
|
||||||
|
"message": "Récupérer les segments sur les nouvelles vidéos"
|
||||||
|
},
|
||||||
|
"whatRefetchWhenNotFound": {
|
||||||
|
"message": "Si la vidéo est nouvelle et qu'aucun segment n'a été trouvé, ils seront réactualisés toutes les quelques minutes pendant le visionnage."
|
||||||
|
},
|
||||||
"showNotice": {
|
"showNotice": {
|
||||||
"message": "Afficher la notification"
|
"message": "Afficher la notification"
|
||||||
},
|
},
|
||||||
|
"longDescription": {
|
||||||
|
"message": "SponsorBlock vous permet de passer les sponsors, les intros, les outros, les rappels d'abonnement et autres parties ennuyeuses des vidéos YouTube. SponsorBlock est une extension de navigateur qui permet à n'importe qui de soumettre les temps de début et de fin des segments sponsorisés et d'autres segments de vidéos YouTube. Une fois qu'une personne a soumis ces informations, toutes les autres personnes possédant cette extension passeront directement les segments sponsorisés. Vous pouvez également sauter les sections non musicales des vidéos musicales.",
|
||||||
|
"description": "Full description of the extension on the store pages."
|
||||||
|
},
|
||||||
"website": {
|
"website": {
|
||||||
"message": "Site web",
|
"message": "Site web",
|
||||||
"description": "Used on Firefox Store Page"
|
"description": "Used on Firefox Store Page"
|
||||||
|
@ -354,6 +379,9 @@
|
||||||
"minDuration": {
|
"minDuration": {
|
||||||
"message": "Durée minimale (en secondes):"
|
"message": "Durée minimale (en secondes):"
|
||||||
},
|
},
|
||||||
|
"minDurationDescription": {
|
||||||
|
"message": "Les segments plus courts que la valeur fixée ne seront pas sautés ou affichés dans le lecteur."
|
||||||
|
},
|
||||||
"shortCheck": {
|
"shortCheck": {
|
||||||
"message": "Le segment suivant est plus court que votre option de durée minimale. Cela pourrait signifier qu'il est déjà soumis, et just ignoré par cette option. Êtes-vous sûr de vouloir soumettre ?"
|
"message": "Le segment suivant est plus court que votre option de durée minimale. Cela pourrait signifier qu'il est déjà soumis, et just ignoré par cette option. Êtes-vous sûr de vouloir soumettre ?"
|
||||||
},
|
},
|
||||||
|
@ -381,9 +409,15 @@
|
||||||
"areYouSureReset": {
|
"areYouSureReset": {
|
||||||
"message": "Voulez-vous vraiment remettre à zéro ?"
|
"message": "Voulez-vous vraiment remettre à zéro ?"
|
||||||
},
|
},
|
||||||
|
"confirmPrivacy": {
|
||||||
|
"message": "La vidéo a été détectée comme étant non répertoriée. Cliquez sur annuler si vous ne voulez pas vérifier les segments sautés."
|
||||||
|
},
|
||||||
"unlistedCheck": {
|
"unlistedCheck": {
|
||||||
"message": "Ignorer les vidéos non listées"
|
"message": "Ignorer les vidéos non listées"
|
||||||
},
|
},
|
||||||
|
"whatUnlistedCheck": {
|
||||||
|
"message": "Ce réglage ralentira légèrement SponsorBlock. Pour sauter des segments, il faut envoyer l'ID de la vidéo au serveur. Si vous craignez que des identifiants de vidéo non répertoriés soient envoyés sur Internet, activez cette option."
|
||||||
|
},
|
||||||
"mobileUpdateInfo": {
|
"mobileUpdateInfo": {
|
||||||
"message": "m.youtube.com est maintenant pris en charge"
|
"message": "m.youtube.com est maintenant pris en charge"
|
||||||
},
|
},
|
||||||
|
@ -455,7 +489,7 @@
|
||||||
"message": "Entracte/Animation d'intro"
|
"message": "Entracte/Animation d'intro"
|
||||||
},
|
},
|
||||||
"category_intro_description": {
|
"category_intro_description": {
|
||||||
"message": "Un intervalle sans réel contenu, comme une pause, une image statique ou une animation répétitive. Ne doit pas être utilisé pour les transitions avec des informations ou pour les vidéos musicales."
|
"message": "Un intervalle sans réel contenu, comme une pause, une image statique ou une animation répétitive. Ne doit pas être utilisé pour les transitions avec des informations."
|
||||||
},
|
},
|
||||||
"category_intro_short": {
|
"category_intro_short": {
|
||||||
"message": "Entracte"
|
"message": "Entracte"
|
||||||
|
@ -464,7 +498,7 @@
|
||||||
"message": "Générique de fin"
|
"message": "Générique de fin"
|
||||||
},
|
},
|
||||||
"category_outro_description": {
|
"category_outro_description": {
|
||||||
"message": "Crédits ou quand les écrans de fin Youtube apparaissent. Pas pour les conclusions qui contiennent des informations."
|
"message": "Crédits ou quand les annotations Youtube de fin apparaissent. Pas pour les conclusions qui contiennent des informations."
|
||||||
},
|
},
|
||||||
"category_interaction": {
|
"category_interaction": {
|
||||||
"message": "Rappel d'interaction (abonnement)"
|
"message": "Rappel d'interaction (abonnement)"
|
||||||
|
@ -565,7 +599,7 @@
|
||||||
"message": "Forcer la vérification du canal avant de passer"
|
"message": "Forcer la vérification du canal avant de passer"
|
||||||
},
|
},
|
||||||
"whatForceChannelCheck": {
|
"whatForceChannelCheck": {
|
||||||
"message": "Par défaut, passer les segments avant même de savoir à quelle chaîne appartient la vidéo. Par défaut, certains segments au début des vidéos des chaînes qui sont sur la liste blanche peuvent être passés. Activer cette option empêchera ça mais passer les segments aura un délai car obtenir l'id des chaînes peut prendre du temps. Ce délai peut ne pas être remarqué si votre connexion est rapide."
|
"message": "Par défaut, passer les segments avant même de savoir à quelle chaîne appartient la vidéo. Par défaut, les segments en début des vidéos des chaînes sur liste blanche peuvent être passés. Activer cette option empêchera cela mais passer les segments aura un délai, car obtenir l'id des chaînes peut prendre du temps. Ce délai sera imperceptible si votre connexion est rapide."
|
||||||
},
|
},
|
||||||
"forceChannelCheckPopup": {
|
"forceChannelCheckPopup": {
|
||||||
"message": "Envisagez d'activer \"Forcez la vérification de la chaîne avant de passer\""
|
"message": "Envisagez d'activer \"Forcez la vérification de la chaîne avant de passer\""
|
||||||
|
@ -577,7 +611,7 @@
|
||||||
"message": "Mauvaise catégorie"
|
"message": "Mauvaise catégorie"
|
||||||
},
|
},
|
||||||
"nonMusicCategoryOnMusic": {
|
"nonMusicCategoryOnMusic": {
|
||||||
"message": "Cette vidéo est catégorisée comme de la musique. Êtes-vous sûr qu'elle est sponsorisée ? S'il s'agit en fait d'un \"segment non-musical\", allez dans les options de l'extension et activez cette catégorie. Ensuite, vous pourrez soumettre ce segment en tant que \"segment non-musical\" au lieu de sponsor. Lisez les \"Guidelines\" en cas de confusion."
|
"message": "Cette vidéo est catégorisée comme de la musique. Êtes-vous sûr qu'elle est sponsorisée ? S'il s'agit en fait d'un \"segment non-musical\", allez dans les options de l'extension et activez cette catégorie. Ensuite, vous pourrez soumettre ce segment en tant que \"segment non-musical\" au lieu de sponsor. Lisez les instructions en cas de confusion."
|
||||||
},
|
},
|
||||||
"multipleSegments": {
|
"multipleSegments": {
|
||||||
"message": "Plusieurs segments"
|
"message": "Plusieurs segments"
|
||||||
|
|
|
@ -1,31 +1,62 @@
|
||||||
{
|
{
|
||||||
"fullName": {
|
"fullName": {
|
||||||
"message": "SponorBlock YouTube-ra - Szponzorok kihagyása",
|
"message": "SponorBlock YouTube-ra - Szponzorok átugrására",
|
||||||
"description": "Name of the extension."
|
"description": "Name of the extension."
|
||||||
},
|
},
|
||||||
|
"Description": {
|
||||||
|
"message": "Szponzorok, feliratkozás-kérelmek és több átugrása a YouTube videókon. Jelöljön meg szponzorokat videókon amiket néz, hogy mások idejét is megtakarítsa.",
|
||||||
|
"description": "Description of the extension."
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"message": "Szerver: Ez a kérés érvénytelen"
|
||||||
|
},
|
||||||
|
"429": {
|
||||||
|
"message": "Túl sok szponzoridőt jelölt be ezen a videón. Biztos benne, hogy van ennyi?"
|
||||||
|
},
|
||||||
|
"409": {
|
||||||
|
"message": "Ez már korábban be lett küldve"
|
||||||
|
},
|
||||||
|
"channelWhitelisted": {
|
||||||
|
"message": "A csatorna az engedélyezőlistára került!"
|
||||||
|
},
|
||||||
"Segment": {
|
"Segment": {
|
||||||
"message": "szegmens"
|
"message": "szegmens"
|
||||||
},
|
},
|
||||||
"Segments": {
|
"Segments": {
|
||||||
"message": "részletek"
|
"message": "szegmensek"
|
||||||
},
|
},
|
||||||
"upvoteButtonInfo": {
|
"upvoteButtonInfo": {
|
||||||
"message": "Részlet felszavazása"
|
"message": "Részlet felszavazása"
|
||||||
},
|
},
|
||||||
"reportButtonTitle": {
|
"reportButtonTitle": {
|
||||||
"message": "Bejelentés"
|
"message": "Jelentés"
|
||||||
|
},
|
||||||
|
"reportButtonInfo": {
|
||||||
|
"message": "Szegmens jelentése helytelenként."
|
||||||
|
},
|
||||||
|
"Dismiss": {
|
||||||
|
"message": "Elvetés"
|
||||||
},
|
},
|
||||||
"Loading": {
|
"Loading": {
|
||||||
"message": "Betöltés..."
|
"message": "Betöltés..."
|
||||||
},
|
},
|
||||||
|
"Mins": {
|
||||||
|
"message": "Perc"
|
||||||
|
},
|
||||||
|
"Secs": {
|
||||||
|
"message": "Másodperc"
|
||||||
|
},
|
||||||
"Hide": {
|
"Hide": {
|
||||||
"message": "Sose mutassa"
|
"message": "Ne mutassa többé"
|
||||||
|
},
|
||||||
|
"hitGoBack": {
|
||||||
|
"message": "Kattintson a visszaugrásra, hogy visszakerüljön oda, ahonnan ugrott."
|
||||||
},
|
},
|
||||||
"unskip": {
|
"unskip": {
|
||||||
"message": "Kihagyás visszavonása"
|
"message": "Visszaugrás"
|
||||||
},
|
},
|
||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Újra-kihagyás"
|
"message": "Újra-átugrás"
|
||||||
},
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Szüneteltetve"
|
"message": "Szüneteltetve"
|
||||||
|
@ -33,29 +64,107 @@
|
||||||
"manualPaused": {
|
"manualPaused": {
|
||||||
"message": "Időzítő megállítva"
|
"message": "Időzítő megállítva"
|
||||||
},
|
},
|
||||||
|
"confirmMSG": {
|
||||||
|
"message": "Ahhoz, hogy értékeket szerkesszen, vagy töröljön kattintson az info gombra, vagy nyissa meg a bővítmény felugró ablakát a bővítmény ikonjával a jobb felső sarokban."
|
||||||
|
},
|
||||||
|
"clearThis": {
|
||||||
|
"message": "Biztosan törölni akarja?\n\n"
|
||||||
|
},
|
||||||
|
"Unknown": {
|
||||||
|
"message": "Hiba történt a szponzoridők bejelentésekor. Kérjük, próbálja újra."
|
||||||
|
},
|
||||||
|
"sponsorFound": {
|
||||||
|
"message": "Ennek a videónak már vannak szegmensei az adatbázisban!"
|
||||||
|
},
|
||||||
|
"sponsor404": {
|
||||||
|
"message": "Nem találhatóak szegmensek"
|
||||||
|
},
|
||||||
"sponsorStart": {
|
"sponsorStart": {
|
||||||
"message": "Részlet kezdődik most"
|
"message": "Szegmens eleje"
|
||||||
},
|
},
|
||||||
"sponsorEnd": {
|
"sponsorEnd": {
|
||||||
"message": "Részlet végződik most"
|
"message": "Szegmens vége"
|
||||||
|
},
|
||||||
|
"noVideoID": {
|
||||||
|
"message": "Nem található YouTube videó ezen a fülön. Ha ez biztosan egy YouTube fül, csukja be ezt az ablakot, és nyissa meg újra. Amennyiben nem működik, próbája újratölteni a fület."
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"message": "Siker!"
|
"message": "Siker!"
|
||||||
},
|
},
|
||||||
"voted": {
|
"voted": {
|
||||||
"message": "Szavaztál!"
|
"message": "Szavazott!"
|
||||||
|
},
|
||||||
|
"serverDown": {
|
||||||
|
"message": "Úgy tűnik a szerver nem működik. Kérjük, mihamarabb értesítse a fejlesztőket."
|
||||||
|
},
|
||||||
|
"connectionError": {
|
||||||
|
"message": "Kapcsolódási probléma merült fel. Error kód: "
|
||||||
|
},
|
||||||
|
"wantToSubmit": {
|
||||||
|
"message": "Szeretné beküldeni a szegmenst ehhez a videóhoz:"
|
||||||
|
},
|
||||||
|
"leftTimes": {
|
||||||
|
"message": "Úgy tűnik pár megjelölt szegmenst beküldetlenül hagyott. Lépjen vissza az oldalra, hogy beküldhesse őket (nem kerültek törlésre)."
|
||||||
|
},
|
||||||
|
"clearTimes": {
|
||||||
|
"message": "Szegmensek törlése"
|
||||||
|
},
|
||||||
|
"openPopup": {
|
||||||
|
"message": "SponsorBlock felugró ablak megnyitása"
|
||||||
},
|
},
|
||||||
"closePopup": {
|
"closePopup": {
|
||||||
"message": "Doboz bezárása"
|
"message": "Felugró ablak bezárása"
|
||||||
|
},
|
||||||
|
"SubmitTimes": {
|
||||||
|
"message": "Szegmens beküldése"
|
||||||
|
},
|
||||||
|
"submitCheck": {
|
||||||
|
"message": "Biztosan be akarja küldeni?"
|
||||||
|
},
|
||||||
|
"whitelistChannel": {
|
||||||
|
"message": "Csatorna engedélyezőlistára helyezése"
|
||||||
|
},
|
||||||
|
"removeFromWhitelist": {
|
||||||
|
"message": "Csatorna eltávolítása az engedélyezőlistáról"
|
||||||
},
|
},
|
||||||
"voteOnTime": {
|
"voteOnTime": {
|
||||||
"message": "Szavazz egy részleten"
|
"message": "Szavazzon a szegmensről"
|
||||||
|
},
|
||||||
|
"soFarUHSubmited": {
|
||||||
|
"message": "Eddig beküldött"
|
||||||
|
},
|
||||||
|
"savedPeopleFrom": {
|
||||||
|
"message": "Megspórolt másoknak "
|
||||||
|
},
|
||||||
|
"viewLeaderboard": {
|
||||||
|
"message": "Ranglista megtekintése"
|
||||||
},
|
},
|
||||||
"here": {
|
"here": {
|
||||||
"message": "itt"
|
"message": "itt"
|
||||||
},
|
},
|
||||||
|
"recordTimesDescription": {
|
||||||
|
"message": "Kattintson az alábbi gombra a szegmens kezdeténél és végénél megjelöléshez, és adja hozzá az adatbázishoz."
|
||||||
|
},
|
||||||
|
"popupHint": {
|
||||||
|
"message": "Tipp: Nyomja le a pontosvessző gombot, hogy megjelölje egy szegmens kezdetét/végét és beküldhesse. (Változtatható a beállításokban)"
|
||||||
|
},
|
||||||
|
"clearTimesButton": {
|
||||||
|
"message": "Időpontok törlése"
|
||||||
|
},
|
||||||
|
"submitTimesButton": {
|
||||||
|
"message": "Időpontok megadása"
|
||||||
|
},
|
||||||
|
"publicStats": {
|
||||||
|
"message": "Ezt használja a nyilvános ranglistán, hogy megmutassa mennyit járult hozzá. Nézze meg"
|
||||||
|
},
|
||||||
|
"setUsername": {
|
||||||
|
"message": "Felhasználónév megadása"
|
||||||
|
},
|
||||||
|
"discordAdvert": {
|
||||||
|
"message": "Csatlakozzon a hivatalos discord szerverhez, hogy javaslatokat és visszajelzést adhasson!"
|
||||||
|
},
|
||||||
"hideThis": {
|
"hideThis": {
|
||||||
"message": "Rejtsd el ezt"
|
"message": "Elrejtés"
|
||||||
},
|
},
|
||||||
"Options": {
|
"Options": {
|
||||||
"message": "Beállítások"
|
"message": "Beállítások"
|
||||||
|
@ -67,7 +176,7 @@
|
||||||
"message": "Gombok elrejtése a YouTube lejátszón"
|
"message": "Gombok elrejtése a YouTube lejátszón"
|
||||||
},
|
},
|
||||||
"hideButtonsDescription": {
|
"hideButtonsDescription": {
|
||||||
"message": "Ez elrejti a kihagyásos részletek létrehozásához szükséges gombokat a YouTube lejátszón."
|
"message": "Ez elrejti az átugrandó szegmensek megjelöléséhez használt gombokat a YouTube lejátszón."
|
||||||
},
|
},
|
||||||
"showInfoButton": {
|
"showInfoButton": {
|
||||||
"message": "Info gomb mutatása a YouTube lejátszón"
|
"message": "Info gomb mutatása a YouTube lejátszón"
|
||||||
|
@ -76,7 +185,7 @@
|
||||||
"message": "Info gomb elrejtése a YouTube lejátszón"
|
"message": "Info gomb elrejtése a YouTube lejátszón"
|
||||||
},
|
},
|
||||||
"whatInfoButton": {
|
"whatInfoButton": {
|
||||||
"message": "Ez a gomb az, ami feldob egy dobozt a YouTube oldalon."
|
"message": "Ez a gomb felhoz egy felugró dobozt a YouTube oldalon."
|
||||||
},
|
},
|
||||||
"hideDeleteButton": {
|
"hideDeleteButton": {
|
||||||
"message": "Törlés gomb elrejtése a YouTube lejátszón"
|
"message": "Törlés gomb elrejtése a YouTube lejátszón"
|
||||||
|
@ -84,6 +193,34 @@
|
||||||
"showDeleteButton": {
|
"showDeleteButton": {
|
||||||
"message": "Törlés gomb mutatása a YouTube lejátszón"
|
"message": "Törlés gomb mutatása a YouTube lejátszón"
|
||||||
},
|
},
|
||||||
|
"whatDeleteButton": {
|
||||||
|
"message": "Ez egy gomb a lejátszón, ami törli az összes beküldetlen szegmensét a jelenlegi videón."
|
||||||
|
},
|
||||||
|
"enableViewTracking": {
|
||||||
|
"message": "Átugrás-számláló követés bekapcsolása"
|
||||||
|
},
|
||||||
|
"whatViewTracking": {
|
||||||
|
"message": "Ez a funkció követi, mely szegmenseket ugrotta át, hogy más felhasználók megtudhassák mennyit segítettek a bejelentéseik és a szavazatokkal együtt egy mértékegységként van használva, hogy ne kerülhessen spam az adatbázisba. A bővítmény küld egy üzenetet a szervernek, minden alkalommal, mikor átugrik egy szegmenst. Remélhetőleg nem sokan állítják át ezt a beállítást, hogy a számok pontosak maradhassanak. :)"
|
||||||
|
},
|
||||||
|
"enableQueryByHashPrefix": {
|
||||||
|
"message": "Lekérdezés Hash előtaggal"
|
||||||
|
},
|
||||||
|
"whatQueryByHashPrefix": {
|
||||||
|
"message": "A szerverről videoID helyett, a videoID hash első négy karaktere lesz elküldve szegmenslekéréskor. A szerver visszaküldi az összes hasonló hashel rendelkező videó adatait."
|
||||||
|
},
|
||||||
|
"enableRefetchWhenNotFound": {
|
||||||
|
"message": "Szegmensek újrakeresése új videókon"
|
||||||
|
},
|
||||||
|
"whatRefetchWhenNotFound": {
|
||||||
|
"message": "Ha a videó új, és még nem találhatóak szegmensek, a bővítmény pár percenkét újra keresi őket, miközben nézi."
|
||||||
|
},
|
||||||
|
"showNotice": {
|
||||||
|
"message": "Értesítés megjelenítése ismét"
|
||||||
|
},
|
||||||
|
"longDescription": {
|
||||||
|
"message": "A SponsorBlock-al átugorhatja a szponzorokat, introkat, outrokat, feliratkozás emlékeztetőket és a YouTube videók többi idegesítő részeit. A SponsorBlock egy közösség által vezérelt böngészőbővítmény, ami lehetővé tesz bárkit arra, hogy megjelölhesse egy szponzor vagy más szegmens kezdő és végpontjait. Ha megosztja ezt az információt, mindenki más ennek a bővítménynek a birtokában egyenesen átugorja majd ezt a szponzorszegmenst. Emellett például a zene videók nem-zene részei is átugorhatóak.",
|
||||||
|
"description": "Full description of the extension on the store pages."
|
||||||
|
},
|
||||||
"website": {
|
"website": {
|
||||||
"message": "Weboldal",
|
"message": "Weboldal",
|
||||||
"description": "Used on Firefox Store Page"
|
"description": "Used on Firefox Store Page"
|
||||||
|
@ -92,6 +229,29 @@
|
||||||
"message": "Forráskód",
|
"message": "Forráskód",
|
||||||
"description": "Used on Firefox Store Page"
|
"description": "Used on Firefox Store Page"
|
||||||
},
|
},
|
||||||
|
"noticeUpdate": {
|
||||||
|
"message": "Az értesítést frissítettük!",
|
||||||
|
"description": "The first line of the message displayed after the notice was upgraded."
|
||||||
|
},
|
||||||
|
"noticeUpdate2": {
|
||||||
|
"message": "Ha még mindig nem tetszik, kattintson a ne mutassa többé gombra.",
|
||||||
|
"description": "The second line of the message displayed after the notice was upgraded."
|
||||||
|
},
|
||||||
|
"setStartSponsorShortcut": {
|
||||||
|
"message": "Billentyű beállítása a szegmenskezdés gombhoz"
|
||||||
|
},
|
||||||
|
"setSubmitKeybind": {
|
||||||
|
"message": "Billentyű beállítása a beküldés gombhoz"
|
||||||
|
},
|
||||||
|
"keybindDescription": {
|
||||||
|
"message": "Válasszon billentyűt azzal, hogy lenyomja"
|
||||||
|
},
|
||||||
|
"keybindDescriptionComplete": {
|
||||||
|
"message": "A funkció erre a billentyűre lett állítva: "
|
||||||
|
},
|
||||||
|
"0": {
|
||||||
|
"message": "Kapcsolati időtúllépés. Ellenőrizze az internetkapcsolatot. Ha az internet működik, a kiszolgáló valószínűleg túlterhelt vagy leállt."
|
||||||
|
},
|
||||||
"disableSkipping": {
|
"disableSkipping": {
|
||||||
"message": "SponsorBlock kikapcsolása"
|
"message": "SponsorBlock kikapcsolása"
|
||||||
},
|
},
|
||||||
|
@ -102,35 +262,44 @@
|
||||||
"message": "Te munkád",
|
"message": "Te munkád",
|
||||||
"description": "Used to describe the section that will show you the statistics from your submissions."
|
"description": "Used to describe the section that will show you the statistics from your submissions."
|
||||||
},
|
},
|
||||||
|
"502": {
|
||||||
|
"message": "Úgy tűnik, hogy a szerver túlterhelt. Néhány másodperc múlva próbálkozzon újra."
|
||||||
|
},
|
||||||
"errorCode": {
|
"errorCode": {
|
||||||
"message": "Hibakód: "
|
"message": "Hibakód: "
|
||||||
},
|
},
|
||||||
"skip": {
|
"skip": {
|
||||||
"message": "Kihagy"
|
"message": "Átugrás"
|
||||||
},
|
},
|
||||||
"skip_category": {
|
"skip_category": {
|
||||||
"message": "Kihagyod {0}-t?"
|
"message": "Átugorja ezt: {0}?"
|
||||||
},
|
},
|
||||||
"skipped": {
|
"skipped": {
|
||||||
"message": "Kihagyva"
|
"message": "Átugorva"
|
||||||
},
|
},
|
||||||
"disableAutoSkip": {
|
"disableAutoSkip": {
|
||||||
"message": "Auto kihagyás kikapcsolása"
|
"message": "Auto átugrás kikapcsolása"
|
||||||
},
|
},
|
||||||
"enableAutoSkip": {
|
"enableAutoSkip": {
|
||||||
"message": "Auto kihagyás bekapcsolása"
|
"message": "Auto átugrás bekapcsolása"
|
||||||
},
|
},
|
||||||
"audioNotification": {
|
"audioNotification": {
|
||||||
"message": "Hangjelzés kihagyáskor"
|
"message": "Hangjelzés átugráskor"
|
||||||
},
|
},
|
||||||
"audioNotificationDescription": {
|
"audioNotificationDescription": {
|
||||||
"message": "Hangjelzés kihagyáskor egy hangot fog játszani amikor kihagyunk egy részletet. Ha ez ki van kapcsolva (vagy az auto kihagyás), nem lesz semmilyen hang lejátszva."
|
"message": "A hangjelzés átugráskor lejátszik egy hangot minden alkalommal amikor átugrik egy szegmenst. Ha kikapcsolja (vagy az auto átugrás ki van kapcsolva) nem lesz hangjelzés lejátszva."
|
||||||
|
},
|
||||||
|
"showTimeWithSkips": {
|
||||||
|
"message": "Idő megtekintése az átugrandók nélkül"
|
||||||
|
},
|
||||||
|
"showTimeWithSkipsDescription": {
|
||||||
|
"message": "Ez az idő zárójelben jelenik meg az aktuális idő mellett a keresősáv alatt. Megmutatja a videó teljes időtartamát, levonva a szegmenseket. Beletartoznak a csak \"Megjelenítés a keresősávban\" jelöléssel ellátott szegmensek is."
|
||||||
},
|
},
|
||||||
"youHaveSkipped": {
|
"youHaveSkipped": {
|
||||||
"message": "Te kihagytál "
|
"message": "Ön átugrott "
|
||||||
},
|
},
|
||||||
"youHaveSaved": {
|
"youHaveSaved": {
|
||||||
"message": "Te mentettél magadnak "
|
"message": "Megtakarított magának "
|
||||||
},
|
},
|
||||||
"minLower": {
|
"minLower": {
|
||||||
"message": "perc"
|
"message": "perc"
|
||||||
|
@ -145,49 +314,133 @@
|
||||||
"message": "óra"
|
"message": "óra"
|
||||||
},
|
},
|
||||||
"youHaveSavedTime": {
|
"youHaveSavedTime": {
|
||||||
"message": "Megmentettél embereknek"
|
"message": "Megspórolt másoknak"
|
||||||
},
|
},
|
||||||
"youHaveSavedTimeEnd": {
|
"youHaveSavedTimeEnd": {
|
||||||
"message": " az életüknek."
|
"message": " az életükből."
|
||||||
},
|
},
|
||||||
"statusReminder": {
|
"statusReminder": {
|
||||||
"message": "Nézd meg status.sponsor.ajay.app-t a szerver állapotához."
|
"message": "A szerver állapotához tekintse meg a status.sponsor.ajay.app oldalt."
|
||||||
},
|
},
|
||||||
"changeUserID": {
|
"changeUserID": {
|
||||||
"message": "UserID importálása / exportálása"
|
"message": "UserID importálása / exportálása"
|
||||||
},
|
},
|
||||||
|
"whatChangeUserID": {
|
||||||
|
"message": "Ezt titokban kell tartani. Olyan, mint egy jelszó, nem szabad senkivel megosztania. Ha valakinek megvan, megszemélyesítheti Önt."
|
||||||
|
},
|
||||||
"setUserID": {
|
"setUserID": {
|
||||||
"message": "UserID beállítása"
|
"message": "UserID beállítása"
|
||||||
},
|
},
|
||||||
|
"userIDChangeWarning": {
|
||||||
|
"message": "Figyelem: A UserID megváltoztatása végleges. Biztosan szeretné megtenni? Minden esetben készítsen biztonsági másolatot a régiről."
|
||||||
|
},
|
||||||
"createdBy": {
|
"createdBy": {
|
||||||
"message": "Készítette"
|
"message": "Készítette"
|
||||||
},
|
},
|
||||||
"autoSkip": {
|
"autoSkip": {
|
||||||
"message": "Auto kihagyás"
|
"message": "Auto átugrás"
|
||||||
},
|
},
|
||||||
"showSkipNotice": {
|
"showSkipNotice": {
|
||||||
"message": "Jelezzen ha egy részlet ki van hagyva"
|
"message": "Jelezzen, ha egy szegmens át lett ugorva"
|
||||||
},
|
},
|
||||||
"keybindCurrentlySet": {
|
"keybindCurrentlySet": {
|
||||||
"message": ". Jelenleg állítva van:"
|
"message": ". Jelenleg erre van állítva:"
|
||||||
|
},
|
||||||
|
"supportInvidious": {
|
||||||
|
"message": "Invidious támogatása"
|
||||||
|
},
|
||||||
|
"supportInvidiousDescription": {
|
||||||
|
"message": "Az Invidious (invidio.us) egy harmadik fél által készített YouTube kliens. A támogatás engedélyezéséhez el kell fogadnia további engedélyeket. NEM működik inkognitómódban a Chrome-on vagy más Chromium-változatokon."
|
||||||
|
},
|
||||||
|
"optionsInfo": {
|
||||||
|
"message": "Invidious támogatás engedélyezése, autoátugrás kikapcsolása, gombok eltűntetése és több."
|
||||||
|
},
|
||||||
|
"addInvidiousInstance": {
|
||||||
|
"message": "Invidious példány hozzáadása"
|
||||||
|
},
|
||||||
|
"addInvidiousInstanceDescription": {
|
||||||
|
"message": "Egyedi Invidious példány hozzáadása. CSAK a domain-nel kell formázni. Például: invidious.ajay.app"
|
||||||
},
|
},
|
||||||
"add": {
|
"add": {
|
||||||
"message": "Hozzáadás"
|
"message": "Hozzáadás"
|
||||||
},
|
},
|
||||||
|
"addInvidiousInstanceError": {
|
||||||
|
"message": "Érvénytelen domain. CSAK a domain részt tartalmazhatja. Például: invidious.ajay.app"
|
||||||
|
},
|
||||||
|
"resetInvidiousInstance": {
|
||||||
|
"message": "Invidious példányok listájának visszaállítása"
|
||||||
|
},
|
||||||
|
"resetInvidiousInstanceAlert": {
|
||||||
|
"message": "Épp visszaállítja az Invidious példányok listát"
|
||||||
|
},
|
||||||
|
"currentInstances": {
|
||||||
|
"message": "Jelenlegi példányok:"
|
||||||
|
},
|
||||||
|
"minDuration": {
|
||||||
|
"message": "Minimális időtartam (másodpercekben):"
|
||||||
|
},
|
||||||
|
"minDurationDescription": {
|
||||||
|
"message": "A beállított értéknél rövidebb szegmenseket nem ugorja át és nem jeleníti meg a lejátszó."
|
||||||
|
},
|
||||||
|
"shortCheck": {
|
||||||
|
"message": "A következő szegmens rövidebb, mint az Ön által beállított minimális időtartam. Ez azt jelentheti, hogy már beküldhették, csak emiatt az opció miatt Önnek figyelmen kívül marad. Biztosan beküldi?"
|
||||||
|
},
|
||||||
|
"showUploadButton": {
|
||||||
|
"message": "Feltöltés gomb megjelenítése"
|
||||||
|
},
|
||||||
|
"whatUploadButton": {
|
||||||
|
"message": "Ez a gomb a YouTube lejátszón jelenik meg, miután kiválasztott egy időtartamot és készen áll a beküldésre."
|
||||||
|
},
|
||||||
"customServerAddress": {
|
"customServerAddress": {
|
||||||
"message": "SponsorBlock szerver címe"
|
"message": "SponsorBlock szerver címe"
|
||||||
},
|
},
|
||||||
|
"customServerAddressDescription": {
|
||||||
|
"message": "A SponsorBlock által használt cím a szerverre történő hívások kezdeményezésére szolgál.\nHacsak nincs saját szerverpéldánya, ezt nem szabad megváltoztatni."
|
||||||
|
},
|
||||||
"save": {
|
"save": {
|
||||||
"message": "Mentés"
|
"message": "Mentés"
|
||||||
},
|
},
|
||||||
"reset": {
|
"reset": {
|
||||||
"message": "Visszaállítás"
|
"message": "Visszaállítás"
|
||||||
},
|
},
|
||||||
|
"customAddressError": {
|
||||||
|
"message": "A cím helytelenül van formázva. Győződjön meg róla, hogy http:// vagy https:// van az elején, és nem fordított perjeleket használ."
|
||||||
|
},
|
||||||
|
"areYouSureReset": {
|
||||||
|
"message": "Biztosan vissza szeretné állítani?"
|
||||||
|
},
|
||||||
|
"confirmPrivacy": {
|
||||||
|
"message": "Videó észlelve nem listázottként. Kattintson a Mégse gombra, ha nem akar ellenőrizni átugorható szegmensek után."
|
||||||
|
},
|
||||||
|
"unlistedCheck": {
|
||||||
|
"message": "Nem listázott/Privát videók ignorálása"
|
||||||
|
},
|
||||||
|
"whatUnlistedCheck": {
|
||||||
|
"message": "Ez a beállítás kissé lelassíthatja a SponsorBlockot. A szegmensek átugrásához szükséges, hogy a videoID el legyen küldve a szerverre. Ha aggódik az interneten küldött nem listázott videóazonosítók küldése miatt, kapcsolja be ezt a funkciót."
|
||||||
|
},
|
||||||
|
"mobileUpdateInfo": {
|
||||||
|
"message": "az m.youtube.com már támogatott"
|
||||||
|
},
|
||||||
"exportOptions": {
|
"exportOptions": {
|
||||||
"message": "Összes beállítás importálása / exportálása"
|
"message": "Összes beállítás importálása / exportálása"
|
||||||
},
|
},
|
||||||
|
"whatExportOptions": {
|
||||||
|
"message": "Ez az össze beállítása JSON-ban. Ebbe bele tartozik a userID-ja, szóval csak ésszel ossza meg."
|
||||||
|
},
|
||||||
|
"setOptions": {
|
||||||
|
"message": "Beállítások"
|
||||||
|
},
|
||||||
|
"exportOptionsWarning": {
|
||||||
|
"message": "Figyelem: Az beállítások megváltoztatása végleges, és tönkreteheti a bővítményét. Biztosan meg szeretné tenni? Készítsen egy biztonsági mentést a régi beállításairól, biztos, ami biztos."
|
||||||
|
},
|
||||||
|
"incorrectlyFormattedOptions": {
|
||||||
|
"message": "Ez a JSON helytelenül van formázva. A beállításai nem lettek megváltoztatva."
|
||||||
|
},
|
||||||
|
"confirmNoticeTitle": {
|
||||||
|
"message": "Szegmens beküldése"
|
||||||
|
},
|
||||||
"submit": {
|
"submit": {
|
||||||
"message": "Elküld"
|
"message": "Beküld"
|
||||||
},
|
},
|
||||||
"cancel": {
|
"cancel": {
|
||||||
"message": "Mégse"
|
"message": "Mégse"
|
||||||
|
@ -204,14 +457,69 @@
|
||||||
"edit": {
|
"edit": {
|
||||||
"message": "Szerkesztés"
|
"message": "Szerkesztés"
|
||||||
},
|
},
|
||||||
|
"copyDebugInformation": {
|
||||||
|
"message": "Hibakeresési információ másolása a vágólapra"
|
||||||
|
},
|
||||||
|
"copyDebugInformationFailed": {
|
||||||
|
"message": "Hiba a vágólapra másoláskor"
|
||||||
|
},
|
||||||
|
"copyDebugInformationOptions": {
|
||||||
|
"message": "Információt másol a vágólapra, amit megadhat egy fejlesztőnek, ha bejelent egy hibát, vagy egy fejlesztő kéri öntől. Az érzékeny információkat, például a felhasználói azonosítót, az engedélyezőlistán szereplő csatornákat és az egyéni szerver címét eltávolítottuk. Azonban tartalmaz olyan információkat, mint a böngésző, az operációs rendszer és a bővítmény verziószáma. "
|
||||||
|
},
|
||||||
|
"copyDebugInformationComplete": {
|
||||||
|
"message": "A hibakeresési információ másolva lett a vágólapjára. Nyugodtan távolítson el belőle olyan információkat, amiket nem szívesen osztana meg. Mentse el szöveges fájlként, vagy másolja a hibajelentésbe."
|
||||||
|
},
|
||||||
"theKey": {
|
"theKey": {
|
||||||
"message": "A kulcs"
|
"message": "A billentyű"
|
||||||
|
},
|
||||||
|
"keyAlreadyUsed": {
|
||||||
|
"message": "már máshoz van állítva. Kérem, válasszon egy másik billentyűt."
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"message": "-tól eddig:",
|
||||||
|
"description": "Used between segments. Example: 1:20 to 1:30"
|
||||||
},
|
},
|
||||||
"category_sponsor": {
|
"category_sponsor": {
|
||||||
"message": "Szponzor"
|
"message": "Szponzor"
|
||||||
},
|
},
|
||||||
|
"category_sponsor_description": {
|
||||||
|
"message": "Fizetett promóció, vagy közvetlen reklám. Nem ön-promóció vagy ingyenes ajánlat (/shoutout) emberekről/termékekről/weboldalakról amik tetszenek nekik."
|
||||||
|
},
|
||||||
|
"category_intro": {
|
||||||
|
"message": "Megszakítás/Intro animáció"
|
||||||
|
},
|
||||||
|
"category_intro_description": {
|
||||||
|
"message": "Egy részlet tartalom nélkül. Lehet szünet, álló képkocka, vagy ismétlődő animáció. Nem használandó információt tartalmazó átmeneteknél."
|
||||||
|
},
|
||||||
|
"category_intro_short": {
|
||||||
|
"message": "Megszakítás"
|
||||||
|
},
|
||||||
|
"category_outro": {
|
||||||
|
"message": "Záróképernyő/ Stáblista"
|
||||||
|
},
|
||||||
|
"category_outro_description": {
|
||||||
|
"message": "Stáblista, vagy amikor megjelennek a YouTube zárókártyák. Nem használandó információt tartalmazó következtetésekkor."
|
||||||
|
},
|
||||||
|
"category_interaction": {
|
||||||
|
"message": "Emlékeztető (Feliratkozás)"
|
||||||
|
},
|
||||||
|
"category_interaction_description": {
|
||||||
|
"message": "Egy rövid emlékeztető arról, hogy likeoljunk, iratkozzunk fel, vagy kövessük a tartalom közben. Ha hosszabb szakasz, vagy egy adott témáról van, inkább a az ön-promóció alá tartozik."
|
||||||
|
},
|
||||||
"category_interaction_short": {
|
"category_interaction_short": {
|
||||||
"message": "Szünet"
|
"message": "Emlékeztető"
|
||||||
|
},
|
||||||
|
"category_selfpromo": {
|
||||||
|
"message": "Nem fizetett/ön-promóció"
|
||||||
|
},
|
||||||
|
"category_selfpromo_description": {
|
||||||
|
"message": "Hasonló a szponzorhoz, de nem fizetett vagy ön-promóció. Beletartozik a saját ruhaáru, adományok, vagy infó arról hogy kivel működtek együtt."
|
||||||
|
},
|
||||||
|
"category_music_offtopic": {
|
||||||
|
"message": "Zene: nem-zene szegmens"
|
||||||
|
},
|
||||||
|
"category_music_offtopic_description": {
|
||||||
|
"message": "Csak zenei videókon. Beletartoznak a zenei videók intro és outro részei is."
|
||||||
},
|
},
|
||||||
"category_music_offtopic_short": {
|
"category_music_offtopic_short": {
|
||||||
"message": "Nem-Zene"
|
"message": "Nem-Zene"
|
||||||
|
@ -220,24 +528,39 @@
|
||||||
"message": "Élő adás: Adomány / üzenet olvasások"
|
"message": "Élő adás: Adomány / üzenet olvasások"
|
||||||
},
|
},
|
||||||
"category_livestream_messages_short": {
|
"category_livestream_messages_short": {
|
||||||
"message": "Üzenet olvasás"
|
"message": "Üzenet beolvasása"
|
||||||
},
|
},
|
||||||
"disable": {
|
"disable": {
|
||||||
"message": "Kikapcsol"
|
"message": "Kikapcsol"
|
||||||
},
|
},
|
||||||
"manualSkip": {
|
"manualSkip": {
|
||||||
"message": "Manuális kihagyás"
|
"message": "Átugrás manuálisan"
|
||||||
},
|
},
|
||||||
"showOverlay": {
|
"showOverlay": {
|
||||||
"message": "Keresősáv megjelenítése"
|
"message": "Megjelenítés a keresősávban"
|
||||||
|
},
|
||||||
|
"colorFormatIncorrect": {
|
||||||
|
"message": "A szín helytelenül van formázva. Egy 3 vagy 6 számjegyből álló hex kódnak kell lennie egy kettőskereszttel az elején."
|
||||||
},
|
},
|
||||||
"previewColor": {
|
"previewColor": {
|
||||||
"message": "Előnézeti szín",
|
"message": "Előnézeti szín",
|
||||||
"description": "Referring to submissions that have not been sent to the server yet."
|
"description": "Referring to submissions that have not been sent to the server yet."
|
||||||
},
|
},
|
||||||
|
"seekBarColor": {
|
||||||
|
"message": "Keresősáv színe"
|
||||||
|
},
|
||||||
"category": {
|
"category": {
|
||||||
"message": "Kategória"
|
"message": "Kategória"
|
||||||
},
|
},
|
||||||
|
"enableTestingServer": {
|
||||||
|
"message": "Bétateszt szerver bekapcsolása"
|
||||||
|
},
|
||||||
|
"whatEnableTestingServer": {
|
||||||
|
"message": "A hozzájárulásai/szavazatai NEM FOGNAK SZÁMÍTANI a fő szerveren. Csak tesztelésre használja."
|
||||||
|
},
|
||||||
|
"testingServerWarning": {
|
||||||
|
"message": "Az összes hozzájárulás/szavazat NEM FOG SZÁMÍTANI a fő szerverhez, amíg a tesztszerverhez kapcsolódik. Győződjön meg róla, hogy ki van kapcsolva, ha valódi hozzájárulásokat szeretne megosztani."
|
||||||
|
},
|
||||||
"bracketNow": {
|
"bracketNow": {
|
||||||
"message": "(Most)"
|
"message": "(Most)"
|
||||||
},
|
},
|
||||||
|
@ -245,7 +568,10 @@
|
||||||
"message": "További kategóriák"
|
"message": "További kategóriák"
|
||||||
},
|
},
|
||||||
"chooseACategory": {
|
"chooseACategory": {
|
||||||
"message": "Válassz egy kategóriát"
|
"message": "Válasszon kategóriát"
|
||||||
|
},
|
||||||
|
"youMustSelectACategory": {
|
||||||
|
"message": "Minden szegmenshez kategóriát kell választania beküldés előtt!"
|
||||||
},
|
},
|
||||||
"bracketEnd": {
|
"bracketEnd": {
|
||||||
"message": "(Vége)"
|
"message": "(Vége)"
|
||||||
|
@ -257,7 +583,22 @@
|
||||||
"message": "elrejtve: túl rövid"
|
"message": "elrejtve: túl rövid"
|
||||||
},
|
},
|
||||||
"channelDataNotFound": {
|
"channelDataNotFound": {
|
||||||
"message": "Csatorna azonosító nem töltődött be."
|
"message": "A csatorna azonosító még nem töltődött be."
|
||||||
|
},
|
||||||
|
"adblockerIssue": {
|
||||||
|
"message": "Valami meggátolja a SponsorBlockot a videó adatainak megszerzésében. Valószínűleg az ad-blockere. Kérem ellenőrizze: https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests"
|
||||||
|
},
|
||||||
|
"itCouldBeAdblockerIssue": {
|
||||||
|
"message": "Ha ez folyamatosan előfordul, lehet hogy az ad-blockere okozza. Kérem nézzen utána: https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock's-Requests"
|
||||||
|
},
|
||||||
|
"forceChannelCheck": {
|
||||||
|
"message": "Csatorna ellenőrzése átugrás előtt"
|
||||||
|
},
|
||||||
|
"whatForceChannelCheck": {
|
||||||
|
"message": "Alapértelmezett állapotban, a bővítmény átugorhat szegmenseket, mielőtt tudná melyik csatornán van. Alapból ezért, néhány szegmens, ami a videók legelején van, engedélyezett csatornákon is átugródhat. Ennek a bekapcsolásával ez elkerülhető, de minden átugrás előtt lesz egy kis késleltetés, hiszen a channelID megszerzéséhez elkell egy kis idő. Ez a késleltetés akár észrevehetetlen is lehet, ha elég gyors a kapcsolata."
|
||||||
|
},
|
||||||
|
"forceChannelCheckPopup": {
|
||||||
|
"message": "Gondolja át a \"Csatorna ellenőrzése átugrás előtt\" bekapcsolását"
|
||||||
},
|
},
|
||||||
"downvoteDescription": {
|
"downvoteDescription": {
|
||||||
"message": "Helytelen/rossz időzítés"
|
"message": "Helytelen/rossz időzítés"
|
||||||
|
@ -266,19 +607,28 @@
|
||||||
"message": "Hibás kategória"
|
"message": "Hibás kategória"
|
||||||
},
|
},
|
||||||
"nonMusicCategoryOnMusic": {
|
"nonMusicCategoryOnMusic": {
|
||||||
"message": "Ez a videó zeneként van kategorizálva. Biztos vagy benne, hogy ennek van szponzorja? Ha ez valójában egy \"nem-zene részlet\", nyisd meg a bővítmény beállításait és kapcsold be ezt a kategóriát. Ezt követően elküldheted ezt a részletet \"Nem-Zene\"-ként szponzor helyett. Olvasd el az irányelveket, ha nem érted."
|
"message": "Ez a videó zeneként van kategorizálva. Biztos benne, hogy ennek van szponzora? Ha ez valójában egy \"nem-zene szegmens\", nyissa meg a bővítmény beállításait és kapcsolja be azt a kategóriát. Ezt követően elküldheti ezt a szegmenst \"nem-zene\"-ként szponzor helyett. Amennyiben nem érti, kérjük olvassa el az irányelveket."
|
||||||
},
|
},
|
||||||
"multipleSegments": {
|
"multipleSegments": {
|
||||||
"message": "Több részlet"
|
"message": "Több szegmens"
|
||||||
},
|
},
|
||||||
"guidelines": {
|
"guidelines": {
|
||||||
"message": "Irányelvek"
|
"message": "Irányelvek"
|
||||||
},
|
},
|
||||||
"readTheGuidelines": {
|
"readTheGuidelines": {
|
||||||
"message": "Olvasd el az irányelveket!!",
|
"message": "Olvassa el az irányelveket!!",
|
||||||
"description": "Show the first time they submit or if they are \"high risk\""
|
"description": "Show the first time they submit or if they are \"high risk\""
|
||||||
},
|
},
|
||||||
"categoryUpdate1": {
|
"categoryUpdate1": {
|
||||||
"message": "Itt vannak a kategóriák!"
|
"message": "Itt vannak a kategóriák!"
|
||||||
|
},
|
||||||
|
"categoryUpdate2": {
|
||||||
|
"message": "Nyissa meg a beállításokat, hogy átugorhasson introkat, outrokat stb."
|
||||||
|
},
|
||||||
|
"unsubmittedWarning": {
|
||||||
|
"message": "Beküldetlen szegmens értesítő"
|
||||||
|
},
|
||||||
|
"unsubmittedWarningDescription": {
|
||||||
|
"message": "Küldjön egy értesítést, ha elhagy egy videót amelyen beküldetlen szegmensek vannak"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,7 +203,7 @@
|
||||||
"message": "Questa funzionalità tiene traccia dei segmenti che hai saltato, per far sapere agli utenti quanto il loro contributo abbia aiutato gli altri e sia stato utilizzato come metrica insieme ai voti positivi, per garantire che lo spam non entri nel database. L'estensione invierà un messaggio al server ogni volta che salterai un segmento. Si spera che la maggior parte delle persone non modifichino questa impostazione, in modo da non intaccare l'accuratezza dei numeri di visualizzazione. :)"
|
"message": "Questa funzionalità tiene traccia dei segmenti che hai saltato, per far sapere agli utenti quanto il loro contributo abbia aiutato gli altri e sia stato utilizzato come metrica insieme ai voti positivi, per garantire che lo spam non entri nel database. L'estensione invierà un messaggio al server ogni volta che salterai un segmento. Si spera che la maggior parte delle persone non modifichino questa impostazione, in modo da non intaccare l'accuratezza dei numeri di visualizzazione. :)"
|
||||||
},
|
},
|
||||||
"enableQueryByHashPrefix": {
|
"enableQueryByHashPrefix": {
|
||||||
"message": "Query Del Prefisso di Hash"
|
"message": "Ricerca tramite prefisso hash"
|
||||||
},
|
},
|
||||||
"whatQueryByHashPrefix": {
|
"whatQueryByHashPrefix": {
|
||||||
"message": "Invece di richiedere i segmenti dal server usando il videoID, i primi 4 caratteri dell'hash del videoID sono inviati. Questo server reinvierà i dati per tutti i video con hash simili."
|
"message": "Invece di richiedere i segmenti dal server usando il videoID, i primi 4 caratteri dell'hash del videoID sono inviati. Questo server reinvierà i dati per tutti i video con hash simili."
|
||||||
|
|
|
@ -203,13 +203,13 @@
|
||||||
"message": "Ta opcja monitoruje pomijane przez Ciebie segmenty, by dać znać użytkownikom, jak bardzo ich wkład pomógł innym, oraz w połączeniu z systemem głosowania zapobiegać dostawaniu się spamu do bazy danych. Rozszerzenie wysyła wiadomość do serwera za każdym razem, kiedy pomijasz segment. Miejmy nadzieję, że większość ludzi tego nie wyłączy i liczniki wyświetleń będą wiarygodne. :)"
|
"message": "Ta opcja monitoruje pomijane przez Ciebie segmenty, by dać znać użytkownikom, jak bardzo ich wkład pomógł innym, oraz w połączeniu z systemem głosowania zapobiegać dostawaniu się spamu do bazy danych. Rozszerzenie wysyła wiadomość do serwera za każdym razem, kiedy pomijasz segment. Miejmy nadzieję, że większość ludzi tego nie wyłączy i liczniki wyświetleń będą wiarygodne. :)"
|
||||||
},
|
},
|
||||||
"enableQueryByHashPrefix": {
|
"enableQueryByHashPrefix": {
|
||||||
"message": "Zapytanie Według Hash Prefix"
|
"message": "Zapytanie z użyciem funkcji skrótu"
|
||||||
},
|
},
|
||||||
"whatQueryByHashPrefix": {
|
"whatQueryByHashPrefix": {
|
||||||
"message": "Zamiast żądać segmentów z serwera używając videoID, pierwsze 4 znaki haszu videoID'u są wysyłane. Ten serwer zwróci wszystkie dane dla wszystkich filmików z podobnymi hashami."
|
"message": "Zamiast wysyłać do serwera zapytanie o segmenty zawierające ID filmu, wysyłane są 4 pierwsze znaki hashu tego ID. Serwer zwróci dane dla wszystkich filmów z podobnymi hashami."
|
||||||
},
|
},
|
||||||
"enableRefetchWhenNotFound": {
|
"enableRefetchWhenNotFound": {
|
||||||
"message": "Pobierz na nowo segmenty z nowych filmów"
|
"message": "Ponawiaj pobieranie segmentów na nowych filmach"
|
||||||
},
|
},
|
||||||
"whatRefetchWhenNotFound": {
|
"whatRefetchWhenNotFound": {
|
||||||
"message": "Jeśli film jest nowy i nie znaleziono żadnych segmentów, dane będą pobierane na nowo, co kilka minut, w czasie kiedy oglądasz."
|
"message": "Jeśli film jest nowy i nie znaleziono żadnych segmentów, dane będą pobierane na nowo, co kilka minut, w czasie kiedy oglądasz."
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{
|
{
|
||||||
|
"fullName": {
|
||||||
|
"message": "SponsorBlock for YouTube - Skip Sponsorships",
|
||||||
|
"description": "Name of the extension."
|
||||||
|
},
|
||||||
"channelWhitelisted": {
|
"channelWhitelisted": {
|
||||||
"message": "Kanál bol pridaný do whitelistu!"
|
"message": "Kanál bol pridaný do whitelistu!"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"fullName": {
|
"fullName": {
|
||||||
"message": "YouTube க்கான ஸ்பான்சர் பிளாக் - ஸ்பான்சர்ஷிப்களைத் தவிர்",
|
"message": "YouTube க்கான SponsorBlock - ஸ்பான்சர்ஷிப்களைத் தவிர்",
|
||||||
"description": "Name of the extension."
|
"description": "Name of the extension."
|
||||||
},
|
},
|
||||||
"Description": {
|
"Description": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"fullName": {
|
"fullName": {
|
||||||
"message": "YouTube కోసం స్పాన్సర్బ్లాక్ - స్పాన్సర్షిప్లను దాటవేయి",
|
"message": "YouTube కోసం SponsorBlock - స్పాన్సర్షిప్లను దాటవేయి",
|
||||||
"description": "Name of the extension."
|
"description": "Name of the extension."
|
||||||
},
|
},
|
||||||
"Description": {
|
"Description": {
|
||||||
|
|
|
@ -497,6 +497,9 @@
|
||||||
"category_selfpromo": {
|
"category_selfpromo": {
|
||||||
"message": "Quảng cáo không trả công/Tự quảng cáo"
|
"message": "Quảng cáo không trả công/Tự quảng cáo"
|
||||||
},
|
},
|
||||||
|
"category_selfpromo_description": {
|
||||||
|
"message": "Tương tự như 'nhà tài trợ' ngoại trừ việc quảng cáo không được trả tiền hay tự quảng cáo. Điều này bao gồm các phần hàng hóa, đóng góp, hoặc thông tin về người mà họ hợp tác với."
|
||||||
|
},
|
||||||
"category_music_offtopic": {
|
"category_music_offtopic": {
|
||||||
"message": "Nhạc: Phần không nhạc"
|
"message": "Nhạc: Phần không nhạc"
|
||||||
},
|
},
|
||||||
|
|
1
public/icons/check.svg
Normal file
1
public/icons/check.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="#fff" d="M20.3 2L9 13.6l-5.3-5L0 12.3 9 21 24 5.7z"/></svg>
|
After Width: | Height: | Size: 134 B |
1
public/icons/pencil.svg
Normal file
1
public/icons/pencil.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="#fff" d="M14.1 7.1l2.9 2.9L6.1 20.7l-3.6.7.7-3.6L14.1 7.1zm0-2.8L1.4 16.9 0 24l7.1-1.4L19.8 9.9l-5.7-5.7zm7.1 4.3L24 5.7 18.3 0l-2.8 2.8 5.7 5.7z"/></svg>
|
After Width: | Height: | Size: 229 B |
1
public/icons/settings.svg
Normal file
1
public/icons/settings.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="#fff" d="M24 13.6v-3.2c-1.7-.6-2.7-.8-3.2-2h0c-.5-1.3.1-2.1.8-3.7l-2.3-2.3c-1.6.7-2.4 1.4-3.7.8h0c-1.3-.5-1.4-1.6-2-3.2h-3.2c-.6 1.6-.7 2.7-2 3.2h0c-1.3.5-2.1-.1-3.7-.8L2.4 4.7c.7 1.6 1.4 2.4.8 3.7s-1.6 1.4-3.2 2v3.2c1.6.6 2.7.7 3.2 2 .5 1.3-.1 2.2-.8 3.7l2.3 2.3c1.6-.7 2.4-1.4 3.7-.8h0c1.3.5 1.4 1.6 2 3.2h3.2c.6-1.6.8-2.7 2-3.2h0c1.3-.5 2.1.1 3.7.9l2.3-2.3c-.7-1.6-1.4-2.4-.8-3.7s1.6-1.4 3.2-2zM12 16a4 4 0 1 1 0-8 4 4 0 1 1 0 8z"/></svg>
|
After Width: | Height: | Size: 516 B |
1
public/icons/thumb.svg
Normal file
1
public/icons/thumb.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="#fff" d="M21.4 9.6c-1.2 0-2.9-.3-4-.8.8-3.3 1.3-8.8-2.2-8.8-1.8 0-2.3 1.7-2.8 3.3-1.6 5.4-4 6.9-6.4 7.5V10H0v12h6v-.9a19.2 19.2 0 016.2 1.8c1.2.5 3 1.1 5.3 1.1 2.5 0 4.3-1 5-3.7.5-1.9 1.5-7.2 1.5-8.2 0-1.7-1.2-2.5-2.6-2.5zM4 20H2v-8h2v8zm15.9-5.6h1c1.2 0 1.1 1.5 0 1.6h-1.7c-.7.2-.7 1.3.1 1.2h1.2c1 0 1 1.4 0 1.5l-1.7.1c-.8.1-.7 1.3 0 1.2h.8c.9-.1 1 .8-.3 1.6-1.5.9-4.6.1-6.4-.6-2.2-1-4.4-2-7-2v-6c3.3-.8 6.4-2.3 8.4-9.1.9-3.1 1.7-2 1.7.6 0 2-.5 3.8-1 5.5 1.1.5 3.4 1.4 6.2 1.6 1 0 1 1.4 0 1.5l-1.5.2s-.6 1.1.2 1.1z"/></svg>
|
After Width: | Height: | Size: 599 B |
|
@ -3,7 +3,7 @@
|
||||||
font-family: 'Source Sans Pro';
|
font-family: 'Source Sans Pro';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
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/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2) format('woff2');
|
||||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
}
|
}
|
||||||
/* cyrillic */
|
/* cyrillic */
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
font-family: 'Source Sans Pro';
|
font-family: 'Source Sans Pro';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
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/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2) format('woff2');
|
||||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
}
|
}
|
||||||
/* greek-ext */
|
/* greek-ext */
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
font-family: 'Source Sans Pro';
|
font-family: 'Source Sans Pro';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.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;
|
unicode-range: U+1F00-1FFF;
|
||||||
}
|
}
|
||||||
/* greek */
|
/* greek */
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
font-family: 'Source Sans Pro';
|
font-family: 'Source Sans Pro';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
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');
|
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;
|
unicode-range: U+0370-03FF;
|
||||||
}
|
}
|
||||||
/* vietnamese */
|
/* vietnamese */
|
||||||
|
@ -35,15 +35,15 @@
|
||||||
font-family: 'Source Sans Pro';
|
font-family: 'Source Sans Pro';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
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/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2) format('woff2');
|
||||||
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
}
|
}
|
||||||
/* latin-ext */
|
/* latin-ext */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Source Sans Pro';
|
font-family: 'Source Sans Pro';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
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/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2) format('woff2');
|
||||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
}
|
}
|
||||||
/* latin */
|
/* latin */
|
||||||
|
@ -51,6 +51,62 @@
|
||||||
font-family: 'Source Sans Pro';
|
font-family: 'Source Sans Pro';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v12/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.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');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* cyrillic-ext */
|
||||||
|
@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-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@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-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2) format('woff2');
|
||||||
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@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-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');
|
||||||
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@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-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@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-LCoeQqfX1RYOo3ig4vwlxdu.woff2) format('woff2');
|
||||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
}
|
}
|
501
public/popup.css
501
public/popup.css
|
@ -1,142 +1,95 @@
|
||||||
/* reset some properties to default (youtube messes with them */
|
:root {
|
||||||
p.popupElement {
|
--sb-main-bg-color: #222626;
|
||||||
margin-block-start: 1em;
|
--sb-main-fg-color: white;
|
||||||
margin-block-end: 1em;
|
--sb-gray-fg-color: #444848;
|
||||||
margin-inline-start: 0px;
|
--sb-on-white-bg: black;
|
||||||
margin-inline-end: 0px;
|
--sb-green-bg: #077B27;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1.popupElement {
|
.hidden {
|
||||||
margin-block-start: 0.67em;
|
display: none !important;
|
||||||
margin-block-end: 0.67em;
|
|
||||||
margin-inline-start: 0px;
|
|
||||||
margin-inline-end: 0px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h2.popupElement {
|
#sponsorblockPopup {
|
||||||
margin-block-start: 0.83em;
|
color: var(--sb-main-fg-color);
|
||||||
margin-block-end: 0.83em;
|
|
||||||
margin-inline-start: 0px;
|
|
||||||
margin-inline-end: 0px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3.popupElement {
|
|
||||||
margin-block-start: 1em;
|
|
||||||
margin-block-end: 1em;
|
|
||||||
margin-inline-start: 0px;
|
|
||||||
margin-inline-end: 0px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub.popupElement {
|
|
||||||
font-size: smaller;
|
|
||||||
}
|
|
||||||
/* end reset */
|
|
||||||
|
|
||||||
#sponsorBlockPopupLogo {
|
|
||||||
vertical-align: text-bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logoText {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1.popupElement {
|
|
||||||
margin-top: 0px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popupBody {
|
|
||||||
font-size: 14px;
|
|
||||||
background-color: #333;
|
|
||||||
padding: 0px 5px;
|
|
||||||
|
|
||||||
font-family: 'Source Sans Pro', sans-serif;
|
font-family: 'Source Sans Pro', sans-serif;
|
||||||
|
font-size: 14px;
|
||||||
color: #dddddd;
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
align-items: center;
|
||||||
|
width: 330px;
|
||||||
|
margin: 22px;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.outerPopupBody {
|
#issueReporterTimeButtons > .votingButtons > .segmentTimeButton {
|
||||||
background-color: #222626;
|
font-weight: bold;
|
||||||
overflow-y: scroll;
|
color: var(--sb-main-fg-color);
|
||||||
}
|
background: none;
|
||||||
|
border: none;
|
||||||
|
padding: 10px 8px;
|
||||||
|
outline: none;
|
||||||
|
|
||||||
.discreteLink.popupElement {
|
|
||||||
color: #dddddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
.recordingSubtitle.popupElement {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.voteButton.popupElement {
|
|
||||||
height: 32px;
|
|
||||||
margin-right: 15px;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.voteButton:hover.popupElement {
|
|
||||||
filter: brightness(80%);
|
.dot {
|
||||||
|
height: 10px;
|
||||||
|
width: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discordButtonContainer.popupElement {
|
.sponsorTimesThanksForVotingText {
|
||||||
font-size: 12px;
|
font-size: large;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sponsorTime.popupElement {
|
.voteButton {
|
||||||
|
height: 20px;
|
||||||
|
padding: 0 5px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#videoInfo>p, #videoInfo>div>p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.logoText {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
align-items: center;
|
||||||
|
color: var(--sb-main-fg-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.logoText>p, .sbHeader {
|
||||||
|
font-size: 32px;
|
||||||
|
margin: -4px 0 -2px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sbHeader.sbSubHeader {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.smallLink.popupElement {
|
.largeButton{
|
||||||
font-size: 10px;
|
background: white;
|
||||||
text-decoration: underline;
|
/*font-weight: bold;*/
|
||||||
cursor: pointer;
|
padding: 6px 24px;
|
||||||
}
|
font-size: 20px;
|
||||||
|
border-radius: 25px;
|
||||||
.mediumLink.popupElement {
|
|
||||||
font-size: 15px;
|
|
||||||
margin-left: 25px;
|
|
||||||
margin-right: 25px;
|
|
||||||
text-decoration: underline;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tinyLink.popupElement {
|
|
||||||
font-size: 10px;
|
|
||||||
text-decoration: underline;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.whitelistButton.popupElement {
|
|
||||||
background-color:#27a52d;
|
|
||||||
-moz-border-radius:28px;
|
|
||||||
-webkit-border-radius:28px;
|
|
||||||
border-radius:28px;
|
|
||||||
border: none;
|
border: none;
|
||||||
display:inline-block;
|
text-decoration: none;
|
||||||
cursor:pointer;
|
color: black;
|
||||||
color:#ffffff;
|
min-height: 26px;
|
||||||
font-size:16px;
|
min-width: 152px;
|
||||||
padding:8px 37px;
|
display: block;
|
||||||
text-decoration:none;
|
overflow: hidden;
|
||||||
text-shadow:0px 0px 0px #27663c;
|
text-overflow: ellipsis;
|
||||||
|
font-family: 'Source Sans Pro', sans-serif;
|
||||||
transition: 0.01s background-color;
|
|
||||||
}
|
|
||||||
.whitelistButton:hover.popupElement {
|
|
||||||
background-color:#3acc3a;
|
|
||||||
}
|
|
||||||
.whitelistButton:focus.popupElement {
|
|
||||||
outline: none;
|
|
||||||
background-color:#3acc3a;
|
|
||||||
}
|
|
||||||
.whitelistButton:active.popupElement {
|
|
||||||
position:relative;
|
|
||||||
top:1px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.greenButton.popupElement {
|
.sponsorBlockPageBody .mediumButton {
|
||||||
background-color:#cc1717;
|
background-color:#cc1717;
|
||||||
-moz-border-radius:28px;
|
-moz-border-radius:28px;
|
||||||
-webkit-border-radius:28px;
|
-webkit-border-radius:28px;
|
||||||
|
@ -149,94 +102,260 @@ h1.popupElement {
|
||||||
padding:8px 37px;
|
padding:8px 37px;
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
text-shadow:0px 0px 0px #662727;
|
text-shadow:0px 0px 0px #662727;
|
||||||
|
font-family: 'Source Sans Pro', sans-serif;
|
||||||
|
|
||||||
transition: 0.01s background-color;
|
transition: 0.01s background-color;
|
||||||
}
|
}
|
||||||
.greenButton:hover.popupElement {
|
.sponsorBlockPageBody .mediumButton:hover {
|
||||||
background-color:#ec1c1c;
|
background-color:#ec1c1c;
|
||||||
}
|
}
|
||||||
.greenButton:focus.popupElement {
|
.sponsorBlockPageBody .mediumButton:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
background-color:#ec1c1c;
|
background-color:#ec1c1c;
|
||||||
}
|
}
|
||||||
.greenButton:active.popupElement {
|
.sponsorBlockPageBody .mediumButton:active {
|
||||||
position:relative;
|
position:relative;
|
||||||
top:1px;
|
top:1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dangerButton.popupElement {
|
/* disable extension */
|
||||||
background-color:#bc3315;
|
|
||||||
-moz-border-radius:3px;
|
#disableExtension {
|
||||||
-webkit-border-radius:3px;
|
display: flex;
|
||||||
border-radius:3px;
|
flex-flow: column nowrap;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* switch button */
|
||||||
|
|
||||||
|
.toggleSwitchContainer {
|
||||||
|
display: flex;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.switchBg {
|
||||||
|
display: block;
|
||||||
|
height: 37px;
|
||||||
|
width: 78px;
|
||||||
|
border-radius: 18.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.switchBg.shadow {
|
||||||
|
background: none;
|
||||||
|
box-shadow: 0.75px 0.75px 10px 0px rgba(50, 50, 50, 0.5);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.switchBg.white {
|
||||||
|
position: absolute;
|
||||||
|
background: white;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.switchBg.green {
|
||||||
|
position: absolute;
|
||||||
|
background: #00a205;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity .2s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.switchDot {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
margin: 6px;
|
||||||
|
background: white;
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 12.5px;
|
||||||
|
box-shadow: .75px .75px 3.8px 0px rgba(50, 50, 50, 0.45);
|
||||||
|
transition: transform .2s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preload * {
|
||||||
|
transition: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toggleSwitch:checked~.switchDot {
|
||||||
|
transform: translateX(40px);
|
||||||
|
}
|
||||||
|
|
||||||
|
#toggleSwitch:checked~.switchBg.green {
|
||||||
|
opacity: 1 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#toggleSwitch:checked~.switchBg.white {
|
||||||
|
opacity: 0 !important;
|
||||||
|
transition: opacity .2s step-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebyside {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
width: 88%;
|
||||||
|
margin: 0 6% 0 6%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebyside>div {
|
||||||
|
width: 50%;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#whitelistButton, #sponsorTimesSkipsDoneContainer, .toggleSwitchContainer {
|
||||||
|
margin-bottom: 2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#whitelistForceCheck {
|
||||||
|
font-weight: bold;
|
||||||
|
text-decoration: underline;
|
||||||
|
font-size: large;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sbHeader {
|
||||||
|
margin-bottom: 5px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logoText {
|
||||||
|
margin-bottom: 6px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#videoInfo, #mainControls, .sidebyside, #sponsorTimesSkipsDoneContainer, .largeButton {
|
||||||
|
margin-bottom: 12px !important;
|
||||||
|
}
|
||||||
|
#mainControls{
|
||||||
|
flex-flow: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
#submitTimesContainer{
|
||||||
|
flex-flow: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
/* additional buttons */
|
||||||
|
|
||||||
|
#additionalButtons {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#additionalButtons>button, button#setUsernameButton, #submitUsername {
|
||||||
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
display:inline-block;
|
color: white;
|
||||||
cursor:pointer;
|
width: fit-content;
|
||||||
color:#ffffff;
|
padding-left: 0;
|
||||||
font-size:13px;
|
|
||||||
padding:6px 24px;
|
cursor: pointer;
|
||||||
text-decoration:none;
|
|
||||||
text-shadow:0px 1px 0px #854629;
|
|
||||||
}
|
|
||||||
.dangerButton:hover.popupElement {
|
|
||||||
background-color:#d0451b;
|
|
||||||
}
|
|
||||||
.dangerButton:focus.popupElement {
|
|
||||||
outline: none;
|
|
||||||
background-color:#d0451b;
|
|
||||||
}
|
|
||||||
.dangerButton:active.popupElement {
|
|
||||||
position:relative;
|
|
||||||
top:1px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.warningButton.popupElement {
|
#submitUsername {
|
||||||
background-color:#bc8215;
|
padding-left: 5pt;
|
||||||
-moz-border-radius:3px;
|
|
||||||
-webkit-border-radius:3px;
|
|
||||||
border-radius:3px;
|
|
||||||
border: none;
|
|
||||||
display:inline-block;
|
|
||||||
cursor:pointer;
|
|
||||||
color:#ffffff;
|
|
||||||
font-size:13px;
|
|
||||||
padding:6px 24px;
|
|
||||||
text-decoration:none;
|
|
||||||
text-shadow:0px 1px 0px #856829;
|
|
||||||
}
|
|
||||||
.warningButton:hover.popupElement {
|
|
||||||
background-color:#d0821b;
|
|
||||||
}
|
|
||||||
.warningButton:focus.popupElement {
|
|
||||||
outline: none;
|
|
||||||
background-color:#d0821b;
|
|
||||||
}
|
|
||||||
.warningButton:active.popupElement {
|
|
||||||
position:relative;
|
|
||||||
top:1px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.smallButton.popupElement {
|
#additionalButtons, #additionalButtons>button {
|
||||||
background-color:#f9902d;
|
font-size: 15px;
|
||||||
-moz-border-radius:3px;
|
|
||||||
-webkit-border-radius:3px;
|
|
||||||
border-radius:3px;
|
|
||||||
border:1px solid #f9a72d;
|
|
||||||
display:inline-block;
|
|
||||||
cursor:pointer;
|
|
||||||
color:#ffffff;
|
|
||||||
font-size:14px;
|
|
||||||
padding:6px 10px;
|
|
||||||
text-decoration:none;
|
|
||||||
}
|
}
|
||||||
.smallButton:hover.popupElement {
|
|
||||||
background-color:#fa9806;
|
#usernameValue, #usernameInput, #sponsorTimesContributionsDisplay{
|
||||||
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
.smallButton:focus.popupElement {
|
|
||||||
outline: none;
|
.SBWhitelistIcon {
|
||||||
background-color:#fa9806;
|
min-width: 16px;
|
||||||
|
min-height: 16px;
|
||||||
|
margin-top: auto;
|
||||||
|
margin-bottom: auto;
|
||||||
|
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
.smallButton:active.popupElement {
|
|
||||||
position:relative;
|
.SBWhitelistIcon>path {
|
||||||
top:1px;
|
fill: var(--sb-main-fg-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
label>p, #disableExtension>p, #usernameValue, #usernameElement > div > p,#sponsorTimesContributionsContainer > div > p, #usernameElement > div > #setUsername > #setUsernameStatusContainer > p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#usernameElement > div > p, #sponsorTimesContributionsContainer {
|
||||||
|
text-align: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grayedOut>.SBWhitelistIcon>path {
|
||||||
|
fill: var(--sb-gray-fg-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.grayedOut>label {
|
||||||
|
color: var(--sb-gray-fg-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.SBWhitelistIcon.rotated {
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.SBWhitelistIconContainer, button#optionsButton>img, .logoText>img, #usernameValue {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#whitelistButton>label, #additionalButtons>button, div#setUsernameContainer {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#whitelistButton>label, #additionalButtons>button, div#setUsernameContainer>button {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
#usernameElement > div, #sponsorTimesContributionsContainer > div {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebyside > #usernameElement, .sidebyside > #sponsorTimesContributionsContainer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#usernameValue{
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
max-width: 130px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#setUsername {
|
||||||
|
display:flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
#usernameInput {
|
||||||
|
background: none;
|
||||||
|
padding: 0;
|
||||||
|
border: white 1px solid;
|
||||||
|
color: var(--sb-main-fg-color);
|
||||||
|
width: calc(100% - 24px);
|
||||||
|
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
#setUsername.SBExpanded {
|
||||||
|
width: 200%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* footer */
|
||||||
|
|
||||||
|
#sbFooter > a {
|
||||||
|
color: var(--sb-main-fg-color);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#showNoticeAgain {
|
||||||
|
margin-top: 30px;
|
||||||
|
|
||||||
|
color: var(--sb-main-fg-color);
|
||||||
|
background: none;
|
||||||
|
border: 1px solid white;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
border-radius: 5px;
|
||||||
}
|
}
|
|
@ -1,203 +1,146 @@
|
||||||
<html>
|
<head>
|
||||||
<head>
|
<title>__MSG_openPopup__</title>
|
||||||
<link id="sponsorBlockPopupFont" rel="stylesheet" type="text/css" href="/libs/Source+Sans+Pro.css"/>
|
<link id="sponsorBlockPopupFont" rel="stylesheet" type="text/css" href="/libs/Source+Sans+Pro.css">
|
||||||
<link id="sponsorBlockStyleSheet" rel="stylesheet" type="text/css" href="popup.css"/>
|
<link id="sponsorBlockStyleSheet" rel="stylesheet" type="text/css" href="popup.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="outerPopupBody">
|
|
||||||
<center>
|
|
||||||
<div id="app" class="popupBody sponsorBlockPageBody">
|
|
||||||
<h1 class="popupElement logoText">
|
|
||||||
<img src="icons/IconSponsorBlocker256px.png" height="32px" id="sponsorBlockPopupLogo"/>
|
|
||||||
SponsorBlock
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
|
<body style="margin: 0; min-width: 320px; background: var(--sb-main-bg-color);">
|
||||||
|
<div id="sponsorblockPopup" class="sponsorBlockPageBody preload">
|
||||||
|
<div class="logoText bottomSpace">
|
||||||
|
<img src="icons/IconSponsorBlocker256px.png" height="40px" id="sponsorBlockPopupLogo">
|
||||||
|
<p>SponsorBlock</p>
|
||||||
|
</div>
|
||||||
|
<div id="videoInfo" class="bottomSpace">
|
||||||
|
<div class="bottomSpace">
|
||||||
<!-- Loading text -->
|
<!-- Loading text -->
|
||||||
<p id="loadingIndicator" class="popupElement">__MSG_noVideoID__</p>
|
<p id="loadingIndicator">__MSG_noVideoID__</p>
|
||||||
|
|
||||||
<!-- Hidden until loading complete -->
|
|
||||||
<div id="mainControls" class="main popupElement" style="display: none">
|
|
||||||
<!-- If the video was found in the database -->
|
<!-- If the video was found in the database -->
|
||||||
<div id="videoFound">
|
<p id="videoFound"></p>
|
||||||
|
</div>
|
||||||
|
<div id="issueReporterContainer">
|
||||||
|
<div id="issueReporterTimeButtons"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sidebyside">
|
||||||
|
<div id="disableExtension">
|
||||||
|
<!--github: mbledkowski/toggle-switch-->
|
||||||
|
<label for="toggleSwitch" class="toggleSwitchContainer">
|
||||||
|
<input type="checkbox" style="display:none;" id="toggleSwitch" checked>
|
||||||
|
<span class="switchBg shadow"></span>
|
||||||
|
<span class="switchBg white"></span>
|
||||||
|
<span class="switchBg green"></span>
|
||||||
|
<span class="switchDot"></span>
|
||||||
|
</label>
|
||||||
|
<p id="disableSkipping">__MSG_disableSkipping__</p>
|
||||||
|
<p id="enableSkipping" style="display: none">__MSG_enableSkipping__</p>
|
||||||
|
</div>
|
||||||
|
<div id="additionalButtons">
|
||||||
|
<!-- grayedOut until loading complete -->
|
||||||
|
<div id="whitelistButton" class="hidden bottomSpace" title="__MSG_forceChannelCheckPopup__">
|
||||||
|
<input type="checkbox" style="display:none;" id="whitelistToggle">
|
||||||
|
<label for="whitelistToggle" class="whitelistToggleText">
|
||||||
|
<div class="SBWhitelistIconContainer">
|
||||||
|
<svg viewBox="0 0 24 24" width="16" height="16" class="SBWhitelistIcon">
|
||||||
|
<path d="M24 10H14V0h-4v10H0v4h10v10h4V14h10z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<p id="whitelistChannel">__MSG_whitelistChannel__</p>
|
||||||
|
<p id="unwhitelistChannel" style="display: none">__MSG_removeFromWhitelist__</p>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<button id="optionsButton" title="__MSG_optionsInfo__">
|
||||||
|
<img src="/icons/settings.svg" alt="Settings icon" width="16" height="16" id="sbPopupIconSettings">
|
||||||
|
__MSG_Options__
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="downloadedSponsorMessageTimes" class="popupElement">
|
<div id="whitelistForceCheck" class="hidden">
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p class="popupElement">
|
|
||||||
__MSG_recordTimesDescription__
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<button id="sponsorStart" class="greenButton popupElement">__MSG_sponsorStart__</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<sub class="popupElement">__MSG_popupHint__</sub>
|
|
||||||
|
|
||||||
<div id="submissionSection" class="popupElement" style="display: none">
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<b>Sponsor Editing has been moved and will appear after you click submit</b>
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<div id="submitTimesContainer" class="popupElement" style="display: none">
|
|
||||||
|
|
||||||
<button id="submitTimes" class="smallButton popupElement">__MSG_submitTimesButton__</button>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="discordButtonContainer" class="popupElement" style="display: none">
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<a href="https://discord.gg/QnmVMpU" class="popupElement" target="_blank"><img src="https://www.logolynx.com/images/logolynx/1b/1bcc0f0aefe71b2c8ce66ffe8645d365.png" height="32px"/></a>
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
__MSG_discordAdvert__
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<span id="hideDiscordButton" class="smallLink popupElement">__MSG_hideThis__</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<button id="whitelistChannel" class="whitelistButton popupElement">__MSG_whitelistChannel__</button>
|
|
||||||
<button id="unwhitelistChannel" class="whitelistButton popupElement" style="display: none">__MSG_removeFromWhitelist__</button>
|
|
||||||
|
|
||||||
<div id="whitelistForceCheck" style="text-decoration: underline; cursor: pointer;display: none">
|
|
||||||
__MSG_forceChannelCheckPopup__
|
__MSG_forceChannelCheckPopup__
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<br/>
|
<div id="mainControls" style="display: none">
|
||||||
|
<p class="sbHeader sbSubHeader">
|
||||||
<button id="reportAnIssue" class="dangerButton popupElement">__MSG_voteOnTime__</button>
|
__MSG_recordTimesDescription__
|
||||||
|
|
||||||
<div id="issueReporterContainer" class="popupElement" style="display: none">
|
|
||||||
|
|
||||||
<h3 style="margin-top: 0px" class="popupElement">__MSG_voteOnTime__</h3>
|
|
||||||
|
|
||||||
<div id="issueReporterTimeButtons" class="popupElement">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<button id="disableSkipping" class="greenButton popupElement">__MSG_disableSkipping__</button>
|
|
||||||
<button id="enableSkipping" class="whitelistButton popupElement" style="display: none">__MSG_enableSkipping__</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2 class="recordingSubtitle popupElement">__MSG_yourWork__</h2>
|
|
||||||
|
|
||||||
<p class="popupElement">
|
|
||||||
<span id="sponsorTimesContributionsContainer" class="popupElement" style="display: none">
|
|
||||||
__MSG_soFarUHSubmited__
|
|
||||||
<span id="sponsorTimesContributionsDisplay" class="popupElement">
|
|
||||||
0
|
|
||||||
</span>
|
|
||||||
<span id="sponsorTimesContributionsDisplayEndWord" class="popupElement">__MSG_Sponsors__</span>.
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span id="sponsorTimesViewsContainer" class="popupElement" style="display: none">
|
|
||||||
__MSG_savedPeopleFrom__
|
|
||||||
<span id="sponsorTimesViewsDisplay" class="popupElement">
|
|
||||||
0
|
|
||||||
</span>
|
|
||||||
<span id="sponsorTimesViewsDisplayEndWord" class="popupElement">__MSG_Segments__</span>.
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span id="sponsorTimesOthersTimeSavedContainer" class="popupElement" style="display: none">
|
|
||||||
__MSG_youHaveSavedTime__
|
|
||||||
<span id="sponsorTimesOthersTimeSavedDisplay" class="popupElement">
|
|
||||||
0
|
|
||||||
</span>
|
|
||||||
<span id="sponsorTimesOthersTimeSavedEndWord" class="popupElement">__MSG_minsLower__</span>
|
|
||||||
|
|
||||||
<span class="popupElement">__MSG_youHaveSavedTimeEnd__</span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<div id="sponsorTimesSkipsDoneContainer" class="popupElement" style="display: none">
|
|
||||||
__MSG_youHaveSkipped__
|
|
||||||
<span id="sponsorTimesSkipsDoneDisplay" class="popupElement">
|
|
||||||
0
|
|
||||||
</span>
|
|
||||||
<span id="sponsorTimesSkipsDoneEndWord" class="popupElement">__MSG_Segments__</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="sponsorTimeSavedContainer" class="popupElement" style="display: none">
|
|
||||||
__MSG_youHaveSaved__
|
|
||||||
<span id="sponsorTimeSavedDisplay" class="popupElement">
|
|
||||||
0
|
|
||||||
</span>
|
|
||||||
<span id="sponsorTimeSavedEndWord" class="popupElement">__MSG_minsLower__</span>.
|
|
||||||
|
|
||||||
</br/>
|
|
||||||
</br/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="popupElement">
|
|
||||||
__MSG_viewLeaderboard__ <a class="popupElement discreteLink" href="https://sponsor.ajay.app/stats" target="_blank">__MSG_here__</a>.
|
|
||||||
</div>
|
|
||||||
</p>
|
</p>
|
||||||
|
<sub style="margin-bottom: 12px;">__MSG_popupHint__</sub>
|
||||||
<div id="setUsernameContainer" class="popupElement">
|
<div>
|
||||||
|
<button id="sponsorStart" class="mediumButton">__MSG_sponsorStart__</button>
|
||||||
<button id="setUsernameButton" class="warningButton popupElement">__MSG_setUsername__</button>
|
|
||||||
<br/>
|
|
||||||
<sub class="popupElement">
|
|
||||||
__MSG_publicStats__ <a class="popupElement discreteLink" href="https://sponsor.ajay.app/stats" target="_blank">__MSG_here__</a>.
|
|
||||||
</sub>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div id="submissionSection" style="display: none">
|
||||||
<div id="setUsername" class="popupElement" style="display: none">
|
<b style="display: block; margin-top: 12px;">__MSG_submissionEditHint__</b>
|
||||||
<h3>__MSG_setUsername__</h3>
|
<div id="submitTimesContainer" style="display: none; margin-top: 12px;">
|
||||||
|
<button id="submitTimes" class="mediumButton">__MSG_submitTimesButton__</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1 class="recordingSubtitle sbHeader sbSubHeader">__MSG_yourWork__</h1>
|
||||||
|
<div class="sidebyside">
|
||||||
|
<div id="usernameElement">
|
||||||
|
<div>
|
||||||
|
<p>__MSG_Username__:</p>
|
||||||
|
<div id="setUsernameContainer">
|
||||||
|
<p id="usernameValue"></p>
|
||||||
|
<button id="setUsernameButton" title="__MSG_setUsername__">
|
||||||
|
<img src="/icons/pencil.svg" alt="__MSG_setUsername__" width="16" height="16" id="sbPopupIconEdit">
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div id="setUsername" style="display: none">
|
||||||
<div id="setUsernameStatusContainer" style="display: none">
|
<div id="setUsernameStatusContainer" style="display: none">
|
||||||
<h2 id="setUsernameStatus"></h2>
|
<p id="setUsernameStatus"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input id="usernameInput" hint="Username"></input>
|
<input id="usernameInput" hint="Username"></input>
|
||||||
|
<button id="submitUsername">
|
||||||
<br/>
|
<img src="/icons/check.svg" alt="__MSG_setUsername__" width="16" height="16" id="sbPopupIconCheck">
|
||||||
<br/>
|
</button>
|
||||||
|
</div>
|
||||||
<button id="submitUsername" class="warningButton popupElement">__MSG_setUsername__</button>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="sponsorTimesContributionsContainer" class="hidden">
|
||||||
|
<div>
|
||||||
|
<p>__MSG_Submissions__:</p>
|
||||||
|
<span id="sponsorTimesContributionsDisplay">
|
||||||
|
0
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsButtonContainer" class="popupElement">
|
<span id="sponsorTimesViewsContainer" style="display: none">
|
||||||
<br/>
|
__MSG_savedPeopleFrom__
|
||||||
<br/>
|
<b><span id="sponsorTimesViewsDisplay">
|
||||||
|
0
|
||||||
<button id="optionsButton" class="dangerButton popupElement">__MSG_Options__</button>
|
</span></b>
|
||||||
|
<span id="sponsorTimesViewsDisplayEndWord">__MSG_Segments__</span>
|
||||||
<br/>
|
<br>
|
||||||
|
(<b><span id="sponsorTimesOthersTimeSavedDisplay">0</span>
|
||||||
<sub class="popupElement">
|
<span id="sponsorTimesOthersTimeSavedEndWord">__MSG_minsLower__</span></b>
|
||||||
__MSG_optionsInfo__
|
<span>__MSG_youHaveSavedTimeEnd__</span>).
|
||||||
</sub>
|
</span>
|
||||||
|
<div id="sponsorTimesSkipsDoneContainer" style="display: none">
|
||||||
<br/>
|
__MSG_youHaveSkipped__
|
||||||
|
<b><span id="sponsorTimesSkipsDoneDisplay">
|
||||||
|
0
|
||||||
|
</span></b>
|
||||||
|
<span id="sponsorTimesSkipsDoneEndWord">__MSG_Segments__</span>
|
||||||
|
(<b><span id="sponsorTimeSavedDisplay">
|
||||||
|
0
|
||||||
|
</span>
|
||||||
|
<span id="sponsorTimeSavedEndWord">__MSG_minsLower__</span></b>).
|
||||||
</div>
|
</div>
|
||||||
|
<footer id="sbFooter">
|
||||||
|
<a href="https://sponsor.ajay.app" target="_blank" rel="noopener">Website</a> |
|
||||||
|
<a href="https://sponsor.ajay.app/stats" target="_blank" rel="noopener">__MSG_viewLeaderboard__</a> |
|
||||||
|
<a href="https://github.com/ajayyy/SponsorBlock" target="_blank" rel="noopener">GitHub</a>
|
||||||
|
<br/>
|
||||||
|
<a href="https://discord.gg/QnmVMpU" target="_blank" rel="noopener">Discord</a> |
|
||||||
|
<a href="https://matrix.to/#/+sponsorblock:ajay.app" target="_blank" rel="noopener">Matrix</a> |
|
||||||
|
<a id="helpButton" href="#">__MSG_help__</a>
|
||||||
|
</footer>
|
||||||
|
|
||||||
<button id="showNoticeAgain" style="display: none" class="dangerButton popupElement">__MSG_showNotice__</button>
|
<button id="showNoticeAgain" style="display: none" class="dangerButton popupElement">__MSG_showNotice__</button>
|
||||||
</div>
|
</div>
|
||||||
</center>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
<!-- Scripts that need to load after the html -->
|
<!-- Scripts that need to load after the html -->
|
||||||
<script src="./js/vendor.js"></script>
|
<script src="./js/vendor.js" async></script>
|
||||||
<script src="./js/popup.js"></script>
|
<script src="./js/popup.js" async></script>
|
||||||
</html>
|
</body>
|
|
@ -32,6 +32,9 @@ chrome.runtime.onMessage.addListener(function (request, sender, callback) {
|
||||||
case "openConfig":
|
case "openConfig":
|
||||||
chrome.runtime.openOptionsPage();
|
chrome.runtime.openOptionsPage();
|
||||||
return;
|
return;
|
||||||
|
case "openHelp":
|
||||||
|
window.open(chrome.runtime.getURL('help/index_en.html'));
|
||||||
|
return;
|
||||||
case "sendRequest":
|
case "sendRequest":
|
||||||
sendRequestToCustomServer(request.type, request.url, request.data).then(async (response) => {
|
sendRequestToCustomServer(request.type, request.url, request.data).then(async (response) => {
|
||||||
callback({
|
callback({
|
||||||
|
|
|
@ -1275,9 +1275,17 @@ function openInfoMenu() {
|
||||||
|
|
||||||
sendRequestToCustomServer('GET', chrome.extension.getURL("popup.html"), function(xmlhttp) {
|
sendRequestToCustomServer('GET', chrome.extension.getURL("popup.html"), function(xmlhttp) {
|
||||||
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
||||||
const popup = document.createElement("div");
|
let popup = document.createElement("div");
|
||||||
popup.id = "sponsorBlockPopupContainer";
|
popup.id = "sponsorBlockPopupContainer";
|
||||||
popup.innerHTML = xmlhttp.responseText
|
|
||||||
|
let htmlData = xmlhttp.responseText;
|
||||||
|
// Hack to replace head data (title, favicon)
|
||||||
|
htmlData = htmlData.replace(/<head>[\S\s]*<\/head>/gi, "");
|
||||||
|
// Hack to replace body tag with div
|
||||||
|
htmlData = htmlData.replace(/<body/gi, "<div");
|
||||||
|
htmlData = htmlData.replace(/<\/body/gi, "</div");
|
||||||
|
|
||||||
|
popup.innerHTML = htmlData;
|
||||||
|
|
||||||
//close button
|
//close button
|
||||||
const closeButton = document.createElement("div");
|
const closeButton = document.createElement("div");
|
||||||
|
@ -1303,15 +1311,17 @@ function openInfoMenu() {
|
||||||
parentNode = document.getElementById("watch7-sidebar-contents");
|
parentNode = document.getElementById("watch7-sidebar-contents");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//make the logo source not 404
|
//make the logo source not 404
|
||||||
//query selector must be used since getElementByID doesn't work on a node and this isn't added to the document yet
|
//query selector must be used since getElementByID doesn't work on a node and this isn't added to the document yet
|
||||||
const logo = <HTMLImageElement> popup.querySelector("#sponsorBlockPopupLogo");
|
let logo = <HTMLImageElement> popup.querySelector("#sponsorBlockPopupLogo");
|
||||||
|
let settings = <HTMLImageElement> popup.querySelector("#sbPopupIconSettings");
|
||||||
|
let edit = <HTMLImageElement> popup.querySelector("#sbPopupIconEdit");
|
||||||
|
let check = <HTMLImageElement> popup.querySelector("#sbPopupIconCheck");
|
||||||
logo.src = chrome.extension.getURL("icons/LogoSponsorBlocker256px.png");
|
logo.src = chrome.extension.getURL("icons/LogoSponsorBlocker256px.png");
|
||||||
|
settings.src = chrome.extension.getURL("icons/settings.svg");
|
||||||
//remove the style sheet and font that are not necessary
|
edit.src = chrome.extension.getURL("icons/pencil.svg");
|
||||||
popup.querySelector("#sponsorBlockPopupFont").remove();
|
check.src = chrome.extension.getURL("icons/check.svg");
|
||||||
popup.querySelector("#sponsorBlockStyleSheet").remove();
|
check.src = chrome.extension.getURL("icons/thumb.svg");
|
||||||
|
|
||||||
parentNode.insertBefore(popup, parentNode.firstChild);
|
parentNode.insertBefore(popup, parentNode.firstChild);
|
||||||
|
|
||||||
|
|
549
src/popup.ts
549
src/popup.ts
|
@ -47,42 +47,35 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
|
|
||||||
const PageElements: any = {};
|
const PageElements: any = {};
|
||||||
|
|
||||||
["sponsorStart",
|
[
|
||||||
|
"sponsorblockPopup",
|
||||||
|
"sponsorStart",
|
||||||
// Top toggles
|
// Top toggles
|
||||||
"whitelistChannel",
|
"whitelistChannel",
|
||||||
"unwhitelistChannel",
|
"unwhitelistChannel",
|
||||||
|
"whitelistToggle",
|
||||||
"whitelistForceCheck",
|
"whitelistForceCheck",
|
||||||
"disableSkipping",
|
"disableSkipping",
|
||||||
"enableSkipping",
|
"enableSkipping",
|
||||||
|
"toggleSwitch",
|
||||||
// Options
|
// Options
|
||||||
"showNoticeAgain",
|
"showNoticeAgain",
|
||||||
"optionsButton",
|
"optionsButton",
|
||||||
|
"helpButton",
|
||||||
// More controls
|
// More controls
|
||||||
"submitTimes",
|
"submitTimes",
|
||||||
"reportAnIssue",
|
|
||||||
// sponsorTimesContributions
|
|
||||||
"sponsorTimesContributionsContainer",
|
"sponsorTimesContributionsContainer",
|
||||||
"sponsorTimesContributionsDisplay",
|
"sponsorTimesContributionsDisplay",
|
||||||
"sponsorTimesContributionsDisplayEndWord",
|
|
||||||
// sponsorTimesViewsDisplay
|
|
||||||
"sponsorTimesViewsContainer",
|
"sponsorTimesViewsContainer",
|
||||||
"sponsorTimesViewsDisplay",
|
"sponsorTimesViewsDisplay",
|
||||||
"sponsorTimesViewsDisplayEndWord",
|
"sponsorTimesViewsDisplayEndWord",
|
||||||
// sponsorTimesOthersTimeSaved
|
|
||||||
"sponsorTimesOthersTimeSavedContainer",
|
|
||||||
"sponsorTimesOthersTimeSavedDisplay",
|
"sponsorTimesOthersTimeSavedDisplay",
|
||||||
"sponsorTimesOthersTimeSavedEndWord",
|
"sponsorTimesOthersTimeSavedEndWord",
|
||||||
// sponsorTimesSkipsDone
|
|
||||||
"sponsorTimesSkipsDoneContainer",
|
"sponsorTimesSkipsDoneContainer",
|
||||||
"sponsorTimesSkipsDoneDisplay",
|
"sponsorTimesSkipsDoneDisplay",
|
||||||
"sponsorTimesSkipsDoneEndWord",
|
"sponsorTimesSkipsDoneEndWord",
|
||||||
// sponsorTimeSaved
|
|
||||||
"sponsorTimeSavedContainer",
|
|
||||||
"sponsorTimeSavedDisplay",
|
"sponsorTimeSavedDisplay",
|
||||||
"sponsorTimeSavedEndWord",
|
"sponsorTimeSavedEndWord",
|
||||||
// discordButtons
|
|
||||||
"discordButtonContainer",
|
|
||||||
"hideDiscordButton",
|
|
||||||
// Username
|
// Username
|
||||||
"setUsernameContainer",
|
"setUsernameContainer",
|
||||||
"setUsernameButton",
|
"setUsernameButton",
|
||||||
|
@ -90,6 +83,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
"setUsernameStatus",
|
"setUsernameStatus",
|
||||||
"setUsername",
|
"setUsername",
|
||||||
"usernameInput",
|
"usernameInput",
|
||||||
|
"usernameValue",
|
||||||
"submitUsername",
|
"submitUsername",
|
||||||
// More
|
// More
|
||||||
"submissionSection",
|
"submissionSection",
|
||||||
|
@ -97,23 +91,30 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
"loadingIndicator",
|
"loadingIndicator",
|
||||||
"videoFound",
|
"videoFound",
|
||||||
"sponsorMessageTimes",
|
"sponsorMessageTimes",
|
||||||
"downloadedSponsorMessageTimes",
|
//"downloadedSponsorMessageTimes",
|
||||||
|
"whitelistButton",
|
||||||
].forEach(id => PageElements[id] = document.getElementById(id));
|
].forEach(id => PageElements[id] = document.getElementById(id));
|
||||||
|
|
||||||
//setup click listeners
|
//setup click listeners
|
||||||
PageElements.sponsorStart.addEventListener("click", sendSponsorStartMessage);
|
PageElements.sponsorStart.addEventListener("click", sendSponsorStartMessage);
|
||||||
PageElements.whitelistChannel.addEventListener("click", whitelistChannel);
|
PageElements.whitelistToggle.addEventListener("change", function() {
|
||||||
|
if (this.checked) {
|
||||||
|
whitelistChannel();
|
||||||
|
} else {
|
||||||
|
unwhitelistChannel();
|
||||||
|
}
|
||||||
|
});
|
||||||
PageElements.whitelistForceCheck.addEventListener("click", openOptions);
|
PageElements.whitelistForceCheck.addEventListener("click", openOptions);
|
||||||
PageElements.unwhitelistChannel.addEventListener("click", unwhitelistChannel);
|
PageElements.toggleSwitch.addEventListener("change", function() {
|
||||||
PageElements.disableSkipping.addEventListener("click", () => toggleSkipping(true));
|
toggleSkipping(!this.checked);
|
||||||
PageElements.enableSkipping.addEventListener("click", () => toggleSkipping(false));
|
});
|
||||||
PageElements.submitTimes.addEventListener("click", submitTimes);
|
PageElements.submitTimes.addEventListener("click", submitTimes);
|
||||||
PageElements.showNoticeAgain.addEventListener("click", showNoticeAgain);
|
PageElements.showNoticeAgain.addEventListener("click", showNoticeAgain);
|
||||||
PageElements.setUsernameButton.addEventListener("click", setUsernameButton);
|
PageElements.setUsernameButton.addEventListener("click", setUsernameButton);
|
||||||
|
PageElements.usernameValue.addEventListener("click", setUsernameButton);
|
||||||
PageElements.submitUsername.addEventListener("click", submitUsername);
|
PageElements.submitUsername.addEventListener("click", submitUsername);
|
||||||
PageElements.optionsButton.addEventListener("click", openOptions);
|
PageElements.optionsButton.addEventListener("click", openOptions);
|
||||||
PageElements.reportAnIssue.addEventListener("click", reportAnIssue);
|
PageElements.helpButton.addEventListener("click", openHelp);
|
||||||
PageElements.hideDiscordButton.addEventListener("click", hideDiscordButton);
|
|
||||||
|
|
||||||
//if true, the button now selects the end time
|
//if true, the button now selects the end time
|
||||||
let startTimeChosen = false;
|
let startTimeChosen = false;
|
||||||
|
@ -124,26 +125,12 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
//current video ID of this tab
|
//current video ID of this tab
|
||||||
let currentVideoID = null;
|
let currentVideoID = null;
|
||||||
|
|
||||||
//see if discord link can be shown
|
|
||||||
const hideDiscordLink = Config.config.hideDiscordLink;
|
|
||||||
if (hideDiscordLink == undefined || !hideDiscordLink) {
|
|
||||||
let hideDiscordLaunches = Config.config.hideDiscordLaunches;
|
|
||||||
//only if less than 10 launches
|
|
||||||
if (hideDiscordLaunches == undefined || hideDiscordLaunches < 10) {
|
|
||||||
PageElements.discordButtonContainer.style.display = null;
|
|
||||||
|
|
||||||
if (hideDiscordLaunches == undefined) {
|
|
||||||
hideDiscordLaunches = 1;
|
|
||||||
}
|
|
||||||
Config.config.hideDiscordLaunches = hideDiscordLaunches + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//show proper disable skipping button
|
//show proper disable skipping button
|
||||||
const disableSkipping = Config.config.disableSkipping;
|
const disableSkipping = Config.config.disableSkipping;
|
||||||
if (disableSkipping != undefined && disableSkipping) {
|
if (disableSkipping != undefined && disableSkipping) {
|
||||||
PageElements.disableSkipping.style.display = "none";
|
PageElements.disableSkipping.style.display = "none";
|
||||||
PageElements.enableSkipping.style.display = "unset";
|
PageElements.enableSkipping.style.display = "unset";
|
||||||
|
PageElements.toggleSwitch.checked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//if the don't show notice again variable is true, an option to
|
//if the don't show notice again variable is true, an option to
|
||||||
|
@ -153,15 +140,16 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
PageElements.showNoticeAgain.style.display = "unset";
|
PageElements.showNoticeAgain.style.display = "unset";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
utils.sendRequestToServer("GET", "/api/getUsername?userID=" + Config.config.userID, (res) => {
|
||||||
|
if (res.status === 200) {
|
||||||
|
PageElements.usernameValue.innerText = JSON.parse(res.responseText).userName
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
//get the amount of times this user has contributed and display it to thank them
|
//get the amount of times this user has contributed and display it to thank them
|
||||||
if (Config.config.sponsorTimesContributed != undefined) {
|
if (Config.config.sponsorTimesContributed != undefined) {
|
||||||
if (Config.config.sponsorTimesContributed !== 1) {
|
PageElements.sponsorTimesContributionsDisplay.innerText = Config.config.sponsorTimesContributed.toLocaleString();
|
||||||
PageElements.sponsorTimesContributionsDisplayEndWord.innerText = chrome.i18n.getMessage("Segments");
|
PageElements.sponsorTimesContributionsContainer.classList.remove("hidden");
|
||||||
} else {
|
|
||||||
PageElements.sponsorTimesContributionsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment");
|
|
||||||
}
|
|
||||||
PageElements.sponsorTimesContributionsDisplay.innerText = Config.config.sponsorTimesContributed;
|
|
||||||
PageElements.sponsorTimesContributionsContainer.style.display = "unset";
|
|
||||||
|
|
||||||
//get the userID
|
//get the userID
|
||||||
const userID = Config.config.userID;
|
const userID = Config.config.userID;
|
||||||
|
@ -178,7 +166,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment");
|
PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment");
|
||||||
}
|
}
|
||||||
|
|
||||||
PageElements.sponsorTimesViewsDisplay.innerText = viewCount;
|
PageElements.sponsorTimesViewsDisplay.innerText = viewCount.toLocaleString();
|
||||||
PageElements.sponsorTimesViewsContainer.style.display = "unset";
|
PageElements.sponsorTimesViewsContainer.style.display = "unset";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +184,6 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved);
|
PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved);
|
||||||
PageElements.sponsorTimesOthersTimeSavedContainer.style.display = "unset";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -211,7 +198,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
PageElements.sponsorTimesSkipsDoneEndWord.innerText = chrome.i18n.getMessage("Segment");
|
PageElements.sponsorTimesSkipsDoneEndWord.innerText = chrome.i18n.getMessage("Segment");
|
||||||
}
|
}
|
||||||
|
|
||||||
PageElements.sponsorTimesSkipsDoneDisplay.innerText = Config.config.skipCount;
|
PageElements.sponsorTimesSkipsDoneDisplay.innerText = Config.config.skipCount.toLocaleString();
|
||||||
PageElements.sponsorTimesSkipsDoneContainer.style.display = "unset";
|
PageElements.sponsorTimesSkipsDoneContainer.style.display = "unset";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,9 +211,11 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
PageElements.sponsorTimeSavedDisplay.innerText = getFormattedHours(Config.config.minutesSaved);
|
PageElements.sponsorTimeSavedDisplay.innerText = getFormattedHours(Config.config.minutesSaved);
|
||||||
PageElements.sponsorTimeSavedContainer.style.display = "unset";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Must be delayed so it only happens once loaded
|
||||||
|
setTimeout(() => PageElements.sponsorblockPopup.classList.remove("preload"), 250);
|
||||||
|
|
||||||
messageHandler.query({
|
messageHandler.query({
|
||||||
active: true,
|
active: true,
|
||||||
currentWindow: true
|
currentWindow: true
|
||||||
|
@ -252,7 +241,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
//load video times for this video
|
//load video times for this video
|
||||||
const sponsorTimesStorage = Config.config.segmentTimes.get(currentVideoID);
|
let sponsorTimesStorage = Config.config.segmentTimes.get(currentVideoID);
|
||||||
if (sponsorTimesStorage != undefined && sponsorTimesStorage.length > 0) {
|
if (sponsorTimesStorage != undefined && sponsorTimesStorage.length > 0) {
|
||||||
if (sponsorTimesStorage[sponsorTimesStorage.length - 1] != undefined && sponsorTimesStorage[sponsorTimesStorage.length - 1].segment.length < 2) {
|
if (sponsorTimesStorage[sponsorTimesStorage.length - 1] != undefined && sponsorTimesStorage[sponsorTimesStorage.length - 1].segment.length < 2) {
|
||||||
startTimeChosen = true;
|
startTimeChosen = true;
|
||||||
|
@ -285,7 +274,8 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
//if request is undefined, then the page currently being browsed is not YouTube
|
//if request is undefined, then the page currently being browsed is not YouTube
|
||||||
if (request != undefined) {
|
if (request != undefined) {
|
||||||
//remove loading text
|
//remove loading text
|
||||||
PageElements.mainControls.style.display = "unset"
|
PageElements.mainControls.style.display = "flex";
|
||||||
|
PageElements.whitelistButton.classList.remove("hidden");
|
||||||
PageElements.loadingIndicator.style.display = "none";
|
PageElements.loadingIndicator.style.display = "none";
|
||||||
|
|
||||||
if (request.found) {
|
if (request.found) {
|
||||||
|
@ -309,9 +299,8 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
if (response.value) {
|
if (response.value) {
|
||||||
PageElements.whitelistChannel.style.display = "none";
|
PageElements.whitelistChannel.style.display = "none";
|
||||||
PageElements.unwhitelistChannel.style.display = "unset";
|
PageElements.unwhitelistChannel.style.display = "unset";
|
||||||
|
PageElements.whitelistToggle.checked = true;
|
||||||
PageElements.downloadedSponsorMessageTimes.innerText = chrome.i18n.getMessage("channelWhitelisted");
|
document.querySelectorAll('.SBWhitelistIcon')[0].classList.add("rotated");
|
||||||
PageElements.downloadedSponsorMessageTimes.style.fontWeight = "bold";
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -333,7 +322,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
function startSponsorCallback(response) {
|
function startSponsorCallback(response) {
|
||||||
const sponsorTimesIndex = sponsorTimes.length - (startTimeChosen ? 1 : 0);
|
let sponsorTimesIndex = sponsorTimes.length - (startTimeChosen ? 1 : 0);
|
||||||
|
|
||||||
if (sponsorTimes[sponsorTimesIndex] == undefined) {
|
if (sponsorTimes[sponsorTimesIndex] == undefined) {
|
||||||
sponsorTimes[sponsorTimesIndex] = {
|
sponsorTimes[sponsorTimesIndex] = {
|
||||||
|
@ -372,31 +361,41 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
//display the video times from the array at the top, in a different section
|
//display the video times from the array at the top, in a different section
|
||||||
function displayDownloadedSponsorTimes(request: {found: boolean, sponsorTimes: SponsorTime[]}) {
|
function displayDownloadedSponsorTimes(request: {found: boolean, sponsorTimes: SponsorTime[]}) {
|
||||||
if (request.sponsorTimes != undefined) {
|
if (request.sponsorTimes != undefined) {
|
||||||
//set it to the message
|
|
||||||
if (PageElements.downloadedSponsorMessageTimes.innerText != chrome.i18n.getMessage("channelWhitelisted")) {
|
// Sort list by start time
|
||||||
PageElements.downloadedSponsorMessageTimes.innerText = getSponsorTimesMessage(request.sponsorTimes);
|
let segmentTimes = request.sponsorTimes
|
||||||
}
|
.sort((a, b) => a.segment[1] - b.segment[1])
|
||||||
|
.sort((a, b) => a.segment[0] - b.segment[0]);
|
||||||
|
|
||||||
//add them as buttons to the issue reporting container
|
//add them as buttons to the issue reporting container
|
||||||
const container = document.getElementById("issueReporterTimeButtons");
|
let container = document.getElementById("issueReporterTimeButtons");
|
||||||
for (let i = 0; i < request.sponsorTimes.length; i++) {
|
for (let i = 0; i < segmentTimes.length; i++) {
|
||||||
const sponsorTimeButton = document.createElement("button");
|
let UUID = segmentTimes[i].UUID;
|
||||||
sponsorTimeButton.className = "warningButton popupElement";
|
|
||||||
|
let sponsorTimeButton = document.createElement("button");
|
||||||
|
sponsorTimeButton.className = "segmentTimeButton popupElement";
|
||||||
|
|
||||||
|
let prefix = chrome.i18n.getMessage("category_" + segmentTimes[i].category) + ": ";
|
||||||
|
|
||||||
let extraInfo = "";
|
let extraInfo = "";
|
||||||
if (request.sponsorTimes[i].hidden === SponsorHideType.Downvoted) {
|
if (segmentTimes[i].hidden === SponsorHideType.Downvoted) {
|
||||||
//this one is downvoted
|
//this one is downvoted
|
||||||
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDownvote") + ")";
|
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDownvote") + ")";
|
||||||
} else if (request.sponsorTimes[i].hidden === SponsorHideType.MinimumDuration) {
|
} else if (segmentTimes[i].hidden === SponsorHideType.MinimumDuration) {
|
||||||
//this one is too short
|
//this one is too short
|
||||||
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDuration") + ")";
|
extraInfo = " (" + chrome.i18n.getMessage("hiddenDueToDuration") + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
sponsorTimeButton.innerText = getFormattedTime(request.sponsorTimes[i].segment[0]) + " " + chrome.i18n.getMessage("to") + " " + getFormattedTime(request.sponsorTimes[i].segment[1]) + extraInfo;
|
sponsorTimeButton.innerText = prefix + getFormattedTime(segmentTimes[i].segment[0]) + " " + chrome.i18n.getMessage("to") + " " + getFormattedTime(segmentTimes[i].segment[1]) + extraInfo;
|
||||||
|
|
||||||
const votingButtons = document.createElement("div");
|
let categoryColorCircle = document.createElement("span");
|
||||||
|
categoryColorCircle.id = "sponsorTimesCategoryColorCircle" + UUID;
|
||||||
|
categoryColorCircle.style.backgroundColor = Config.config.barTypes[segmentTimes[i].category].color;
|
||||||
|
categoryColorCircle.classList.add("dot");
|
||||||
|
categoryColorCircle.classList.add("sponsorTimesCategoryColorCircle");
|
||||||
|
|
||||||
const UUID = request.sponsorTimes[i].UUID;
|
let votingButtons = document.createElement("div");
|
||||||
|
votingButtons.classList.add("votingButtons");
|
||||||
|
|
||||||
//thumbs up and down buttons
|
//thumbs up and down buttons
|
||||||
const voteButtonsContainer = document.createElement("div");
|
const voteButtonsContainer = document.createElement("div");
|
||||||
|
@ -404,346 +403,47 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
voteButtonsContainer.setAttribute("align", "center");
|
voteButtonsContainer.setAttribute("align", "center");
|
||||||
voteButtonsContainer.style.display = "none"
|
voteButtonsContainer.style.display = "none"
|
||||||
|
|
||||||
const upvoteButton = document.createElement("img");
|
let upvoteButton = document.createElement("img");
|
||||||
upvoteButton.id = "sponsorTimesUpvoteButtonsContainer" + UUID;
|
upvoteButton.id = "sponsorTimesUpvoteButtonsContainer" + UUID;
|
||||||
upvoteButton.className = "voteButton popupElement";
|
upvoteButton.className = "voteButton";
|
||||||
upvoteButton.src = chrome.extension.getURL("icons/upvote.png");
|
upvoteButton.src = chrome.extension.getURL("icons/thumbs_up.svg");
|
||||||
upvoteButton.addEventListener("click", () => vote(1, UUID));
|
upvoteButton.addEventListener("click", () => vote(1, UUID));
|
||||||
|
|
||||||
const downvoteButton = document.createElement("img");
|
let downvoteButton = document.createElement("img");
|
||||||
downvoteButton.id = "sponsorTimesDownvoteButtonsContainer" + UUID;
|
downvoteButton.id = "sponsorTimesDownvoteButtonsContainer" + UUID;
|
||||||
downvoteButton.className = "voteButton popupElement";
|
downvoteButton.className = "voteButton";
|
||||||
downvoteButton.src = chrome.extension.getURL("icons/downvote.png");
|
downvoteButton.src = chrome.extension.getURL("icons/thumbs_down.svg");
|
||||||
downvoteButton.addEventListener("click", () => vote(0, UUID));
|
downvoteButton.addEventListener("click", () => vote(0, UUID));
|
||||||
|
|
||||||
//add thumbs up and down buttons to the container
|
//add thumbs up and down buttons to the container
|
||||||
voteButtonsContainer.appendChild(document.createElement("br"));
|
|
||||||
voteButtonsContainer.appendChild(document.createElement("br"));
|
|
||||||
voteButtonsContainer.appendChild(upvoteButton);
|
voteButtonsContainer.appendChild(upvoteButton);
|
||||||
voteButtonsContainer.appendChild(downvoteButton);
|
voteButtonsContainer.appendChild(downvoteButton);
|
||||||
|
|
||||||
//add click listener to open up vote panel
|
//add click listener to open up vote panel
|
||||||
sponsorTimeButton.addEventListener("click", function() {
|
sponsorTimeButton.addEventListener("click", function() {
|
||||||
voteButtonsContainer.style.display = "unset";
|
voteButtonsContainer.style.removeProperty("display");
|
||||||
});
|
});
|
||||||
|
|
||||||
container.appendChild(sponsorTimeButton);
|
// Will contain request status
|
||||||
container.appendChild(voteButtonsContainer);
|
let voteStatusContainer = document.createElement("div");
|
||||||
|
voteStatusContainer.id = "sponsorTimesVoteStatusContainer" + UUID;
|
||||||
|
voteStatusContainer.classList.add("sponsorTimesVoteStatusContainer");
|
||||||
|
voteStatusContainer.style.display = "none";
|
||||||
|
|
||||||
//if it is not the last iteration
|
let thanksForVotingText = document.createElement("div");
|
||||||
if (i != request.sponsorTimes.length - 1) {
|
thanksForVotingText.id = "sponsorTimesThanksForVotingText" + UUID;
|
||||||
container.appendChild(document.createElement("br"));
|
thanksForVotingText.classList.add("sponsorTimesThanksForVotingText");
|
||||||
container.appendChild(document.createElement("br"));
|
voteStatusContainer.appendChild(thanksForVotingText);
|
||||||
|
|
||||||
|
votingButtons.append(categoryColorCircle);
|
||||||
|
votingButtons.append(sponsorTimeButton);
|
||||||
|
votingButtons.append(voteButtonsContainer);
|
||||||
|
votingButtons.append(voteStatusContainer);
|
||||||
|
|
||||||
|
container.appendChild(votingButtons);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//get the message that visually displays the video times
|
|
||||||
function getSponsorTimesMessage(sponsorTimes: SponsorTime[]) {
|
|
||||||
let sponsorTimesMessage = "";
|
|
||||||
|
|
||||||
for (let i = 0; i < sponsorTimes.length; i++) {
|
|
||||||
for (let s = 0; s < sponsorTimes[i].segment.length; s++) {
|
|
||||||
let timeMessage = getFormattedTime(sponsorTimes[i].segment[s]);
|
|
||||||
//if this is an end time
|
|
||||||
if (s == 1) {
|
|
||||||
timeMessage = " " + chrome.i18n.getMessage("to") + " " + timeMessage;
|
|
||||||
} else if (i > 0) {
|
|
||||||
//add commas if necessary
|
|
||||||
timeMessage = ", " + timeMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sponsorTimes[i].hidden === SponsorHideType.Downvoted) {
|
|
||||||
//this one is downvoted
|
|
||||||
timeMessage += " (" + chrome.i18n.getMessage("hiddenDueToDownvote") + ")";
|
|
||||||
} else if (sponsorTimes[i].hidden === SponsorHideType.MinimumDuration) {
|
|
||||||
//this one is too short
|
|
||||||
timeMessage += " (" + chrome.i18n.getMessage("hiddenDueToDuration") + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
sponsorTimesMessage += timeMessage;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return sponsorTimesMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
//get the message that visually displays the video times
|
|
||||||
//this version is a div that contains each with delete buttons
|
|
||||||
function getSponsorTimesMessageDiv(sponsorTimes) {
|
|
||||||
// let sponsorTimesMessage = "";
|
|
||||||
const sponsorTimesContainer = document.createElement("div");
|
|
||||||
sponsorTimesContainer.id = "sponsorTimesContainer";
|
|
||||||
|
|
||||||
for (let i = 0; i < sponsorTimes.length; i++) {
|
|
||||||
const currentSponsorTimeContainer = document.createElement("div");
|
|
||||||
currentSponsorTimeContainer.id = "sponsorTimeContainer" + i;
|
|
||||||
currentSponsorTimeContainer.className = "sponsorTime popupElement";
|
|
||||||
let currentSponsorTimeMessage = "";
|
|
||||||
|
|
||||||
const deleteButton = document.createElement("span");
|
|
||||||
deleteButton.id = "sponsorTimeDeleteButton" + i;
|
|
||||||
deleteButton.innerText = "Delete";
|
|
||||||
deleteButton.className = "mediumLink popupElement";
|
|
||||||
const index = i;
|
|
||||||
deleteButton.addEventListener("click", () => deleteSponsorTime(index));
|
|
||||||
|
|
||||||
const previewButton = document.createElement("span");
|
|
||||||
previewButton.id = "sponsorTimePreviewButton" + i;
|
|
||||||
previewButton.innerText = "Preview";
|
|
||||||
previewButton.className = "mediumLink popupElement";
|
|
||||||
previewButton.addEventListener("click", () => previewSponsorTime(index));
|
|
||||||
|
|
||||||
const editButton = document.createElement("span");
|
|
||||||
editButton.id = "sponsorTimeEditButton" + i;
|
|
||||||
editButton.innerText = "Edit";
|
|
||||||
editButton.className = "mediumLink popupElement";
|
|
||||||
editButton.addEventListener("click", () => editSponsorTime(index));
|
|
||||||
|
|
||||||
for (let s = 0; s < sponsorTimes[i].length; s++) {
|
|
||||||
let timeMessage = getFormattedTime(sponsorTimes[i][s]);
|
|
||||||
//if this is an end time
|
|
||||||
if (s == 1) {
|
|
||||||
timeMessage = " " + chrome.i18n.getMessage("to") + " " + timeMessage;
|
|
||||||
} else if (i > 0) {
|
|
||||||
//add commas if necessary
|
|
||||||
timeMessage = timeMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
currentSponsorTimeMessage += timeMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
currentSponsorTimeContainer.innerText = currentSponsorTimeMessage;
|
|
||||||
|
|
||||||
sponsorTimesContainer.appendChild(currentSponsorTimeContainer);
|
|
||||||
sponsorTimesContainer.appendChild(deleteButton);
|
|
||||||
|
|
||||||
//only if it is a complete sponsor time
|
|
||||||
if (sponsorTimes[i].length > 1) {
|
|
||||||
sponsorTimesContainer.appendChild(previewButton);
|
|
||||||
sponsorTimesContainer.appendChild(editButton);
|
|
||||||
|
|
||||||
currentSponsorTimeContainer.addEventListener("click", () => editSponsorTime(index));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return sponsorTimesContainer;
|
|
||||||
}
|
|
||||||
|
|
||||||
function previewSponsorTime(index) {
|
|
||||||
let skipTime = sponsorTimes[index].segment[0];
|
|
||||||
|
|
||||||
if (document.getElementById("startTimeMinutes" + index) != null) {
|
|
||||||
//edit is currently open, use that time
|
|
||||||
|
|
||||||
skipTime = getSponsorTimeEditTimes("startTime", index);
|
|
||||||
|
|
||||||
//save the edit
|
|
||||||
saveSponsorTimeEdit(index, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
messageHandler.query({
|
|
||||||
active: true,
|
|
||||||
currentWindow: true
|
|
||||||
}, tabs => {
|
|
||||||
messageHandler.sendMessage(
|
|
||||||
tabs[0].id, {
|
|
||||||
message: "skipToTime",
|
|
||||||
time: skipTime - 2
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function editSponsorTime(index) {
|
|
||||||
if (document.getElementById("startTimeMinutes" + index) != null) {
|
|
||||||
//already open
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//hide submit button
|
|
||||||
document.getElementById("submitTimesContainer").style.display = "none";
|
|
||||||
|
|
||||||
const sponsorTimeContainer = document.getElementById("sponsorTimeContainer" + index);
|
|
||||||
|
|
||||||
//the button to set the current time
|
|
||||||
const startTimeNowButton = document.createElement("span");
|
|
||||||
startTimeNowButton.id = "startTimeNowButton" + index;
|
|
||||||
startTimeNowButton.innerText = "(Now)";
|
|
||||||
startTimeNowButton.className = "tinyLink popupElement";
|
|
||||||
startTimeNowButton.addEventListener("click", () => setEditTimeToCurrentTime("startTime", index));
|
|
||||||
|
|
||||||
//get sponsor time minutes and seconds boxes
|
|
||||||
const startTimeMinutes = document.createElement("input");
|
|
||||||
startTimeMinutes.id = "startTimeMinutes" + index;
|
|
||||||
startTimeMinutes.className = "sponsorTime popupElement";
|
|
||||||
startTimeMinutes.type = "text";
|
|
||||||
startTimeMinutes.value = String(getTimeInMinutes(sponsorTimes[index].segment[0]));
|
|
||||||
startTimeMinutes.style.width = "45px";
|
|
||||||
|
|
||||||
const startTimeSeconds = document.createElement("input");
|
|
||||||
startTimeSeconds.id = "startTimeSeconds" + index;
|
|
||||||
startTimeSeconds.className = "sponsorTime popupElement";
|
|
||||||
startTimeSeconds.type = "text";
|
|
||||||
startTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index].segment[0]);
|
|
||||||
startTimeSeconds.style.width = "60px";
|
|
||||||
|
|
||||||
const endTimeMinutes = document.createElement("input");
|
|
||||||
endTimeMinutes.id = "endTimeMinutes" + index;
|
|
||||||
endTimeMinutes.className = "sponsorTime popupElement";
|
|
||||||
endTimeMinutes.type = "text";
|
|
||||||
endTimeMinutes.value = String(getTimeInMinutes(sponsorTimes[index].segment[1]));
|
|
||||||
endTimeMinutes.style.width = "45px";
|
|
||||||
|
|
||||||
const endTimeSeconds = document.createElement("input");
|
|
||||||
endTimeSeconds.id = "endTimeSeconds" + index;
|
|
||||||
endTimeSeconds.className = "sponsorTime popupElement";
|
|
||||||
endTimeSeconds.type = "text";
|
|
||||||
endTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index].segment[1]);
|
|
||||||
endTimeSeconds.style.width = "60px";
|
|
||||||
|
|
||||||
//the button to set the current time
|
|
||||||
const endTimeNowButton = document.createElement("span");
|
|
||||||
endTimeNowButton.id = "endTimeNowButton" + index;
|
|
||||||
endTimeNowButton.innerText = "(Now)";
|
|
||||||
endTimeNowButton.className = "tinyLink popupElement";
|
|
||||||
endTimeNowButton.addEventListener("click", () => setEditTimeToCurrentTime("endTime", index));
|
|
||||||
|
|
||||||
const colonText = document.createElement("span");
|
|
||||||
colonText.innerText = ":";
|
|
||||||
|
|
||||||
const toText = document.createElement("span");
|
|
||||||
toText.innerText = " " + chrome.i18n.getMessage("to") + " ";
|
|
||||||
|
|
||||||
//remove all children to replace
|
|
||||||
while (sponsorTimeContainer.firstChild) {
|
|
||||||
sponsorTimeContainer.removeChild(sponsorTimeContainer.firstChild);
|
|
||||||
}
|
|
||||||
|
|
||||||
sponsorTimeContainer.appendChild(startTimeNowButton);
|
|
||||||
sponsorTimeContainer.appendChild(startTimeMinutes);
|
|
||||||
sponsorTimeContainer.appendChild(colonText);
|
|
||||||
sponsorTimeContainer.appendChild(startTimeSeconds);
|
|
||||||
sponsorTimeContainer.appendChild(toText);
|
|
||||||
sponsorTimeContainer.appendChild(endTimeMinutes);
|
|
||||||
sponsorTimeContainer.appendChild(colonText);
|
|
||||||
sponsorTimeContainer.appendChild(endTimeSeconds);
|
|
||||||
sponsorTimeContainer.appendChild(endTimeNowButton);
|
|
||||||
|
|
||||||
//add save button and remove edit button
|
|
||||||
const saveButton = document.createElement("span");
|
|
||||||
saveButton.id = "sponsorTimeSaveButton" + index;
|
|
||||||
saveButton.innerText = "Save";
|
|
||||||
saveButton.className = "mediumLink popupElement";
|
|
||||||
saveButton.addEventListener("click", () => saveSponsorTimeEdit(index));
|
|
||||||
|
|
||||||
const editButton = document.getElementById("sponsorTimeEditButton" + index);
|
|
||||||
const sponsorTimesContainer = document.getElementById("sponsorTimesContainer");
|
|
||||||
|
|
||||||
sponsorTimesContainer.replaceChild(saveButton, editButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setEditTimeToCurrentTime(idStartName, index) {
|
|
||||||
messageHandler.query({
|
|
||||||
active: true,
|
|
||||||
currentWindow: true
|
|
||||||
}, tabs => {
|
|
||||||
messageHandler.sendMessage(
|
|
||||||
tabs[0].id,
|
|
||||||
{message: "getCurrentTime"},
|
|
||||||
function (response) {
|
|
||||||
const minutes = <HTMLInputElement> <unknown> document.getElementById(idStartName + "Minutes" + index);
|
|
||||||
const seconds = <HTMLInputElement> <unknown> document.getElementById(idStartName + "Seconds" + index);
|
|
||||||
|
|
||||||
minutes.value = String(getTimeInMinutes(response.currentTime));
|
|
||||||
seconds.value = getTimeInFormattedSeconds(response.currentTime);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//id start name is whether it is the startTime or endTime
|
|
||||||
//gives back the time in seconds
|
|
||||||
function getSponsorTimeEditTimes(idStartName, index): number {
|
|
||||||
const minutes = <HTMLInputElement> <unknown> document.getElementById(idStartName + "Minutes" + index);
|
|
||||||
const seconds = <HTMLInputElement> <unknown> document.getElementById(idStartName + "Seconds" + index);
|
|
||||||
|
|
||||||
return parseInt(minutes.value) * 60 + parseFloat(seconds.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
function saveSponsorTimeEdit(index, closeEditMode = true) {
|
|
||||||
sponsorTimes[index].segment[0] = getSponsorTimeEditTimes("startTime", index);
|
|
||||||
sponsorTimes[index].segment[1] = getSponsorTimeEditTimes("endTime", index);
|
|
||||||
|
|
||||||
//save this
|
|
||||||
Config.config.segmentTimes.set(currentVideoID, sponsorTimes);
|
|
||||||
|
|
||||||
messageHandler.query({
|
|
||||||
active: true,
|
|
||||||
currentWindow: true
|
|
||||||
}, tabs => {
|
|
||||||
messageHandler.sendMessage(
|
|
||||||
tabs[0].id,
|
|
||||||
{message: "sponsorDataChanged"}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (closeEditMode) {
|
|
||||||
showSubmitTimesIfNecessary();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//deletes the sponsor time submitted at an index
|
|
||||||
function deleteSponsorTime(index) {
|
|
||||||
//if it is not a complete sponsor time
|
|
||||||
if (sponsorTimes[index].segment.length < 2) {
|
|
||||||
messageHandler.query({
|
|
||||||
active: true,
|
|
||||||
currentWindow: true
|
|
||||||
}, function(tabs) {
|
|
||||||
messageHandler.sendMessage(tabs[0].id, {
|
|
||||||
message: "changeStartSponsorButton",
|
|
||||||
showStartSponsor: true,
|
|
||||||
uploadButtonVisible: false
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
resetStartTimeChosen();
|
|
||||||
}
|
|
||||||
|
|
||||||
sponsorTimes.splice(index, 1);
|
|
||||||
|
|
||||||
//save this
|
|
||||||
Config.config.segmentTimes.set(currentVideoID, sponsorTimes);
|
|
||||||
|
|
||||||
//if they are all removed
|
|
||||||
if (sponsorTimes.length == 0) {
|
|
||||||
//update chrome tab
|
|
||||||
messageHandler.query({
|
|
||||||
active: true,
|
|
||||||
currentWindow: true
|
|
||||||
}, function(tabs) {
|
|
||||||
messageHandler.sendMessage(tabs[0].id, {
|
|
||||||
message: "changeStartSponsorButton",
|
|
||||||
showStartSponsor: true,
|
|
||||||
uploadButtonVisible: false
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//hide submission section
|
|
||||||
document.getElementById("submissionSection").style.display = "none";
|
|
||||||
}
|
|
||||||
|
|
||||||
messageHandler.query({
|
|
||||||
active: true,
|
|
||||||
currentWindow: true
|
|
||||||
}, tabs => {
|
|
||||||
messageHandler.sendMessage(
|
|
||||||
tabs[0].id,
|
|
||||||
{message: "sponsorDataChanged"}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function submitTimes() {
|
function submitTimes() {
|
||||||
if (sponsorTimes.length > 0) {
|
if (sponsorTimes.length > 0) {
|
||||||
|
@ -786,7 +486,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
//check if an end time has been specified for the latest sponsor time
|
//check if an end time has been specified for the latest sponsor time
|
||||||
if (sponsorTimes.length > 0 && sponsorTimes[sponsorTimes.length - 1].segment.length > 1) {
|
if (sponsorTimes.length > 0 && sponsorTimes[sponsorTimes.length - 1].segment.length > 1) {
|
||||||
//show submit times button
|
//show submit times button
|
||||||
document.getElementById("submitTimesContainer").style.display = "unset";
|
document.getElementById("submitTimesContainer").style.display = "flex";
|
||||||
} else {
|
} else {
|
||||||
//hide submit times button
|
//hide submit times button
|
||||||
document.getElementById("submitTimesContainer").style.display = "none";
|
document.getElementById("submitTimesContainer").style.display = "none";
|
||||||
|
@ -798,29 +498,24 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
chrome.runtime.sendMessage({"message": "openConfig"});
|
chrome.runtime.sendMessage({"message": "openConfig"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openHelp() {
|
||||||
|
chrome.runtime.sendMessage({"message": "openHelp"});
|
||||||
|
}
|
||||||
|
|
||||||
//make the options username setting option visible
|
//make the options username setting option visible
|
||||||
function setUsernameButton() {
|
function setUsernameButton() {
|
||||||
//get username from the server
|
PageElements.usernameInput.value = PageElements.usernameValue.innerText;
|
||||||
utils.sendRequestToServer("GET", "/api/getUsername?userID=" + Config.config.userID, function (response) {
|
|
||||||
if (response.status == 200) {
|
|
||||||
PageElements.usernameInput.value = JSON.parse(response.responseText).userName;
|
|
||||||
|
|
||||||
PageElements.submitUsername.style.display = "unset";
|
PageElements.submitUsername.style.display = "unset";
|
||||||
PageElements.usernameInput.style.display = "unset";
|
PageElements.usernameInput.style.display = "unset";
|
||||||
|
|
||||||
PageElements.setUsernameContainer.style.display = "none";
|
PageElements.setUsernameContainer.style.display = "none";
|
||||||
PageElements.setUsername.style.display = "unset";
|
PageElements.setUsername.style.display = "flex";
|
||||||
PageElements
|
PageElements.setUsername.classList.add("SBExpanded");
|
||||||
PageElements.setUsernameStatusContainer.style.display = "none";
|
|
||||||
} else {
|
|
||||||
PageElements.setUsername.style.display = "unset";
|
|
||||||
PageElements.submitUsername.style.display = "none";
|
|
||||||
PageElements.usernameInput.style.display = "none";
|
|
||||||
|
|
||||||
PageElements.setUsernameStatusContainer.style.display = "unset";
|
PageElements.setUsernameStatusContainer.style.display = "none";
|
||||||
PageElements.setUsernameStatus.innerText = utils.getErrorMessage(response.status);
|
|
||||||
}
|
PageElements.sponsorTimesContributionsContainer.classList.add("hidden");
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//submit the new username
|
//submit the new username
|
||||||
|
@ -829,14 +524,19 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
PageElements.setUsernameStatusContainer.style.display = "unset";
|
PageElements.setUsernameStatusContainer.style.display = "unset";
|
||||||
PageElements.setUsernameStatus.innerText = chrome.i18n.getMessage("Loading");
|
PageElements.setUsernameStatus.innerText = chrome.i18n.getMessage("Loading");
|
||||||
|
|
||||||
//get the userID
|
|
||||||
utils.sendRequestToServer("POST", "/api/setUsername?userID=" + Config.config.userID + "&username=" + PageElements.usernameInput.value, function (response) {
|
utils.sendRequestToServer("POST", "/api/setUsername?userID=" + Config.config.userID + "&username=" + PageElements.usernameInput.value, function (response) {
|
||||||
if (response.status == 200) {
|
if (response.status == 200) {
|
||||||
//submitted
|
//submitted
|
||||||
PageElements.submitUsername.style.display = "none";
|
PageElements.submitUsername.style.display = "none";
|
||||||
PageElements.usernameInput.style.display = "none";
|
PageElements.usernameInput.style.display = "none";
|
||||||
|
|
||||||
PageElements.setUsernameStatus.innerText = chrome.i18n.getMessage("success");
|
PageElements.setUsernameContainer.style.removeProperty("display");
|
||||||
|
PageElements.setUsername.classList.remove("SBExpanded");
|
||||||
|
PageElements.usernameValue.innerText = PageElements.usernameInput.value;
|
||||||
|
|
||||||
|
PageElements.setUsernameStatusContainer.style.display = "none";
|
||||||
|
|
||||||
|
PageElements.sponsorTimesContributionsContainer.classList.remove("hidden");
|
||||||
} else {
|
} else {
|
||||||
PageElements.setUsernameStatus.innerText = utils.getErrorMessage(response.status);
|
PageElements.setUsernameStatus.innerText = utils.getErrorMessage(response.status);
|
||||||
}
|
}
|
||||||
|
@ -852,24 +552,15 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
document.getElementById("loadingIndicator").innerText = chrome.i18n.getMessage("noVideoID");
|
document.getElementById("loadingIndicator").innerText = chrome.i18n.getMessage("noVideoID");
|
||||||
}
|
}
|
||||||
|
|
||||||
function reportAnIssue() {
|
|
||||||
document.getElementById("issueReporterContainer").style.display = "unset";
|
|
||||||
PageElements.reportAnIssue.style.display = "none";
|
|
||||||
}
|
|
||||||
|
|
||||||
function addVoteMessage(message, UUID) {
|
function addVoteMessage(message, UUID) {
|
||||||
const container = document.getElementById("sponsorTimesVoteButtonsContainer" + UUID);
|
let voteButtonsContainer = document.getElementById("sponsorTimesVoteButtonsContainer" + UUID);
|
||||||
//remove all children
|
voteButtonsContainer.style.display = "none";
|
||||||
while (container.firstChild) {
|
|
||||||
container.removeChild(container.firstChild);
|
|
||||||
}
|
|
||||||
|
|
||||||
const thanksForVotingText = document.createElement("h2");
|
let voteStatusContainer = document.getElementById("sponsorTimesVoteStatusContainer" + UUID);
|
||||||
|
voteStatusContainer.style.removeProperty("display");
|
||||||
|
|
||||||
|
let thanksForVotingText = document.getElementById("sponsorTimesThanksForVotingText" + UUID);
|
||||||
thanksForVotingText.innerText = message;
|
thanksForVotingText.innerText = message;
|
||||||
//there are already breaks there
|
|
||||||
thanksForVotingText.style.marginBottom = "0px";
|
|
||||||
|
|
||||||
container.appendChild(thanksForVotingText);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function vote(type, UUID) {
|
function vote(type, UUID) {
|
||||||
|
@ -894,11 +585,6 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideDiscordButton() {
|
|
||||||
Config.config.hideDiscordLink = true;
|
|
||||||
PageElements.discordButtonContainer.style.display = "none";
|
|
||||||
}
|
|
||||||
|
|
||||||
//converts time in seconds to minutes:seconds
|
//converts time in seconds to minutes:seconds
|
||||||
function getFormattedTime(seconds) {
|
function getFormattedTime(seconds) {
|
||||||
const minutes = Math.floor(seconds / 60);
|
const minutes = Math.floor(seconds / 60);
|
||||||
|
@ -942,10 +628,9 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
//change button
|
//change button
|
||||||
PageElements.whitelistChannel.style.display = "none";
|
PageElements.whitelistChannel.style.display = "none";
|
||||||
PageElements.unwhitelistChannel.style.display = "unset";
|
PageElements.unwhitelistChannel.style.display = "unset";
|
||||||
if (!Config.config.forceChannelCheck) PageElements.whitelistForceCheck.style.display = "unset";
|
document.querySelectorAll('.SBWhitelistIcon')[0].classList.add("rotated");
|
||||||
|
|
||||||
PageElements.downloadedSponsorMessageTimes.innerText = chrome.i18n.getMessage("channelWhitelisted");
|
if (!Config.config.forceChannelCheck) PageElements.whitelistForceCheck.classList.remove("hidden");
|
||||||
PageElements.downloadedSponsorMessageTimes.style.fontWeight = "bold";
|
|
||||||
|
|
||||||
//save this
|
//save this
|
||||||
Config.config.whitelistedChannels = whitelistedChannels;
|
Config.config.whitelistedChannels = whitelistedChannels;
|
||||||
|
@ -990,9 +675,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
//change button
|
//change button
|
||||||
PageElements.whitelistChannel.style.display = "unset";
|
PageElements.whitelistChannel.style.display = "unset";
|
||||||
PageElements.unwhitelistChannel.style.display = "none";
|
PageElements.unwhitelistChannel.style.display = "none";
|
||||||
|
document.querySelectorAll('.SBWhitelistIcon')[0].classList.remove("rotated");
|
||||||
PageElements.downloadedSponsorMessageTimes.innerText = "";
|
|
||||||
PageElements.downloadedSponsorMessageTimes.style.fontWeight = "unset";
|
|
||||||
|
|
||||||
//save this
|
//save this
|
||||||
Config.config.whitelistedChannels = whitelistedChannels;
|
Config.config.whitelistedChannels = whitelistedChannels;
|
||||||
|
@ -1067,10 +750,6 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chrome.tabs != undefined) {
|
if (chrome.tabs != undefined) {
|
||||||
//add the width restriction (because Firefox)
|
|
||||||
const link = <HTMLLinkElement> document.getElementById("sponsorBlockStyleSheet");
|
|
||||||
(<CSSStyleSheet> link.sheet).insertRule('.popupBody { width: 325 }', 0);
|
|
||||||
|
|
||||||
//this means it is actually opened in the popup
|
//this means it is actually opened in the popup
|
||||||
runThePopup();
|
runThePopup();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue