From 64d2c0a299c464a6bfcfc652f6c8128ca0e5cd67 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Sun, 13 Feb 2022 22:09:22 -0600 Subject: [PATCH 01/19] fix: ignore switchingVideos in Safari (see #1142) --- src/content.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/content.ts b/src/content.ts index 0b8233dd..f3816c75 100644 --- a/src/content.ts +++ b/src/content.ts @@ -879,7 +879,8 @@ function retryFetch(): void { * Ex. When segments are first loaded */ function startSkipScheduleCheckingForStartSponsors() { - if (!switchingVideos && sponsorTimes) { + // switchingVideos is ignored in Safari due to event fire order. See #1142 + if ((!switchingVideos || isSafari) && sponsorTimes) { // See if there are any starting sponsors let startingSegmentTime = getStartTimeFromUrl(document.URL) || -1; let found = false; From 50c87a68425875b519d185a9caa915e433b2b7e7 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Tue, 22 Feb 2022 12:08:42 -0500 Subject: [PATCH 02/19] New Crowdin updates (#1190) --- public/_locales/ar/messages.json | 156 ++++++++++++++++++++++++ public/_locales/ca/messages.json | 180 ++++++++++++++++++++++++++++ public/_locales/fr/messages.json | 2 +- public/_locales/ja/messages.json | 102 ++++++++-------- public/_locales/pl/messages.json | 20 +++- public/_locales/pt_BR/messages.json | 18 +++ public/_locales/tr/messages.json | 12 ++ 7 files changed, 434 insertions(+), 56 deletions(-) diff --git a/public/_locales/ar/messages.json b/public/_locales/ar/messages.json index a10d55ac..76da9dbc 100644 --- a/public/_locales/ar/messages.json +++ b/public/_locales/ar/messages.json @@ -52,6 +52,9 @@ "reskip": { "message": "اعاده التخطي" }, + "unmute": { + "message": "إلغاء الكتم" + }, "paused": { "message": "ايقاف مؤقت" }, @@ -88,9 +91,162 @@ "refreshSegments": { "message": "تحديث الأجزاء" }, + "success": { + "message": "تم بنجاح!" + }, + "voted": { + "message": "تم التصويت!" + }, + "serverDown": { + "message": "يبدو أن الخادم غير متصل. تواصل مع المطوّر على الفور." + }, + "connectionError": { + "message": "حدث خطأ في الاتصال. رمز الخطأ: " + }, + "clearTimes": { + "message": "مسح الأقسام" + }, + "openPopup": { + "message": "فتح نافذة سبونسر بلوك المنبثقة" + }, + "closePopup": { + "message": "إغلاق النافذة المنبثقة" + }, + "SubmitTimes": { + "message": "إرسال الأقسام" + }, + "submitCheck": { + "message": "هل أنت متيقّن من إرسال هذا؟" + }, + "whitelistChannel": { + "message": "إضافة القناة إلى القائمة البيضاء" + }, + "removeFromWhitelist": { + "message": "إزالة القناة من القائمة البيضاء" + }, + "voteOnTime": { + "message": "صوّت لقسم" + }, + "Submissions": { + "message": "المشاركات" + }, + "savedPeopleFrom": { + "message": "لقد وفّرت على الناس " + }, + "viewLeaderboard": { + "message": "لوحة الصدارة" + }, + "recordTimesDescription": { + "message": "إرسال" + }, + "submissionEditHint": { + "message": "سيظهر تحرير القسم بعد النقر على إرسال", + "description": "Appears in the popup to inform them that editing has been moved to the video player." + }, + "popupHint": { + "message": "تلميح: يمكنك إعداد اختصارات مفاتيح للتقديم في الخيارات" + }, + "clearTimesButton": { + "message": "مسح الأوقات" + }, + "submitTimesButton": { + "message": "إرسال الأوقات" + }, + "publicStats": { + "message": "يستخدم هذا في صفحة الإحصائيات العامة لإظهار مقدار مساهمتك. قم برؤيتها" + }, "Username": { "message": "اسم المستخدم" }, + "setUsername": { + "message": "تعيين اسم مستخدم" + }, + "copyPublicID": { + "message": "نسخ معرف المستخدم العام" + }, + "discordAdvert": { + "message": "انضم إلى سيرفر \"ديسكورد\" الرسمي لتقديم اقتراحات وتعليقات!" + }, + "hideThis": { + "message": "إخفاء هذا" + }, + "Options": { + "message": "خيارات" + }, + "showButtons": { + "message": "إظهار الأزرار على مشغل اليوتيوب" + }, + "hideButtons": { + "message": "إخفاء الأزرار على مشغل اليوتيوب" + }, + "hideButtonsDescription": { + "message": "هذا يخفي الأزرار التي تظهر على مشغل اليوتيوب لإرسال أقسام للتخطي." + }, + "showSkipButton": { + "message": "إبقاء زر \"تخطي للعنوان الرئيس\" على المشغّل" + }, + "showInfoButton": { + "message": "إظهار زر \"معلومات\" على مشغّل اليوتيوب" + }, + "hideInfoButton": { + "message": "إخفاء زر \"معلومات\" على مشغّل اليوتيوب" + }, + "autoHideInfoButton": { + "message": "إخفاء تلقائي لزر \"معلومات\"" + }, + "hideDeleteButton": { + "message": "إخفاء زر \"حذف\" على مشغّل اليوتيوب" + }, + "showDeleteButton": { + "message": "إظهار زر \"حذف\" على مشغّل اليوتيوب" + }, + "skip": { + "message": "تخطي" + }, + "mute": { + "message": "كتم" + }, + "full": { + "message": "فيديو كامل", + "description": "Used for the name of the option to label an entire video as sponsor or self promotion." + }, + "skip_category": { + "message": "تخطي {0}؟" + }, + "mute_category": { + "message": "كتم {0}؟" + }, + "skip_to_category": { + "message": "تخطي إلى {0}؟", + "description": "Used for skipping to things (Skip to Highlight)" + }, + "skipped": { + "message": "تم تخطي {0}", + "description": "Example: Sponsor Skipped" + }, + "muted": { + "message": "تم كتم {0}", + "description": "Example: Sponsor Muted" + }, + "skipped_to_category": { + "message": "تم التخطي إلى {0}", + "description": "Used for skipping to things (Skipped to Highlight)" + }, + "disableAutoSkip": { + "message": "تعطيل التخطي التلقائي" + }, + "enableAutoSkip": { + "message": "تفعيل التخطي التلقائي" + }, + "minLower": { + "message": "دقيقة" + }, + "minsLower": { + "message": "دقائق" + }, + "add": { + "message": "أضِف" + }, "permissionRequestSuccess": { "message": "نجح طلب الإذن!" }, diff --git a/public/_locales/ca/messages.json b/public/_locales/ca/messages.json index 7ec14f73..45235206 100644 --- a/public/_locales/ca/messages.json +++ b/public/_locales/ca/messages.json @@ -42,5 +42,185 @@ }, "Hide": { "message": "No mostris mai" + }, + "hitGoBack": { + "message": "Premeu \"no saltar\" per tornar on estàveu." + }, + "unskip": { + "message": "No saltar" + }, + "reskip": { + "message": "Saltar de nou" + }, + "unmute": { + "message": "Deixa de silenciar" + }, + "paused": { + "message": "Pausat" + }, + "manualPaused": { + "message": "S'ha aturat el temporitzador" + }, + "confirmMSG": { + "message": "Per editar o esborrar valors individuals, premeu el botó d'informació o cliqueu la pestanya de l'extensió al cantó superior dret." + }, + "clearThis": { + "message": "Segur que voleu esborrar això?\n\n" + }, + "Unknown": { + "message": "S'ha produït un error en enviar els temps d'anunciant, torneu-ho a provar més endavant." + }, + "sponsorFound": { + "message": "Aquest vídeo té segments a la base de dades!" + }, + "sponsor404": { + "message": "No s'han trobat segments" + }, + "sponsorStart": { + "message": "El segment comença ara" + }, + "sponsorEnd": { + "message": "El segment acaba ara" + }, + "sponsorCancel": { + "message": "Cancel·la la creació del segment" + }, + "noVideoID": { + "message": "No s'ha trobat cap vídeo de YouTube.\nSi penseu que és incorrecte, refresqueu la pestanya." + }, + "refreshSegments": { + "message": "Refresca els segments" + }, + "success": { + "message": "Èxit!" + }, + "voted": { + "message": "Votat!" + }, + "serverDown": { + "message": "Sembla que ha caigut el servidor. Contacteu el desenvolupador immediatament." + }, + "connectionError": { + "message": "S'ha produït un error de connexió. Codi d'error: " + }, + "clearTimes": { + "message": "Esborra els segments" + }, + "openPopup": { + "message": "Obrir finestra de SponsorBlock" + }, + "closePopup": { + "message": "Tanca la finestra" + }, + "SubmitTimes": { + "message": "Envia els segments" + }, + "submitCheck": { + "message": "Segur que voleu enviar això?" + }, + "whitelistChannel": { + "message": "Canal de llista blanca" + }, + "removeFromWhitelist": { + "message": "Treure canal de la llista blanca" + }, + "voteOnTime": { + "message": "Vota un segment" + }, + "Submissions": { + "message": "Propostes" + }, + "savedPeopleFrom": { + "message": "Heu estalviat la gent " + }, + "viewLeaderboard": { + "message": "Classificació" + }, + "recordTimesDescription": { + "message": "Envia" + }, + "submissionEditHint": { + "message": "L'edició de seccions apareixerà després de prémer \"envia\"", + "description": "Appears in the popup to inform them that editing has been moved to the video player." + }, + "popupHint": { + "message": "Consell: Podeu crear tecles de drecera per enviar en \"opcions\"" + }, + "clearTimesButton": { + "message": "Esborra temps" + }, + "submitTimesButton": { + "message": "Envia temps" + }, + "publicStats": { + "message": "Això s'utilitza a la pàgina d'estadístiques pública per fatxendejar de quant heu contribuït. Vegeu" + }, + "Username": { + "message": "Nom d'usuari" + }, + "setUsername": { + "message": "Definiu el nom d'usuari" + }, + "copyPublicID": { + "message": "Copia l'identificador públic d'usuari" + }, + "discordAdvert": { + "message": "Uniu-vos al servidor de Discord oficial per opinar i fer suggeriments!" + }, + "hideThis": { + "message": "Amaga això" + }, + "Options": { + "message": "Opcions" + }, + "showButtons": { + "message": "Mostra els botons al reproductor de YouTube" + }, + "hideButtons": { + "message": "Amaga els botons al reproductor de YouTube" + }, + "hideButtonsDescription": { + "message": "Això amaga els botons que apareixen al reproductor de YouTube per enviar segments." + }, + "showSkipButton": { + "message": "Mantenir \"Botar al destacat\" al reproductor" + }, + "showInfoButton": { + "message": "Mostra el botó d'informació al reproductor de YouTube" + }, + "hideInfoButton": { + "message": "Amaga el botó d'informació al reproductor de YouTube" + }, + "autoHideInfoButton": { + "message": "Amaga automàticament el botó d'informació" + }, + "minLower": { + "message": "minut" + }, + "minsLower": { + "message": "minuts" + }, + "hourLower": { + "message": "hora" + }, + "hoursLower": { + "message": "hores" + }, + "youHaveSavedTime": { + "message": "Heu estalviat la gent", + "description": "You've saved people from 887,362 segments (236d 15h 5.3 minutes of their lives)." + }, + "youHaveSavedTimeEnd": { + "message": " de les seves vides", + "description": "You've saved people from 887,362 segments (236d 15h 5.3 minutes of their lives)." + }, + "statusReminder": { + "message": "Visiteu status.sponsor.ajay.app per conèixer l'estat del servidor." + }, + "changeUserID": { + "message": "Importa/exporta la vostra identificació d'usuari" + }, + "whatChangeUserID": { + "message": "Això hauria de romandre privat: és semblant a una contrasenya i no s'hauria de compartir amb cap persona. Si algú hi té accés, poden suplantar-vos. Si esteu cercant el vostre identificador d'usuari públic, premeu la icona del portanotes a la finestra." } } diff --git a/public/_locales/fr/messages.json b/public/_locales/fr/messages.json index 45fb17a4..09c21a37 100644 --- a/public/_locales/fr/messages.json +++ b/public/_locales/fr/messages.json @@ -652,7 +652,7 @@ "message": "Autoriser les segments qui bloquent l'audio au lieu de le passer" }, "fullVideoSegments": { - "message": "Afficher une icône lorsqu'une vidéo est promotionnelle", + "message": "Afficher une icône lorsqu'une vidéo est entièrement promotionnelle", "description": "Referring to the category pill that is now shown on videos that are entirely sponsor or entirely selfpromo" }, "previewColor": { diff --git a/public/_locales/ja/messages.json b/public/_locales/ja/messages.json index 9d0d04e8..4f452e58 100644 --- a/public/_locales/ja/messages.json +++ b/public/_locales/ja/messages.json @@ -14,7 +14,7 @@ "message": "一つの動画に対してあまりに多くのセグメントを提案しています。本当にこれだけ必要ですか?" }, "409": { - "message": "これは既に提案されています。" + "message": "これは既に提出されています。" }, "channelWhitelisted": { "message": "チャンネルをホワイトリストに登録しました!" @@ -23,7 +23,7 @@ "message": "セグメント" }, "Segments": { - "message": "セグメント" + "message": "セグメント" }, "upvoteButtonInfo": { "message": "この提案を支持" @@ -41,7 +41,7 @@ "message": "読み込み中..." }, "Hide": { - "message": "非表示" + "message": "再度表示しない" }, "hitGoBack": { "message": "スキップ解除を押すと元の場所へ戻ります" @@ -119,7 +119,7 @@ "message": "本当に提出してよろしいですか?" }, "whitelistChannel": { - "message": "ホワイトリストのチャンネル" + "message": "チャンネルをホワイトリストに追加" }, "removeFromWhitelist": { "message": "ホワイトリストからチャンネルを削除" @@ -183,13 +183,13 @@ "message": "YouTube再生画面のセグメント提出ボタンを非表示にします。" }, "showSkipButton": { - "message": "プレイヤーの「ハイライトまでスキップ」ボタン表示を維持する" + "message": "「ハイライトまでスキップ」ボタンをプレイヤーに常に表示する" }, "showInfoButton": { - "message": "YouTubeプレーヤーに情報ボタンを表示する" + "message": "YouTubeプレイヤーに情報ボタンを表示する" }, "hideInfoButton": { - "message": "YouTubeプレーヤーに情報ボタンを表示しない" + "message": "YouTubeプレイヤーに情報ボタンを表示しない" }, "autoHideInfoButton": { "message": "情報ボタンを自動的に隠す" @@ -201,13 +201,13 @@ "message": "YouTubeプレーヤーに削除ボタンを表示" }, "enableViewTracking": { - "message": "スキップ回数の追跡を有効にする" + "message": "スキップの集計を有効にする" }, "whatViewTracking": { "message": "この機能は、あなたがスキップしたセグメントを追跡して、そのセグメントがどれだけ役に立ったかを他のユーザーに知らせることで、スパムがデータベースに紛れないようにするための評価基準として使用されます。あなたがセグメントをスキップするたびに、拡張機能はサーバーにメッセージを送信します。使用回数の統計が正確になるよう、できる限り多くの人がこの設定を変更しないことを望みます。:)" }, "enableViewTrackingInPrivate": { - "message": "プライベート/シークレット タブでスキップカウントトラッキングを有効にする" + "message": "プライベート/シークレット タブでのスキップ回数の集計を有効にする" }, "enableTrackDownvotes": { "message": "セグメントの低評価を記録" @@ -237,19 +237,19 @@ "message": "セグメントがスキップされた後に通知を表示する" }, "noticeVisibilityMode0": { - "message": "標準サイズのスキップ通知" + "message": "通常サイズのスキップ通知" }, "noticeVisibilityMode1": { - "message": "自動スキップ時に小型の通知" + "message": "自動スキップ時に小サイズの通知" }, "noticeVisibilityMode2": { - "message": "常に小型のスキップ通知" + "message": "常に小サイズのスキップ通知" }, "noticeVisibilityMode3": { - "message": "自動スキップ時に半透明の通知" + "message": "自動スキップ時に透過タイプの通知" }, "noticeVisibilityMode4": { - "message": "常に半透明のスキップ通知" + "message": "常に透過タイプのスキップ通知" }, "longDescription": { "message": "SponsorBlockはスポンサー、イントロ、アウトロ、チャンネル登録のお願いなど、YouTube動画の煩わしい部分をスキップします。SponsorBlockはYouTube動画のスポンサー付きセグメントなどの開始時間と終了時間を誰でも投稿できる、クラウドソースのブラウザ拡張機能です。一人がセグメントの情報を送信すると、この拡張機能を使用している他の全員が、スポンサー付きセグメントをスキップできるようになります。また、ミュージックビデオの音楽がない部分をスキップすることもできます。", @@ -319,14 +319,14 @@ "message": "{0} をスキップしますか?" }, "mute_category": { - "message": "{0} をミュートしますか?" + "message": "{0} をミュートしますか?" }, "skip_to_category": { - "message": "{0}まで飛び越しますか?", + "message": "{0}までスキップしますか?", "description": "Used for skipping to things (Skip to Highlight)" }, "skipped": { - "message": "{0}を飛び越しました", + "message": "{0}をスキップしました", "description": "Example: Sponsor Skipped" }, "muted": { @@ -334,7 +334,7 @@ "description": "Example: Sponsor Muted" }, "skipped_to_category": { - "message": "{0}まで飛び越しました", + "message": "{0}までスキップしました", "description": "Used for skipping to things (Skipped to Highlight)" }, "disableAutoSkip": { @@ -356,7 +356,7 @@ "message": "この時間は、シークバーの下にある現在の時間の隣に表示されます。これは、動画の合計時間からすべてのセグメントの時間を差し引いたもので「シークバーに表示」として設定されているセグメントも含まれます。" }, "youHaveSkipped": { - "message": "スキップしたセグメント数: " + "message": "スキップした数: " }, "minLower": { "message": "分" @@ -385,7 +385,7 @@ "message": "ユーザーIDのインポート/エクスポート" }, "whatChangeUserID": { - "message": "この情報を誰にも開示しないでください。これはパスワードのように、誰とも共有するべきではありません。 誰かがこれを持っている場合、あなたになりすますことができます。パブリックユーザーIDを探している場合は、ポップアップのクリップボードアイコンをクリックしてください。" + "message": "これは厳重に保管してください。これはパスワードのようなもので、誰とも共有すべきではありません。 他の誰かがこれを使って、あなたになりすますことができてしまいます。なおパブリックユーザーIDを探している場合は、ポップアップ内のクリップボードアイコンをクリックしてください。" }, "setUserID": { "message": "ユーザーIDを設定" @@ -407,7 +407,7 @@ "message": "対応サイト: " }, "optionsInfo": { - "message": "Invidious対応を有効にし,自動飛越を無効にし,GUIを非表示にします。" + "message": "Invidious対応を有効にし、自動スキップを無効、GUIを非表示にします。" }, "addInvidiousInstance": { "message": "サードパーティーのクライアントインスタンスを追加" @@ -437,7 +437,7 @@ "message": "設定値より短いセグメントはスキップされず、プレーヤーにも表示されません。" }, "skipNoticeDuration": { - "message": "飛び越し通知の表示時間(秒):" + "message": "スキップ通知の表示時間(秒):" }, "skipNoticeDurationDescription": { "message": "飛び越し通知が画面上に表示され続ける時間です。手動で飛び越した場合は,より長く表示される可能性があります。" @@ -485,7 +485,7 @@ "message": "ファイルから読み込み" }, "whatExportOptions": { - "message": "JSON形式の個人設定全体です。利用者IDが含まれているので,共有するときは注意してください。" + "message": "JSON形式のすべての個人設定です。これにはあなたのユーザーIDが含まれているので、共有するときは注意してください。" }, "setOptions": { "message": "オプション設定" @@ -500,7 +500,7 @@ "message": "セグメントを送信" }, "submit": { - "message": "送信" + "message": "提出" }, "cancel": { "message": "キャンセル" @@ -549,13 +549,13 @@ "message": "無報酬 / セルフプロモーション" }, "category_selfpromo_description": { - "message": "無報酬での宣伝あるいは自己販促を除いて「提供者」と同様です。商品・寄付・合作情報にかんする節を含みます。" + "message": "無報酬での宣伝あるいは自己販促であるという点を除いては「スポンサー」と同様です。商品、寄付、コラボ情報に関する内容を含みます。" }, "category_exclusive_access": { "message": "限定アクセス" }, "category_exclusive_access_description": { - "message": "動画全体に対してのみ付与できます。無償または補助金を受けて、製品、サービス、場所を紹介する動画。" + "message": "動画全体に対してのみ付与できます。無償または補助金を受けて、製品、サービス、場所を紹介する動画に使用。" }, "category_exclusive_access_pill": { "message": "この動画は無償または補助金を受けて利用した製品、サービス、または場所を紹介するものです", @@ -595,10 +595,10 @@ "message": "無駄な脱線/冗談" }, "category_filler_description": { - "message": "脱線したシーンには、動画の主な内容を理解するのに必要がない穴埋めやユーモアのみを追加してください。これには、文脈や背景の詳細を提供するセグメントを含めないでください。" + "message": "動画の本編を理解するのに必要のない、繋ぎの話やユーモアによって脱線したシーン。これには、文脈や背景の詳細を提供しているセグメントを含めないでください。" }, "category_filler_short": { - "message": "フィラー" + "message": "繋ぎの話" }, "category_music_offtopic": { "message": "音楽: 音楽以外のセクション" @@ -613,7 +613,7 @@ "message": "ハイライト" }, "category_poi_highlight_description": { - "message": "多くの人が求めている動画の部分。「動画はXからスタート」のようなコメントです。" + "message": "多くの人が求めている動画の部分。「本編はXから開始」といったコメントのような機能です。" }, "category_livestream_messages": { "message": "ライブ配信: 寄付/メッセージの読み上げ" @@ -652,7 +652,7 @@ "message": "スキップする代わりに音声をミュートしてセグメントを許可" }, "fullVideoSegments": { - "message": "動画全体が広告の場合アイコンを表示", + "message": "動画全体が広告の場合にアイコンを表示", "description": "Referring to the category pill that is now shown on videos that are entirely sponsor or entirely selfpromo" }, "previewColor": { @@ -673,10 +673,10 @@ "message": "ベータテストサーバーを有効にする" }, "whatEnableTestingServer": { - "message": "提出した区域と区域への投票が主サーバーで**取り扱われなく**なります。試験目的にのみ利用してください。" + "message": "提出したセグメントと投票がメインサーバーで**取り扱われなく**なります。試験目的にのみ利用してください。" }, "testingServerWarning": { - "message": "試サーバーに接続している間,全ての提出・投票は主サーバーで取り扱われなくなります。実際の提出・投票を行う際は,この設定を無効にしてください。" + "message": "テストサーバーに接続している間、全ての提出・投票はメインサーバーでは取り扱われなくなります。実際の提出・投票を行う際は、この設定を無効にしてください。" }, "bracketNow": { "message": "(今)" @@ -747,7 +747,7 @@ "message": "カテゴリーを変更" }, "nonMusicCategoryOnMusic": { - "message": "この動画は音楽として分類されています。本当にこの動画にスポンサー部分がありますか? 本セグメントが本当に「音楽以外の区域」だった場合は、設定画面からこの分類を有効にしてください。その後、「スポンサー部分」の代わりに「音楽以外のセグメント」としてセグメントを提出できます。よく分からない場合は、ガイドラインを参照してください。" + "message": "この動画は音楽として分類されています。本当にこの動画にスポンサー部分がありますか? このセグメントが実際には「音楽以外のセグメント」である場合、設定画面からこのカテゴリーを有効にしてください。「スポンサー」の代わりに「音楽以外」としてセグメントを提出できます。お困りの場合は、ガイドラインを参照してください。" }, "multipleSegments": { "message": "複数のセグメント" @@ -786,7 +786,7 @@ "message": "二度と表示しない" }, "warningChatInfo": { - "message": "警告によりあなたは一時的にセグメントを提出することができなくなりました。これはあなたが悪意のない一般的なミスを犯していることに私たちが気づいた事を意味します。ルールを理解していることを確認していただければこの警告は解除します。discord.gg/SponsorBlock または matrix.to/#/#sponsor:ajay.app よりこのチャットに参加することもできます。" + "message": "警告によりあなたは一時的にセグメントを提出することができません。これはあなたが悪意からではなく、単に誤った行為をしていることを私たちが認識したためです。ルールを理解していることを確認していただければこの警告は解除します。discord.gg/SponsorBlock または matrix.to/#/#sponsor:ajay.app よりチャットに参加することもできます。" }, "voteRejectedWarning": { "message": "警告により投票が拒否されました。クリックして運営に連絡するか,少し時間を置いてからやりなおしてください。", @@ -796,7 +796,7 @@ "message": "寄付" }, "considerDonating": { - "message": "開発資金を援助する" + "message": "開発を支援する" }, "hideDonationLink": { "message": "寄付のお願いを表示しない" @@ -811,10 +811,10 @@ "message": "以下の設定を確認してください" }, "helpPageFeatureDisclaimer": { - "message": "多くの機能は既定では無効となっています。動画の導入部や最後の余計な部分を飛び越したい場合は「非本質的な内容」を飛び越すようにしてください。また,UI要素の表示・非表示を切り替えることもできます。" + "message": "多くの機能がデフォルトでは無効となっています。イントロ・アウトロをスキップしたり、Invidiousで使用したりするにはこの下で有効にしてください。また画面の表示設定を切り替えることもできます。" }, "helpPageHowSkippingWorks": { - "message": "飛び越しの仕組み" + "message": "スキップの仕組み" }, "helpPageHowSkippingWorks1": { "message": "データベースにある動画区域が自動的に飛び越されます。この拡張機能のアイコンをクリックすると,区域の位置や範囲を確かめることができます。" @@ -823,7 +823,7 @@ "message": "区域を飛び越すたびに通知されます。区域の範囲がおかしいと思ったら,その区域を低評価してください。ポップアップ画面でも同様に投票ができます。" }, "Submitting": { - "message": "提出中" + "message": "提出する" }, "helpPageSubmitting1": { "message": "提出するにはポップアップの「セグメント開始を記録」ボタン、またはビデオプレーヤー内にあるボタンを押してください。" @@ -832,22 +832,22 @@ "message": "再生ボタンをクリックするとセグメントの開始、停止アイコンをクリックすると終了となります。 複数のスポンサーを用意してから送信ボタンを押すことができます。アップロードボタンをクリックすると提出されます。ゴミ箱をクリックすると削除されます。" }, "Editing": { - "message": "編集中" + "message": "編集する" }, "helpPageEditing1": { - "message": "もし失敗しても、上矢印ボタンをクリックすれば、セグメントを編集・削除することができます。" + "message": "もし間違えてしまっても、上矢印ボタンをクリックでセグメントを編集・削除することができます。" }, "helpPageTooSlow": { - "message": "遅すぎます" + "message": "操作が面倒" }, "helpPageTooSlow1": { - "message": "利用可能なホットキーがあります。セミコロンキーを押してスポンサーセグメントの開始/終了を示し、アポストロフィキーを押して送信します。これらはオプションで変更できます。QWERTYを使わない場合は、キーバインドを変更したほうがいいでしょう。" + "message": "ショートカットキーが利用可能です。セミコロンキーでスポンサーセグメントを開始/終了し、アポストロフィキーで送信できます。またこれらはオプションで変更できます。QWERTYキーを使わない場合は、キー割り当てを変更したほうがいいでしょう。" }, "helpPageCopyOfDatabase": { - "message": "データベースのコピーを取得できますか? あなたがいなくなった場合はどうなりますか?" + "message": "データベースのコピーを利用できますか? 作者が失踪した場合はどうなりますか?" }, "helpPageCopyOfDatabase1": { - "message": "データベースは公開されており、こちらから閲覧できます:" + "message": "データベースは公開されており、こちらから利用できます:" }, "helpPageCopyOfDatabase2": { "message": "ソースコードは自由に利用できます。運営になにがあろうとも,あなたの貢献(提出された区域)が失われることはありません。" @@ -865,19 +865,19 @@ "message": "さらに詳しく" }, "CopyDownvoteButtonInfo": { - "message": "反対票を投じ、再提出するためにローカルコピーを作成します。" + "message": "低評価を押し、再提出するためのローカルコピーを作成" }, "OpenCategoryWikiPage": { "message": "このカテゴリーのWikiページを開きます。" }, "CopyAndDownvote": { - "message": "コピーして反対票を投じる" + "message": "コピーして低評価" }, "ContinueVoting": { "message": "投票を続ける" }, "ChangeCategoryTooltip": { - "message": "この変更は即座にあなたのセグメントに適用されます" + "message": "この変更はすぐにあなたのセグメントに適用されます" }, "SponsorTimeEditScrollNewFeature": { "message": "編集ボックスにカーソルを合わせながらマウスホイールを使用すると、時間をすばやく調整できます。 CtrlキーまたはShiftキーの組み合わせを使用して変更を微調整できます。" @@ -886,11 +886,11 @@ "message": "新機能!動画全体がスポンサー付きもしくはセルフプロモーションかがわかります" }, "dayAbbreviation": { - "message": "d", + "message": "日", "description": "100d" }, "hourAbbreviation": { - "message": "h", + "message": "時間", "description": "100h" }, "optionsTabBehavior": { @@ -898,7 +898,7 @@ "description": "Appears in Options as a tab header for options related to categories and skipping behavior. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)." }, "optionsTabInterface": { - "message": "UI", + "message": "表示設定", "description": "Appears in Options as a tab header for options related to GUI and sounds. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)." }, "optionsTabKeyBinds": { @@ -914,7 +914,7 @@ "description": "Appears in Options as a tab header for advanced/niche options. To fit inside the button, it should not be longer than ~20-25 characters (depending on their width)." }, "noticeVisibilityLabel": { - "message": "スキップ通知の外観", + "message": "スキップ通知の形式", "description": "Option label" }, "unbind": { diff --git a/public/_locales/pl/messages.json b/public/_locales/pl/messages.json index f9cfaa71..1f5e8e36 100644 --- a/public/_locales/pl/messages.json +++ b/public/_locales/pl/messages.json @@ -162,7 +162,7 @@ "message": "Ustaw nazwę użytkownika" }, "copyPublicID": { - "message": "Kopiuj Publiczne ID Użytkownika" + "message": "Kopiuj publiczny identyfikator użytkownika" }, "discordAdvert": { "message": "Dołącz do oficjalnego serwera na discordzie i podziel się wrażeniami i sugestiami!" @@ -183,7 +183,7 @@ "message": "Ta opcja ukrywa przyciski do zamieszczania segmentów pojawiające się na odtwarzaczu YouTube." }, "showSkipButton": { - "message": "Kontynuuj wyświetlanie przycisku pomijania" + "message": "Wyświetlaj przycisk \"Przejść do wyróżnione?\" na odtwarzaczu" }, "showInfoButton": { "message": "Pokaż przycisk informacyjny na odtwarzaczu YouTube" @@ -209,6 +209,15 @@ "enableViewTrackingInPrivate": { "message": "Włącz licznik śledzenia pominięć w zakładkach Prywatnych/Incognito" }, + "enableTrackDownvotes": { + "message": "Zapamiętaj segmenty z łapkami w dół" + }, + "whatTrackDownvotes": { + "message": "Wszystkie segmenty, którym dasz łapkę w dół, pozostaną ukryte nawet po odświeżeniu" + }, + "trackDownvotesWarning": { + "message": "Uwaga: Wyłączenie tego usunie wszystkie poprzednio zapisane łapki w dół" + }, "enableQueryByHashPrefix": { "message": "Zapytanie według prefiksu Hash" }, @@ -780,6 +789,9 @@ "Donate": { "message": "Dotacje" }, + "considerDonating": { + "message": "Wesprzyj" + }, "hideDonationLink": { "message": "Ukryj Link Do Dotacji" }, @@ -847,13 +859,13 @@ "message": "Dowiedz się więcej" }, "CopyDownvoteButtonInfo": { - "message": "Minusuje i tworzy lokalną kopię, abyś mógł przesłać poprawioną wersję" + "message": "Daje łapkę w dół i tworzy lokalną kopię, abyś mógł przesłać poprawioną wersję" }, "OpenCategoryWikiPage": { "message": "Otwórz stronę wiki dla tej kategorii." }, "CopyAndDownvote": { - "message": "Skopiuj i zminusuj" + "message": "Skopiuj i daj łapkę w dół" }, "ContinueVoting": { "message": "Kontynuuj głosowanie" diff --git a/public/_locales/pt_BR/messages.json b/public/_locales/pt_BR/messages.json index 0c405395..ded68e87 100644 --- a/public/_locales/pt_BR/messages.json +++ b/public/_locales/pt_BR/messages.json @@ -209,6 +209,15 @@ "enableViewTrackingInPrivate": { "message": "Ativar Pular Contagem de Rastreamento em Abas Privadas/Incógnito" }, + "enableTrackDownvotes": { + "message": "Armazenar votos negativos de segmentos" + }, + "whatTrackDownvotes": { + "message": "Qualquer segmento que você der voto negative permanecerá oculto mesmo após recarregar" + }, + "trackDownvotesWarning": { + "message": "Aviso: Desativar isto excluirá todos os votos negativos armazenados anteriormente" + }, "enableQueryByHashPrefix": { "message": "Consulta Por Prefixo Hash" }, @@ -582,6 +591,9 @@ "category_preview_description": { "message": "Recapitulação rápida de episódios anteriores, ou uma prévia do que está chegando mais tarde no vídeo atual. Destinado a clipes editados juntos, não para resumos falados." }, + "category_filler": { + "message": "Enrolação/Piadas" + }, "category_filler_description": { "message": "Cenas tangenciais inseridas apenas por enrolação ou humor que não são necessárias para compreender o tópico principal do vídeo. Isto não deve incluir segmentos que fornecem contexto ou detalhes de segundo plano." }, @@ -694,6 +706,9 @@ "hiddenDueToDuration": { "message": "oculto: muito curto" }, + "manuallyHidden": { + "message": "oculto manualmente" + }, "channelDataNotFound": { "description": "This error appears in an alert when they try to whitelist a channel and the extension is unable to determine what channel they are looking at.", "message": "O ID do canal ainda não foi carregado. Se você estiver usando um vídeo embutido, tente usar a página inicial do YouTube. Isso também pode ser causado por mudanças no layout do YouTube, se você achar que este é o caso, faça um comentário aqui:" @@ -780,6 +795,9 @@ "Donate": { "message": "Doar" }, + "considerDonating": { + "message": "Ajude a financiar o desenvolvimento" + }, "hideDonationLink": { "message": "Ocultar o Link de Doação" }, diff --git a/public/_locales/tr/messages.json b/public/_locales/tr/messages.json index daa5a1d4..293072ce 100644 --- a/public/_locales/tr/messages.json +++ b/public/_locales/tr/messages.json @@ -209,6 +209,15 @@ "enableViewTrackingInPrivate": { "message": "Özel/Gizli sekmelerde atlama sayısı takibini etkinleştir" }, + "enableTrackDownvotes": { + "message": "Kısımların olumsuz oylarını depola" + }, + "whatTrackDownvotes": { + "message": "Olumsuz oy verdiğiniz kısımlar, sayfayı tazeledikten sonra da gizli kalacaktır" + }, + "trackDownvotesWarning": { + "message": "Uyarı: Bu ayarı devre dışı bırakırsanız, halihazırda saklanan olumsuz oylar silinecek" + }, "enableQueryByHashPrefix": { "message": "Karma Ön eki ile Sorgula" }, @@ -582,6 +591,9 @@ "category_preview_description": { "message": "Önceki bölümlerin bir özeti veya geçerli videonun içeriğine yönelik bir ön izleme. Bu özellik birleştirilmiş klipler içindir, konuşarak anlatılan özetleri kapsamaz." }, + "category_filler": { + "message": "Konuyla Alakasız / Şaka" + }, "category_filler_description": { "message": "Videonun ana içeriğini anlamak için gerekli olmayan, yalnızca alakasız konu veya mizah için eklenen sahneler. Bu, alakalı veya arka plan ayrıntısı veren kısımları içermemelidir." }, From 87354009b5e00e817dfe2a31f5c51b75ab713de9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81ron=20Hegymegi-Kiss?= Date: Thu, 24 Feb 2022 14:24:12 +0100 Subject: [PATCH 03/19] settings css fixes --- public/options/options.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/options/options.css b/public/options/options.css index 83cf7931..a2a829a1 100644 --- a/public/options/options.css +++ b/public/options/options.css @@ -593,7 +593,7 @@ svg { /* Top bar navigation for smaller screens */ -@media only screen and (max-height: 650px), only screen and (max-width: 1200px) { +@media only screen and (max-height: 725px), only screen and (max-width: 1200px) { #options-container { flex-direction: column; } @@ -666,6 +666,8 @@ svg { @media only screen and (max-width: 800px) { #options { padding: 0 15px; - justify-content: left; + } + #options > div { + max-width: 100%; } } \ No newline at end of file From 0e5606423e87400c9f14e21bd6ec918b209acb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81ron=20Hegymegi-Kiss?= Date: Thu, 24 Feb 2022 18:34:04 +0100 Subject: [PATCH 04/19] fix alt-tab in chrome --- src/content.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content.ts b/src/content.ts index 358144cd..8ec21135 100644 --- a/src/content.ts +++ b/src/content.ts @@ -1987,7 +1987,7 @@ function addPageListeners(): void { function addHotkeyListener(): void { document.addEventListener("keydown", hotkeyListener); document.addEventListener("keyup", (e) => pressedKeys.delete(e.key)); - document.addEventListener("focus", (e) => pressedKeys.clear()); + window.addEventListener("focus", (e) => pressedKeys.clear()); } function hotkeyListener(e: KeyboardEvent): void { From 6ea18fd536eb3033108bf25f7809f2f3068d05cf Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Thu, 24 Feb 2022 14:34:36 -0500 Subject: [PATCH 05/19] New Crowdin updates (#1204) --- public/_locales/id/messages.json | 2 +- public/_locales/pt_PT/messages.json | 55 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/public/_locales/id/messages.json b/public/_locales/id/messages.json index 9205355e..34a7c56c 100644 --- a/public/_locales/id/messages.json +++ b/public/_locales/id/messages.json @@ -592,7 +592,7 @@ "message": "Rekapan singkat dari episode sebelumnya, atau pratinjau tentang apa yang akan terjadi nanti di video. Dimaksudkan untuk klip bersama yang di edit, bukan ringkasan yang diucapkan." }, "category_filler": { - "message": "Pengisi Tangent/Jokes" + "message": "Pengisi Tak berkaitan/Lawakan" }, "category_filler_description": { "message": "Adegan tangensial ditambahkan hanya untuk pengisi atau humor yang tidak diperlukan untuk memahami isi utama video. Ini tidak boleh mencakup segmen yang memberikan detail konteks atau latar belakang." diff --git a/public/_locales/pt_PT/messages.json b/public/_locales/pt_PT/messages.json index c5a9c0fd..012946e8 100644 --- a/public/_locales/pt_PT/messages.json +++ b/public/_locales/pt_PT/messages.json @@ -3,6 +3,10 @@ "message": "SponsorBlock para o YouTube - Salte patrocínios", "description": "Name of the extension." }, + "Description": { + "message": "Salte patrocinios, pedidos de subscrição e mais em videos do YouTube. Submeta anúncios nos videos que visualiza para poupar tempo a outros.", + "description": "Description of the extension." + }, "400": { "message": "O servidor disse que este pedido foi inválido" }, @@ -15,9 +19,21 @@ "channelWhitelisted": { "message": "Canal adicionado à whitelist!" }, + "Segment": { + "message": "segmento" + }, + "Segments": { + "message": "segmentos" + }, + "upvoteButtonInfo": { + "message": "Votar positivamente esta submissão" + }, "reportButtonTitle": { "message": "Reportar" }, + "reportButtonInfo": { + "message": "Reportar esta submissão como incorrecta." + }, "Dismiss": { "message": "Ignorar" }, @@ -36,9 +52,15 @@ "reskip": { "message": "Saltar novamente" }, + "unmute": { + "message": "Ativar som" + }, "paused": { "message": "Pausado" }, + "manualPaused": { + "message": "Temporizador parado" + }, "confirmMSG": { "message": "\n\nPara editar ou remover linhas individuais, carregue com o botão direito ou abra o popup da extensão pelo icone no canto superior direito." }, @@ -48,18 +70,51 @@ "Unknown": { "message": "Erro ao enviar os seus segmentos, tente novamente mais tarde." }, + "sponsorFound": { + "message": "Este vídeo tem segmentos na base de dados!" + }, + "sponsor404": { + "message": "Nenhum segmento encontrado" + }, + "sponsorStart": { + "message": "O Segmento Começa Agora" + }, + "sponsorEnd": { + "message": "O Segmento Acaba Agora" + }, + "sponsorCancel": { + "message": "Cancelar Criação de Segmento" + }, + "noVideoID": { + "message": "Nenhum vídeo do YouTube encontrado.\nSe isto não estiver correto, atualize o separador." + }, + "refreshSegments": { + "message": "Atualizar segmentos" + }, "success": { "message": "Sucesso!" }, "voted": { "message": "Votado!" }, + "serverDown": { + "message": "Parece que o servidor está em baixo. Contacte o desenvolvedor imediatamente." + }, "connectionError": { "message": "Deu-se um erro de conecção: Código: " }, + "clearTimes": { + "message": "Limpar Segmentos" + }, "openPopup": { "message": "Abrir o Popup SponsorBlock" }, + "closePopup": { + "message": "Fechar Popup" + }, + "SubmitTimes": { + "message": "Submeter Segmentos" + }, "submitCheck": { "message": "Tem a certeza que pretende submeter?" }, From f6d2497e7be339b566e8d976a09cf76829e44a31 Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Thu, 24 Feb 2022 14:34:51 -0500 Subject: [PATCH 06/19] bump version --- manifest/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest/manifest.json b/manifest/manifest.json index 18cf3ad7..bb2925b0 100644 --- a/manifest/manifest.json +++ b/manifest/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_fullName__", "short_name": "SponsorBlock", - "version": "4.1.4", + "version": "4.1.5", "default_locale": "en", "description": "__MSG_Description__", "homepage_url": "https://sponsor.ajay.app", From 5496b05c88feabb5c2ccaf1327c5a6a50ca7ad39 Mon Sep 17 00:00:00 2001 From: Alec Rust Date: Sun, 13 Feb 2022 10:28:15 +0000 Subject: [PATCH 07/19] Add menu bar to popup --- public/popup.css | 615 +++++++++++++++++++++++++++------------------- public/popup.html | 113 ++++----- 2 files changed, 410 insertions(+), 318 deletions(-) diff --git a/public/popup.css b/public/popup.css index f8cc5b2c..7b16d4b8 100644 --- a/public/popup.css +++ b/public/popup.css @@ -1,235 +1,274 @@ :root { + --sb-main-font-family: "Source Sans Pro", sans-serif; --sb-main-bg-color: #222626; - --sb-main-fg-color: white; - --sb-gray-fg-color: #444848; - --sb-on-white-bg: black; - --sb-green-bg: #077B27; + --sb-main-fg-color: #fff; + --sb-grey-bg-color: #333; + --sb-red-bg-color: #cc1717; } +/* + * Default browser styles + */ + +html { + box-sizing: border-box; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +p { + margin: 0; +} + +a { + color: var(--sb-main-fg-color); + text-decoration: none; +} + +button { + background: transparent; + border: 0; + cursor: pointer; + padding: 0; +} + +/* + * Disable transition on all elements until the extension has loaded + */ + +.preload * { + transition: none !important; +} + +/* + * IDs on element, element and main container + */ + #sponsorBlockPopupHTML { color-scheme: dark; } -#sponsorBlockPopupBody .hidden { - display: none !important; +#sponsorBlockPopupBody { + margin: 0; + width: 374px; + font-family: var(--sb-main-font-family); + font-size: 14px; + background-color: var(--sb-main-bg-color); + color: var(--sb-main-fg-color); + color-scheme: dark; } +#sponsorblockPopup { + text-align: center; +} + +/* + * Header logo + */ + +.logo { + display: flex; + align-items: center; + font-size: 32px; + font-weight: bold; + justify-content: center; + user-select: none; + padding: 20px 0 10px; +} + +.logo img { + margin-right: 8px; +} + +/* + * Refresh segments button + */ + +#refreshSegmentsButton { + border-radius: 50%; + display: flex; + padding: 5px; + margin: 5px auto; + align-items: center; +} + +#refreshSegmentsButton:hover { + background-color: var(--sb-grey-bg-color); +} + +/* + * Individual segments ( - + + +
+ +

__MSG_noVideoID__

+ +

+
-
-
- - +
- +

-

__MSG_yourWork__

+

__MSG_yourWork__

@@ -98,7 +91,7 @@ - + @@ -115,7 +108,7 @@
-
- \ No newline at end of file + From a3734e050f3dea8e160b1e3edf40cee4d484f80b Mon Sep 17 00:00:00 2001 From: Alec Rust Date: Tue, 15 Feb 2022 17:25:33 +0000 Subject: [PATCH 08/19] Refactor away global styles --- public/popup.css | 167 +++++++++++++++++++++++----------------------- public/popup.html | 45 +++++++------ 2 files changed, 106 insertions(+), 106 deletions(-) diff --git a/public/popup.css b/public/popup.css index 7b16d4b8..bd828825 100644 --- a/public/popup.css +++ b/public/popup.css @@ -7,47 +7,14 @@ } /* - * Default browser styles + * IDs on container element (when inserted in page), element, + * element and main container */ -html { - box-sizing: border-box; +#sponsorBlockPopupContainer { + margin-bottom: 16px; } -*, -*::before, -*::after { - box-sizing: inherit; -} - -p { - margin: 0; -} - -a { - color: var(--sb-main-fg-color); - text-decoration: none; -} - -button { - background: transparent; - border: 0; - cursor: pointer; - padding: 0; -} - -/* - * Disable transition on all elements until the extension has loaded - */ - -.preload * { - transition: none !important; -} - -/* - * IDs on element, element and main container - */ - #sponsorBlockPopupHTML { color-scheme: dark; } @@ -66,11 +33,19 @@ button { text-align: center; } +/* + * Disable transition on all elements until the extension has loaded + */ + +.preload * { + transition: none !important; +} + /* * Header logo */ -.logo { +.sbPopupLogo { display: flex; align-items: center; font-size: 32px; @@ -80,7 +55,7 @@ button { padding: 20px 0 10px; } -.logo img { +.sbPopupLogo img { margin-right: 8px; } @@ -89,7 +64,10 @@ button { */ #refreshSegmentsButton { + background: transparent; + border: 0; border-radius: 50%; + cursor: pointer; display: flex; padding: 5px; margin: 5px auto; @@ -105,8 +83,11 @@ button { */ .segmentTimeButton { - font-weight: bold; + background: transparent; + border: 0; + cursor: pointer; color: var(--sb-main-fg-color); + font-weight: bold; padding: 7px; outline: none; width: 100%; @@ -150,14 +131,14 @@ button { * Main controls menu */ -.controlsMenu { +.sbControlsMenu { background-color: var(--sb-grey-bg-color); display: flex; justify-content: space-evenly; margin-top: 10px; } -.controlsMenu-item { +.sbControlsMenu-item { background-color: var(--sb-grey-bg-color); border: 0; padding: 0; @@ -171,11 +152,11 @@ button { justify-content: center; } -.controlsMenu-item:hover { +.sbControlsMenu-item:hover { background-color: #444; } -.controlsMenu-itemIcon { +.sbControlsMenu-itemIcon { margin-bottom: 6px; } @@ -292,12 +273,14 @@ button { * Generic buttons used for "Segment Starts Now" and "Submit Times" */ -.mediumButton { +.sbMediumButton { background-color: var(--sb-red-bg-color); + border: 0; -moz-border-radius: 28px; -webkit-border-radius: 28px; border-radius: 28px; display: inline-block; + cursor: pointer; color: var(--sb-main-fg-color); font-size: 16px; padding: 8px 37px; @@ -305,13 +288,13 @@ button { transition: 0.01s background-color; } -.mediumButton:hover, -.mediumButton:focus { +.sbMediumButton:hover, +.sbMediumButton:focus { outline: none; background-color: #ec1c1c; } -.mediumButton:active { +.sbMediumButton:active { position: relative; top: 1px; } @@ -324,6 +307,32 @@ button { margin-top: 12px; } +/* + * Heading utility class + */ + +.sbHeader { + font-size: 20px; + font-weight: bold; + margin: 10px 0 5px; +} + +/* + * Side-by-side section of "Your Work" + */ + +.sbYourWorkCols { + display: flex; + margin: 0 20px 12px; +} + +.sbYourWorkCols > div { + display: flex; + align-items: center; + width: 50%; + justify-content: center; +} + /* * @@ -29,17 +29,17 @@ -
-
+

__MSG_yourWork__

-
+
-

__MSG_Username__:

+

__MSG_Username__:

-

+

@@ -89,7 +90,7 @@
- -
From a1caf8fbdb2884334d85b9ddc26ad0617e071af8 Mon Sep 17 00:00:00 2001 From: Ajay Date: Sun, 27 Feb 2022 20:17:19 -0500 Subject: [PATCH 09/19] Switch hotkeys to not use array --- src/content.ts | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/src/content.ts b/src/content.ts index 9d65d78c..d826caea 100644 --- a/src/content.ts +++ b/src/content.ts @@ -138,9 +138,6 @@ const manualSkipPercentCount = 0.5; //get messages from the background script and the popup chrome.runtime.onMessage.addListener(messageListener); -//store pressed modifier keys -const pressedKeys = new Set(); - function messageListener(request: Message, sender: unknown, sendResponse: (response: MessageResponse) => void): void | boolean { //messages from popup script switch(request.message){ @@ -1987,37 +1984,34 @@ function addPageListeners(): void { function addHotkeyListener(): void { document.addEventListener("keydown", hotkeyListener); - document.addEventListener("keyup", (e) => pressedKeys.delete(e.key)); - window.addEventListener("focus", (e) => pressedKeys.clear()); } function hotkeyListener(e: KeyboardEvent): void { if (["textarea", "input"].includes(document.activeElement?.tagName?.toLowerCase()) || document.activeElement?.id?.toLowerCase()?.includes("editable")) return; - if (["Alt", "Control", "Shift", "AltGraph"].includes(e.key)) { - pressedKeys.add(e.key); - return; - } - - const key:Keybind = {key: e.key, code: e.code, alt: pressedKeys.has("Alt"), ctrl: pressedKeys.has("Control"), shift: pressedKeys.has("Shift")}; + const key: Keybind = { + key: e.key, + code: e.code, + alt: e.altKey, + ctrl: e.ctrlKey, + shift: e.shiftKey + }; const skipKey = Config.config.skipKeybind; const startSponsorKey = Config.config.startSponsorKeybind; const submitKey = Config.config.submitKeybind; - if (!pressedKeys.has("AltGraph")) { - if (keybindEquals(key, skipKey)) { - if (activeSkipKeybindElement) - activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement); - return; - } else if (keybindEquals(key, startSponsorKey)) { - startOrEndTimingNewSegment(); - return; - } else if (keybindEquals(key, submitKey)) { - submitSponsorTimes(); - return; - } + if (keybindEquals(key, skipKey)) { + if (activeSkipKeybindElement) + activeSkipKeybindElement.toggleSkip.call(activeSkipKeybindElement); + return; + } else if (keybindEquals(key, startSponsorKey)) { + startOrEndTimingNewSegment(); + return; + } else if (keybindEquals(key, submitKey)) { + submitSponsorTimes(); + return; } //legacy - to preserve keybinds for skipKey, startSponsorKey and submitKey for people who set it before the update. (shouldn't be changed for future keybind options) From d02aab4ba35d224d10a83644e487880da2a7a8dd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 1 Mar 2022 00:22:29 +0000 Subject: [PATCH 10/19] Update Invidious List --- ci/invidiouslist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/invidiouslist.json b/ci/invidiouslist.json index 2331e2f1..4638f7c3 100644 --- a/ci/invidiouslist.json +++ b/ci/invidiouslist.json @@ -1 +1 @@ -["yewtu.be","invidious.snopyta.org","vid.puffyan.us","invidious.kavin.rocks","invidio.xamh.de","inv.riverside.rocks","invidious.osi.kr","inv.cthd.icu","yt.artemislena.eu","youtube.076.ne.jp","invidious.namazso.eu"] \ No newline at end of file +["yewtu.be","invidious.snopyta.org","vid.puffyan.us","invidious.kavin.rocks","invidio.xamh.de","inv.riverside.rocks","invidious-us.kavin.rocks","invidious.osi.kr","tube.cthd.icu","yt.artemislena.eu","youtube.076.ne.jp","invidious.namazso.eu"] \ No newline at end of file From effac2449a0e605078e39fa039583e9f4047eae5 Mon Sep 17 00:00:00 2001 From: Nanobyte Date: Sat, 5 Mar 2022 23:52:44 +0100 Subject: [PATCH 11/19] Get user infos from userInfo api for popup --- src/popup.ts | 65 +++++++++++++++++++--------------------------------- 1 file changed, 23 insertions(+), 42 deletions(-) diff --git a/src/popup.ts b/src/popup.ts index d02bf36f..6f05583f 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -167,9 +167,30 @@ async function runThePopup(messageListener?: MessageListener): Promise { PageElements.showNoticeAgain.style.display = "unset"; } - utils.sendRequestToServer("GET", "/api/getUsername?userID=" + Config.config.userID, (res) => { + utils.sendRequestToServer("GET", "/api/userInfo?userID=" + Config.config.userID, (res) => { if (res.status === 200) { - PageElements.usernameValue.innerText = JSON.parse(res.responseText).userName + const userInfo = JSON.parse(res.responseText) + PageElements.usernameValue.innerText = userInfo.userName + const viewCount = userInfo.viewCount + if (viewCount != 0) { + if (viewCount > 1) { + PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segments") + } else { + PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment") + } + PageElements.sponsorTimesViewsDisplay.innerText = viewCount.toLocaleString() + PageElements.sponsorTimesViewsContainer.style.display = "unset" + } + showDonateWidget(viewCount) + const minutesSaved = userInfo.minutesSaved + if (minutesSaved != 0) { + if (minutesSaved != 1) { + PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minsLower") + } else { + PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minLower") + } + PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved) + } } }) @@ -177,46 +198,6 @@ async function runThePopup(messageListener?: MessageListener): Promise { if (Config.config.sponsorTimesContributed != undefined) { PageElements.sponsorTimesContributionsDisplay.innerText = Config.config.sponsorTimesContributed.toLocaleString(); PageElements.sponsorTimesContributionsContainer.classList.remove("hidden"); - - //get the userID - const userID = Config.config.userID; - if (userID != undefined) { - //there are probably some views on these submissions then - //get the amount of views from the sponsors submitted - utils.sendRequestToServer("GET", "/api/getViewsForUser?userID=" + userID, function (response) { - if (response.status == 200) { - const viewCount = JSON.parse(response.responseText).viewCount; - if (viewCount != 0) { - if (viewCount > 1) { - PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segments"); - } else { - PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment"); - } - - PageElements.sponsorTimesViewsDisplay.innerText = viewCount.toLocaleString(); - PageElements.sponsorTimesViewsContainer.style.display = "unset"; - } - - showDonateWidget(viewCount); - } - }); - - //get this time in minutes - utils.sendRequestToServer("GET", "/api/getSavedTimeForUser?userID=" + userID, function (response) { - if (response.status == 200) { - const minutesSaved = JSON.parse(response.responseText).timeSaved; - if (minutesSaved != 0) { - if (minutesSaved != 1) { - PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minsLower"); - } else { - PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minLower"); - } - - PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved); - } - } - }); - } } //get the amount of times this user has skipped a sponsor From 7c747e65664d7225010abc25739e6f11e9a1c848 Mon Sep 17 00:00:00 2001 From: Michael C Date: Thu, 10 Mar 2022 02:31:19 -0500 Subject: [PATCH 12/19] custom error handler for 5xx --- src/utils/genericUtils.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/utils/genericUtils.ts b/src/utils/genericUtils.ts index 3451c738..bd27de8c 100644 --- a/src/utils/genericUtils.ts +++ b/src/utils/genericUtils.ts @@ -28,20 +28,18 @@ async function wait(condition: () => T | false, timeout = 5000, check = 100): * @returns {string} errorMessage */ function getErrorMessage(statusCode: number, responseText: string): string { - let errorMessage = ""; const postFix = (responseText ? "\n\n" + responseText : ""); - - if([400, 429, 409, 502, 503, 0].includes(statusCode)) { - //treat them the same + // display response body for 4xx + if([400, 429, 409, 0].includes(statusCode)) { + return chrome.i18n.getMessage(statusCode + "") + " " + chrome.i18n.getMessage("errorCode") + statusCode + postFix; + } else if (statusCode >= 500 && statusCode <= 599) { + // 503 == 502 if (statusCode == 503) statusCode = 502; - - errorMessage = chrome.i18n.getMessage(statusCode + "") + " " + chrome.i18n.getMessage("errorCode") + statusCode - + "\n\n" + chrome.i18n.getMessage("statusReminder"); + return chrome.i18n.getMessage(statusCode + "") + " " + chrome.i18n.getMessage("errorCode") + statusCode + + "\n\n" + chrome.i18n.getMessage("statusReminder"); } else { - errorMessage = chrome.i18n.getMessage("connectionError") + statusCode; + return chrome.i18n.getMessage("connectionError") + statusCode + postFix; } - - return errorMessage + postFix; } /* Gets percieved luminance of a color */ From 54013681ef5365669fcabc8c95ff0de76419c441 Mon Sep 17 00:00:00 2001 From: Ajay Date: Thu, 10 Mar 2022 10:22:53 -0500 Subject: [PATCH 13/19] Ask for specific values --- src/popup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/popup.ts b/src/popup.ts index 6f05583f..bd743605 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -167,7 +167,7 @@ async function runThePopup(messageListener?: MessageListener): Promise { PageElements.showNoticeAgain.style.display = "unset"; } - utils.sendRequestToServer("GET", "/api/userInfo?userID=" + Config.config.userID, (res) => { + utils.sendRequestToServer("GET", "/api/userInfo?value=userName&value=viewCount&value=minutesSaved&userID=" + Config.config.userID, (res) => { if (res.status === 200) { const userInfo = JSON.parse(res.responseText) PageElements.usernameValue.innerText = userInfo.userName From c76f241b636e894a66d926fa582ca52f9c225aea Mon Sep 17 00:00:00 2001 From: Ajay Date: Thu, 10 Mar 2022 10:23:35 -0500 Subject: [PATCH 14/19] Formatting --- src/popup.ts | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/popup.ts b/src/popup.ts index bd743605..a6b1ff44 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -169,30 +169,33 @@ async function runThePopup(messageListener?: MessageListener): Promise { utils.sendRequestToServer("GET", "/api/userInfo?value=userName&value=viewCount&value=minutesSaved&userID=" + Config.config.userID, (res) => { if (res.status === 200) { - const userInfo = JSON.parse(res.responseText) - PageElements.usernameValue.innerText = userInfo.userName - const viewCount = userInfo.viewCount + const userInfo = JSON.parse(res.responseText); + PageElements.usernameValue.innerText = userInfo.userName; + + const viewCount = userInfo.viewCount; if (viewCount != 0) { if (viewCount > 1) { - PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segments") + PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segments"); } else { - PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment") + PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment"); } - PageElements.sponsorTimesViewsDisplay.innerText = viewCount.toLocaleString() - PageElements.sponsorTimesViewsContainer.style.display = "unset" + PageElements.sponsorTimesViewsDisplay.innerText = viewCount.toLocaleString(); + PageElements.sponsorTimesViewsContainer.style.display = "unset"; } - showDonateWidget(viewCount) - const minutesSaved = userInfo.minutesSaved + + showDonateWidget(viewCount); + + const minutesSaved = userInfo.minutesSaved; if (minutesSaved != 0) { if (minutesSaved != 1) { - PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minsLower") + PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minsLower"); } else { - PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minLower") + PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minLower"); } - PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved) + PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved); } } - }) + }); //get the amount of times this user has contributed and display it to thank them if (Config.config.sponsorTimesContributed != undefined) { From 924c77773603700b50326d2165748a1eee8a3315 Mon Sep 17 00:00:00 2001 From: Michael C Date: Fri, 11 Mar 2022 23:52:30 -0500 Subject: [PATCH 15/19] ignore body if cloudflare error found --- src/utils/genericUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/genericUtils.ts b/src/utils/genericUtils.ts index bd27de8c..a11f9c4c 100644 --- a/src/utils/genericUtils.ts +++ b/src/utils/genericUtils.ts @@ -28,7 +28,7 @@ async function wait(condition: () => T | false, timeout = 5000, check = 100): * @returns {string} errorMessage */ function getErrorMessage(statusCode: number, responseText: string): string { - const postFix = (responseText ? "\n\n" + responseText : ""); + const postFix = ((responseText && !responseText.includes(`cf-wrapper`)) ? "\n\n" + responseText : ""); // display response body for 4xx if([400, 429, 409, 0].includes(statusCode)) { return chrome.i18n.getMessage(statusCode + "") + " " + chrome.i18n.getMessage("errorCode") + statusCode + postFix; From dcbefb5457ca4d727908f11991c595674887eff0 Mon Sep 17 00:00:00 2001 From: Ajay Date: Sat, 12 Mar 2022 00:23:16 -0500 Subject: [PATCH 16/19] More specific class name --- public/popup.css | 2 +- public/popup.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/popup.css b/public/popup.css index bd828825..9ab4100e 100644 --- a/public/popup.css +++ b/public/popup.css @@ -37,7 +37,7 @@ * Disable transition on all elements until the extension has loaded */ -.preload * { +.sb-preload * { transition: none !important; } diff --git a/public/popup.html b/public/popup.html index abf2dba0..78001e86 100644 --- a/public/popup.html +++ b/public/popup.html @@ -9,7 +9,7 @@ -
+