From 941bd41cdb16138c9565e03d3faa8434388fd89e Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Wed, 13 May 2020 21:11:00 -0400 Subject: [PATCH 1/5] Added another check to prevent phantom skips --- src/content.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/content.ts b/src/content.ts index 78579023..6cb7a7ad 100644 --- a/src/content.ts +++ b/src/content.ts @@ -470,7 +470,7 @@ function startSponsorSchedule(includeIntersectingSegments: boolean = false, curr return; } - if (incorrectVideoIDCheck()) return; + if (incorrectVideoCheck()) return; if (currentTime === undefined || currentTime === null) currentTime = video.currentTime; @@ -490,7 +490,7 @@ function startSponsorSchedule(includeIntersectingSegments: boolean = false, curr let forcedSkipTime: number = null; let forcedIncludeIntersectingSegments = false; - if (incorrectVideoIDCheck(videoID)) return; + if (incorrectVideoCheck(videoID, currentSkip)) return; if (video.currentTime >= skipTime[0] && video.currentTime < skipTime[1]) { skipToTime(video, skipInfo.endIndex, skipInfo.array, skipInfo.openNotice); @@ -515,13 +515,11 @@ function startSponsorSchedule(includeIntersectingSegments: boolean = false, curr } /** - * This makes sure the videoID is still correct - * - * TODO: Remove this bug catching if statement when the bug is found + * This makes sure the videoID is still correct and if the sponsorTime is included */ -function incorrectVideoIDCheck(videoID?: string): boolean { +function incorrectVideoCheck(videoID?: string, sponsorTime?: SponsorTime): boolean { let currentVideoID = getYouTubeVideoID(document.URL); - if (currentVideoID !== (videoID || sponsorVideoID)) { + if (currentVideoID !== (videoID || sponsorVideoID) || (sponsorTime && !sponsorTimes.includes(sponsorTime))) { // Something has really gone wrong console.error("[SponsorBlock] The videoID recorded when trying to skip is different than what it should be."); console.error("[SponsorBlock] VideoID recorded: " + sponsorVideoID + ". Actual VideoID: " + currentVideoID); From cff72b19c7816d0122b462d587ce35318cfca5d9 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Fri, 15 May 2020 19:39:37 -0400 Subject: [PATCH 2/5] Enable category vote on main server --- src/components/SkipNoticeComponent.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/components/SkipNoticeComponent.tsx b/src/components/SkipNoticeComponent.tsx index b4399e65..e1ecf01c 100644 --- a/src/components/SkipNoticeComponent.tsx +++ b/src/components/SkipNoticeComponent.tsx @@ -198,13 +198,11 @@ class SkipNoticeComponent extends React.Component {/* Category vote */} - {Config.config.testingServer && - - } + {chrome.i18n.getMessage("incorrectCategory")} + From ba13f5951e6e93f8c2882dd678ce1307d3ec1ca3 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Fri, 15 May 2020 19:40:24 -0400 Subject: [PATCH 3/5] Increase version number --- manifest/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest/manifest.json b/manifest/manifest.json index 6543f6b1..6c077f83 100644 --- a/manifest/manifest.json +++ b/manifest/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_fullName__", "short_name": "__MSG_Name__", - "version": "1.2.28.2", + "version": "1.2.28.3", "default_locale": "en", "description": "__MSG_Description__", "content_scripts": [{ From 1ab1f33cafaf5169682f1053cff07447e1ddca6a Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Fri, 15 May 2020 20:51:24 -0400 Subject: [PATCH 4/5] Change zip binary in release workflow --- .github/workflows/release.yml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 35882cbc..e902a81d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,6 +17,9 @@ jobs: - run: npm install - name: Copy configuration run: cp config.json.example config.json + + - name: Install Zip + run: sudo apt-get install zip # Create Chrome artifacts - name: Create Chrome artifacts @@ -28,9 +31,7 @@ jobs: - run: mkdir ./builds - name: Zip Artifacts run: cd ./dist - - uses: montudor/action-zip@v0.1.0 - with: - args: zip -r ../builds/ChromeExtension.zip * + - run: zip -r ../builds/ChromeExtension.zip * - run: cd ../ # Create Firefox artifacts @@ -56,9 +57,7 @@ jobs: path: dist - name: Zip Artifacts run: cd ./dist - - uses: montudor/action-zip@v0.1.0 - with: - args: zip -r ../builds/ChromeExtensionBeta.zip * + - run: zip -r ../builds/ChromeExtensionBeta.zip * - run: cd ../ - name: Create Firefox Beta artifacts @@ -69,9 +68,7 @@ jobs: path: dist - name: Zip Artifacts run: cd ./dist - - uses: montudor/action-zip@v0.1.0 - with: - args: zip -r ../builds/FirefoxExtensionBeta.zip * + - run: zip -r ../builds/FirefoxExtensionBeta.zip * - run: cd ../ # Create Firefox Signed Beta version From 3640463112e7940aeb82dc426e4addbcf219d995 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Fri, 15 May 2020 21:00:07 -0400 Subject: [PATCH 5/5] New Crowdin translations (#353) * New translations messages.json (Portuguese, Brazilian) * New translations messages.json (Portuguese, Brazilian) --- public/_locales/pt_BR/messages.json | 348 +++++++++++++++++++++++++++- 1 file changed, 343 insertions(+), 5 deletions(-) diff --git a/public/_locales/pt_BR/messages.json b/public/_locales/pt_BR/messages.json index 417aead1..25904df1 100644 --- a/public/_locales/pt_BR/messages.json +++ b/public/_locales/pt_BR/messages.json @@ -1,4 +1,8 @@ { + "Name": { + "message": "SponsorBlock", + "description": "Name of the extension." + }, "fullName": { "message": "SponsorBlock para YouTube - Pule patrocínios", "description": "Name of the extension." @@ -149,22 +153,22 @@ "message": "aqui" }, "recordTimesDescription": { - "message": "Carregue neste botão abaixo quando o patrocínio começar e quando\n acabar para registar e submetê-lo à base de dados" + "message": "Clique no botão abaixo quando o patrocínio começar e quando terminar para registrar e submetê-lo à base de dados." }, "popupHint": { - "message": "Dica: Carregue na tecla ; enquanto num vídeo para registar o começo/fim de um patrocínio e \" para submeter" + "message": "Dica: Aperte a tecla ; enquanto reproduzir o vídeo para registar o começo/fim de um patrocínio e \" para enviar. (Essa configuração pode ser mudada em opções.)" }, "lastTimes": { - "message": "Intervalos de Patrocínios Escolhidos mais Recentemente" + "message": "Últimos Intervalos de Patrocínios Seleciados" }, "clearTimesButton": { "message": "Limpar Intervalos" }, "submitTimesButton": { - "message": "Submeter Intervalos" + "message": "Enviar Intervalos" }, "publicStats": { - "message": "Isto é usado na página pública de estatísticas que mostra o quanto já contríbuíu. Veje-a" + "message": "Isso é usado na página pública de estatísticas que mostra o quanto você já contríbuíu. Veja-a" }, "setUsername": { "message": "Criar nomde de utilizador" @@ -228,5 +232,339 @@ "sourceCode": { "message": "Código fonte", "description": "Used on Firefox Store Page" + }, + "noticeUpdate": { + "message": "A notificação foi atualizada!", + "description": "The first line of the message displayed after the notice was upgraded." + }, + "noticeUpdate2": { + "message": "Se você ainda não gostar dessa, aperte o botão não mostrar novamente.", + "description": "The second line of the message displayed after the notice was upgraded." + }, + "setStartSponsorShortcut": { + "message": "Defina a tecla para que marca o início do patrocínio" + }, + "setSubmitKeybind": { + "message": "Defina a tecla para enviar o segmento de patrocínio" + }, + "keybindDescription": { + "message": "Selecione uma tecla apertando-a" + }, + "keybindDescriptionComplete": { + "message": "A tecla foi definida para: " + }, + "0": { + "message": "Tempo limite de conexão excedida. Cheque a sua conexão de internet. Se a sua internet estiver funcionando, o servidor está sobrecarregado ou fora do ar." + }, + "disableSkipping": { + "message": "Desativar SponsorBlock" + }, + "enableSkipping": { + "message": "Ativar SponsorBlock" + }, + "yourWork": { + "message": "Suas submissões", + "description": "Used to describe the section that will show you the statistics from your submissions." + }, + "502": { + "message": "O servidor parece estar sobrecarregado. Tente novamente em alguns segundos." + }, + "errorCode": { + "message": "Código de erro: " + }, + "noticeTitleNotSkipped": { + "message": "Pular patrocinador?" + }, + "skip": { + "message": "Pular" + }, + "disableAutoSkip": { + "message": "Desativar Salto Automático" + }, + "enableAutoSkip": { + "message": "Ativar Salto Automático" + }, + "autoSkipDescription": { + "message": "Pular automaticamente irá pular patrocínios por você. Se desabilitado, um aviso irá aparecer perguntando se deseja pular o anúncio." + }, + "audioNotification": { + "message": "Notificação de áudio ao pular" + }, + "audioNotificationDescription": { + "message": "A notificação de áudio ao pular irá tocar um som sempre que um patrocínio for ignorado. Se desativado (ou o pulo automático estiver desativado), nenhum som será reproduzido." + }, + "youHaveSkipped": { + "message": "Você pulou " + }, + "youHaveSaved": { + "message": "Você poupou " + }, + "minLower": { + "message": "minuto" + }, + "minsLower": { + "message": "minutos" + }, + "hourLower": { + "message": "hora" + }, + "hoursLower": { + "message": "horas" + }, + "youHaveSavedTime": { + "message": "Você poupou outros" + }, + "youHaveSavedTimeEnd": { + "message": " de suas vidas." + }, + "guildlinesSummary": { + "message": "- Certifique-se de que seu segmento contém apenas patrocínio, nada mais.\n- Certifique-se de que pular esse segmento não vai pular conteúdo importante.\n- Se todo o vídeo for patrocinado, por favor não o denuncie. Um sistema completo de relatório de vídeo virá em breve.\n- Por favor, não denuncie avisos de parcialidade do vídeo (se um vídeo de avaliação for patrocinado, não pule quando eles mencionarem que é patrocinado)." + }, + "statusReminder": { + "message": "Verifique status.sponsor.ajay.app para o status do servidor." + }, + "changeUserID": { + "message": "Importar/Exportar seu ID de usuário" + }, + "whatChangeUserID": { + "message": "Isso deve ser mantido em segredo. É como se fosse uma senha e não deve ser compartilhado com ninguém. Se alguém tiver isso, poderá se passar por você." + }, + "setUserID": { + "message": "Definir ID de usuário" + }, + "userIDChangeWarning": { + "message": "Atenção: A alteração do ID de usuário é permanente. Você tem certeza que deseja fazer isso? Certifique-se de fazer backup de seu ID antigo por precaução." + }, + "createdBy": { + "message": "Criado por" + }, + "autoSkip": { + "message": "Pular automaticamente" + }, + "showSkipNotice": { + "message": "Mostrar aviso após um patrocínio ser ignorado" + }, + "keybindCurrentlySet": { + "message": ". Atualmente, está definido para:" + }, + "supportInvidious": { + "message": "Apoiar Invidious" + }, + "supportInvidiousDescription": { + "message": "Invidious (invidio.us) é um cliente para YouTube de terceiros. Para ativar o apoio, você precisa aceitar as permissões adicionais. Isso não funciona em modo anônimo no Chrome ou em outras variantes do Chromium." + }, + "optionsInfo": { + "message": "Ativar apoio ao Invidious, desabilitar pular automaticamente, ocultar botões e mais." + }, + "addInvidiousInstance": { + "message": "Adicionar instância do Invidious" + }, + "addInvidiousInstanceDescription": { + "message": "Adicionar uma instância personalizada do Invidious. Deve ser formatado com APENAS o domínio. Exemplo: invidious.ajay.app" + }, + "add": { + "message": "Adicionar" + }, + "addInvidiousInstanceError": { + "message": "Este é um domínio inválido. Ele deve incluir APENAS a parte do domínio. Exemplo: invidious.ajay.app" + }, + "resetInvidiousInstance": { + "message": "Redefinir Lista de Instâncias do Invidious" + }, + "resetInvidiousInstanceAlert": { + "message": "Você está prestes a redefinir a lista de instâncias do Invidious" + }, + "currentInstances": { + "message": "Instâncias Atuais:" + }, + "enableAutoUpvote": { + "message": "Upvote automático" + }, + "whatAutoUpvote": { + "message": "Com isto habilitado, a extensão dará upvote em todas as submissões que você ver se você não reportar. Não funcionará se o aviso estiver desativado." + }, + "minDuration": { + "message": "Duração mínima (segundos):" + }, + "minDurationDescription": { + "message": "Segmentos de patrocinadores menores do que o valor definido não serão pulados ou mostrados no reprodutor." + }, + "shortCheck": { + "message": "A seguinte submissão é mais curta do que sua opção de duração mínima. Isto significa que já foi enviada e que está sendo ignorada devido a esta opção. Tem certeza que deseja enviar mesmo assim?" + }, + "showUploadButton": { + "message": "Mostrar botão de envio" + }, + "whatUploadButton": { + "message": "Este botão aparece no reprodutor do YouTube depois de ter selecionado um carimbo de data/hora e está pronto para ser enviado." + }, + "customServerAddress": { + "message": "Endereço do servidor do SponsorBlock" + }, + "customServerAddressDescription": { + "message": "Endereço que o SponsorBlock usa para fazer chamadas ao servidor.\nA menos que você tenha sua própria instância de servidor, isso não deve ser alterado." + }, + "save": { + "message": "Salvar" + }, + "reset": { + "message": "Redefinir" + }, + "customAddressError": { + "message": "Este endereço não está na forma correta. Certifique-se de que possui http:// ou https:// no início e sem barras no final." + }, + "areYouSureReset": { + "message": "Tem certeza que deseja redefinir?" + }, + "confirmPrivacy": { + "message": "O este vídeo está marcado como não listado. Clique em cancelar se você não deseja verificar se há patrocínios." + }, + "unlistedCheck": { + "message": "Ignorar vídeos não listados/privados" + }, + "whatUnlistedCheck": { + "message": "Esta configuração irá diminuir um pouco o desempenho do SponsorBlock. As pesquisas do patrocinador exigem que se envie o ID do vídeo para o servidor. Se você estiver preocupado com o envio de IDs de vídeo não listados pela internet, habilite essa opção." + }, + "mobileUpdateInfo": { + "message": "m.youtube.com agora é suportado" + }, + "exportOptions": { + "message": "Importar/Exportar Todas as Opções" + }, + "whatExportOptions": { + "message": "Essa suas preferências em JSON. Isso inclui seu ID de usuário, então lembre-se de compartilhar com cuidado." + }, + "setOptions": { + "message": "Definir Opções" + }, + "exportOptionsWarning": { + "message": "Aviso: Alterar as opções é permanente e pode fazer a extensão parar de funcionar. Tem certeza que deseja fazer isso? Certifique-se de fazer um backup de seu antigo por precaução." + }, + "incorrectlyFormattedOptions": { + "message": "Este JSON não está formatado corretamente. Suas opções não foram alteradas." + }, + "confirmNoticeTitle": { + "message": "Enviar Segmento" + }, + "submit": { + "message": "Enviar" + }, + "cancel": { + "message": "Cancelar" + }, + "delete": { + "message": "Deletar" + }, + "preview": { + "message": "Pré-visualizar" + }, + "edit": { + "message": "Editar" + }, + "copyDebugInformation": { + "message": "Copiar Informações de Depuração Para Área de Transferência" + }, + "copyDebugInformationFailed": { + "message": "Erro ao copiar para a área de transferência" + }, + "copyDebugInformationOptions": { + "message": "Copia informações para a área de transferência para serem fornecidas a um desenvolvedor quando houver um bug / quando um solicitado pelo desenvolvedor. Informações sensíveis como seu ID de usuário, canais na lista de permissões e endereço personalizado do servidor foram removidos. No entanto, ele contém informações como seu useragent, navegador, sistema operacional e número de versão de extensão. " + }, + "copyDebugInformationComplete": { + "message": "A informação de depuração foi copiada para a área de transferência. Sinta-se à vontade para remover qualquer informação que prefira não compartilhar. Salve em um arquivo de texto ou cole-a no relatório de bug." + }, + "theKey": { + "message": "A tecla" + }, + "keyAlreadyUsedByYouTube": { + "message": "já está sendo usado pelo youtube. Por favor, selecione outra tecla." + }, + "keyAlreadyUsed": { + "message": "está vinculado a outra ação. Por favor, selecione outra tecla." + }, + "to": { + "message": "até", + "description": "Used between sponsor times. Example: 1:20 to 1:30" + }, + "category_sponsor": { + "message": "Patrocinador" + }, + "category_intro": { + "message": "Animação de Introdução" + }, + "category_outro": { + "message": "Finalização/Créditos" + }, + "category_interaction": { + "message": "Lembrete de interação (inscrever-se)" + }, + "category_selfpromo": { + "message": "Auto-Promoção e Mercadorias" + }, + "category_music_offtopic": { + "message": "Música: Seção sem música" + }, + "category_livestream_messages": { + "message": "Livestream: Leituras de Doação/Mensagem" + }, + "disable": { + "message": "Desativar" + }, + "manualSkip": { + "message": "Pular manualmente" + }, + "showOverlay": { + "message": "Mostrar barra de progresso" + }, + "enableTestingServer": { + "message": "Habilitar Servidor em teste Beta" + }, + "whatEnableTestingServer": { + "message": "Seus envios e votos NÃO SERÃO ENVIADOS para o servidor principal. Use isso apenas para testes." + }, + "testingServerWarning": { + "message": "Todas os envios e votos NÃO SERÃO ENVIADOS para o servidor principal enquanto se conecta ao servidor de teste. Certifique-se de desativar isso quando você quiser fazer envios reais." + }, + "bracketNow": { + "message": "(agora)" + }, + "moreCategories": { + "message": "Mais categorias" + }, + "bracketEnd": { + "message": "(Fim)" + }, + "hiddenDueToDownvote": { + "message": "oculto: Downvote" + }, + "hiddenDueToDuration": { + "message": "oculto: muito curto" + }, + "channelDataNotFound": { + "message": "ID do canal ainda não carregado." + }, + "adblockerIssue": { + "message": "Parece que algo está bloqueando o SponsorBlock de obter dados de vídeo. Isso é provavelmente o seu bloqueador de anúncios. Por favor, verifique https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock-Requests" + }, + "itCouldBeAdblockerIssue": { + "message": "Se isso continuar acontecendo, pode ser causado pelo seu bloqueador de anúncios. Por favor, verifique https://github.com/ajayyy/SponsorBlock/wiki/Fix-Ad-Blocker-Blocking-SponsorBlock-Requests" + }, + "forceChannelCheck": { + "message": "Forçar verificação do canal antes de pular os patrocínios" + }, + "whatForceChannelCheck": { + "message": "Por padrão, isso pulará os patrocínios imediatamente mesmo antes de saber qual é o canal. Por padrão, alguns patrocinadores de zero segundo podem ser ignorados nos canais da lista branca. Habilitar esta opção evitará isso, mas irá fazer com que todos os saltos tenham um ligeiro atraso, já que obter o channelID pode levar algum tempo. Este atraso pode não ser perceptível se você tiver internet rápida." + }, + "forceChannelCheckPopup": { + "message": "Considere habilitar a verificação de canal forçada antes de pular os patrocinadores" + }, + "downvoteDescription": { + "message": "Incorreto" + }, + "incorrectCategory": { + "message": "Categoria errada" + }, + "nonMusicCategoryOnMusic": { + "message": "Este vídeo é classificado como música. Você tem certeza que deseja enviar segmentos com categorias que não são músicas? A menos que esse vídeo não seja de fato música, você não deve enviar esse segmento. Por favor leia as orientações se estiver em dúvidas." } }