Skip to content

Commit 5e4a93b

Browse files
ozrendevabsidue
andauthored
Add Hide channels based on text (FreeTubeApp#7948)
* add toggle to hide channels based on text * fix lint warnings * hide channels by default, remove toggle * change label text to include channels * hide videos on community tab * hide posts on community tab * filter subscription posts array * filter subscription posts array on refresh * set forbiddenTitles toLowerCase * set forbiddenTitles toLowerCase in Watch.js * Update src/renderer/components/SubscriptionsPosts.vue Co-authored-by: absidue <[email protected]> * rename translation keys * one other translation key renamed * changed translation keys after latest merge --------- Co-authored-by: absidue <[email protected]>
1 parent f2f2e93 commit 5e4a93b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+175
-154
lines changed

src/renderer/components/DistractionSettings/DistractionSettings.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@
7878
</FtFlexBox>
7979
<FtFlexBox class="containingTextFlexBox">
8080
<FtInputTags
81-
:label="t('Settings.Distraction Free Settings.Hide Videos and Playlists Containing Text')"
82-
:tag-name-placeholder="t('Settings.Distraction Free Settings.Hide Videos and Playlists Containing Text Placeholder')"
81+
:label="t('Settings.Distraction Free Settings.Hide Videos, Playlists and Channels Containing Text')"
82+
:tag-name-placeholder="t('Settings.Distraction Free Settings.Hide Videos, Playlists and Channels Containing Text Placeholder')"
8383
:show-tags="showAddedForbiddenTitles"
8484
:tag-list="forbiddenTitles"
8585
:min-input-length="1"
86-
:tooltip="t('Tooltips.Distraction Free Settings.Hide Videos and Playlists Containing Text')"
86+
:tooltip="t('Tooltips.Distraction Free Settings.Hide Videos, Playlists and Channels Containing Text')"
8787
@change="handleForbiddenTitles"
8888
@toggle-show-tags="handleAddedForbiddenTitles"
8989
/>

src/renderer/components/FtListLazyWrapper/FtListLazyWrapper.vue

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ const channelsHidden = computed(() => {
172172
/** @type {string[]} */
173173
const forbiddenTitles = computed(() => {
174174
if (!props.hideForbiddenTitles) { return [] }
175-
return JSON.parse(store.getters.getForbiddenTitles)
175+
return JSON.parse(store.getters.getForbiddenTitles.toLowerCase())
176176
})
177177
178178
const showResult = computed(() => {
@@ -203,13 +203,16 @@ const showResult = computed(() => {
203203
return false
204204
}
205205
206-
if (channelsHidden.value.some(ch => ch.name === props.data.authorId) || channelsHidden.value.some(ch => ch.name === props.data.author)) {
206+
const lowerCaseAuthor = props.data.author?.toLowerCase()
207+
208+
if (channelsHidden.value.some(ch => ch.name === props.data.authorId) || channelsHidden.value.some(ch => ch.name === props.data.author) || (forbiddenTitles.value.some((text) => lowerCaseAuthor.includes(text)))) {
207209
// hide videos by author
208210
return false
209211
}
210212
211213
const lowerCaseTitle = props.data.title?.toLowerCase()
212-
if (forbiddenTitles.value.some((text) => lowerCaseTitle.includes(text.toLowerCase()))) {
214+
215+
if (forbiddenTitles.value.some((text) => lowerCaseTitle.includes(text))) {
213216
return false
214217
}
215218
} else if (dataType === 'channel') {
@@ -223,14 +226,19 @@ const showResult = computed(() => {
223226
props.data.authorId,
224227
]
225228
226-
if (attrsToCheck.some(a => a != null && channelsHidden.value.some(ch => ch.name === a))) {
229+
const lowerCaseName = props.data.name?.toLowerCase()
230+
231+
if ((attrsToCheck.some(a => a != null && channelsHidden.value.some(ch => ch.name === a))) ||
232+
(forbiddenTitles.value.some((text) => lowerCaseName.includes(text)))) {
227233
// hide channels by author
228234
return false
229235
}
230236
} else if (dataType === 'playlist') {
231237
const lowerCaseTitle = props.data.title?.toLowerCase()
238+
const lowerCaseChannelName = props.data.channelName?.toLowerCase()
232239
233-
if (forbiddenTitles.value.some((text) => lowerCaseTitle.includes(text.toLowerCase()))) {
240+
if ((forbiddenTitles.value.some((text) => lowerCaseTitle.includes(text))) ||
241+
(forbiddenTitles.value.some((text) => lowerCaseChannelName.includes(text)))) {
234242
return false
235243
}
236244

src/renderer/components/FtListVideoLazy.vue

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,21 @@ const channelsHidden = computed(() => {
130130
131131
const forbiddenTitles = computed(() => {
132132
if (!props.hideForbiddenTitles) { return [] }
133-
return JSON.parse(store.getters.getForbiddenTitles)
133+
return JSON.parse(store.getters.getForbiddenTitles.toLowerCase())
134+
})
135+
136+
const hideChannelsBasedOnText = computed(() => {
137+
return store.getters.getHideChannelsBasedOnText
134138
})
135139
136140
const shouldBeVisible = computed(() => {
137141
const lowerCaseTitle = props.data.title?.toLowerCase()
142+
const lowerCaseAuthor = props.data.author?.toLowerCase()
138143
139144
return !(channelsHidden.value.some(ch => ch.name === props.data.authorId) ||
140145
channelsHidden.value.some(ch => ch.name === props.data.author) ||
141-
(lowerCaseTitle && forbiddenTitles.value.some((text) => lowerCaseTitle.includes(text.toLowerCase()))))
146+
(lowerCaseTitle && forbiddenTitles.value.some((text) => lowerCaseTitle.includes(text))) ||
147+
(hideChannelsBasedOnText.value && lowerCaseAuthor && forbiddenTitles.value.some((text) => lowerCaseAuthor.includes(text))))
142148
})
143149
144150
/**

src/renderer/components/SubscriptionsPosts.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ function loadPostsFromCacheSometimes() {
155155
isLoading.value = false
156156
}
157157
158+
/** @type {import('vue').ComputedRef<string[]>} */
159+
const forbiddenTitles = computed(() => {
160+
return JSON.parse(store.getters.getForbiddenTitles.toLowerCase())
161+
})
162+
158163
function loadPostsFromCacheForAllActiveProfileChannels() {
159164
const postList_ = cacheEntriesForAllActiveProfileChannels.value.flatMap((cacheEntry) => {
160165
return cacheEntry.posts
@@ -164,7 +169,7 @@ function loadPostsFromCacheForAllActiveProfileChannels() {
164169
return b.publishedTime - a.publishedTime
165170
})
166171
167-
postList.value = postList_
172+
postList.value = postList_.filter(post => !forbiddenTitles.value.some(text => post.author.toLowerCase().includes(text)))
168173
isLoading.value = false
169174
}
170175
@@ -224,6 +229,7 @@ async function loadPostsForSubscriptionsFromRemote() {
224229
}
225230
}
226231
232+
posts = posts.filter(post => !forbiddenTitles.value.some(text => post.author.toLowerCase().includes(text)))
227233
return posts
228234
}))).flat()
229235

src/renderer/views/Watch/Watch.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ export default defineComponent({
244244
})
245245
},
246246
forbiddenTitles() {
247-
return JSON.parse(this.$store.getters.getForbiddenTitles)
247+
return JSON.parse(this.$store.getters.getForbiddenTitles.toLowerCase())
248248
},
249249
isUserPlaylistRequested: function () {
250250
return this.$route.query.playlistType === 'user'
@@ -1732,7 +1732,8 @@ export default defineComponent({
17321732
isHiddenVideo: function (forbiddenTitles, channelsHidden, video) {
17331733
return channelsHidden.some(ch => ch.name === video.authorId) ||
17341734
channelsHidden.some(ch => ch.name === video.author) ||
1735-
forbiddenTitles.some((text) => video.title?.toLowerCase().includes(text.toLowerCase()))
1735+
forbiddenTitles.some((text) => video.title?.toLowerCase().includes(text)) ||
1736+
forbiddenTitles.some((text) => video.author?.toLowerCase().includes(text))
17361737
},
17371738

17381739
toggleAutoplay: function() {

static/locales/af.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,8 @@ Settings:
546546
Hide Channel Shorts: 'Versteek kanaal-“kortvideo’s”-oortjie'
547547
Hide Channel Podcasts: 'Versteek kanaal-“podsendings”-oortjie'
548548
Hide Channel Releases: 'Versteek kanaal-“vrystellings”-oortjie'
549-
Hide Videos and Playlists Containing Text: 'Versteek video’s en afspeellyste wat teks bevat'
550-
Hide Videos and Playlists Containing Text Placeholder: 'Woord, woordfragment of frase'
549+
Hide Videos, Playlists and Channels Containing Text: 'Versteek video’s en afspeellyste wat teks bevat'
550+
Hide Videos, Playlists and Channels Containing Text Placeholder: 'Woord, woordfragment of frase'
551551
Hide Subscriptions Videos: 'Versteek intekenings video’s'
552552
Hide Subscriptions Shorts: 'Versteek intekenings kortvideo’s'
553553
Hide Subscriptions Live: 'Versteek intekenings regstreeks'
@@ -996,7 +996,7 @@ Tooltips:
996996
Distraction Free Settings:
997997
Hide Channels: 'Voer ’n kanaal-ID in om alle video’s, afspeellyste en die kanaal self te versteek sodat dit nie in soek, stygend, gewildste, en aanbeveel weergegee word nie. Die ingevoerde kanaal-ID moet volledig ooreenstem en is hooflettergevoelig.'
998998
Hide Subscriptions Live: 'Hierdie instelling woord oorheers deur die toepwye “{appWideSetting}”-instelling in die “{subsection}” gedeelte van “{settingsSection}”'
999-
Hide Videos and Playlists Containing Text: 'Voer ’n woord, woordfragment of woordgroep in (nie hooflettergevoelig) om alle video’s en afspeellyste waarvan die oorspronklike titel dit bevat, regoor FreeTube te versteek, met uitsondering van net geskiedenis, u afspeellyste en video’s in afspeellyste.'
999+
Hide Videos, Playlists and Channels Containing Text: 'Voer ’n woord, woordfragment of woordgroep in (nie hooflettergevoelig) om alle video’s en afspeellyste waarvan die oorspronklike titel dit bevat, regoor FreeTube te versteek, met uitsondering van net geskiedenis, u afspeellyste en video’s in afspeellyste.'
10001000
Subscription Settings:
10011001
Fetch Feeds from RSS: 'Wanneer geaktiveer, sal FreeTube RSS i.p.v. sy verstek metode gebruik om u intekenvoer op te haal. RSS is vinniger en voorkom IP-versperring, maar bied nie sekere inligting soos videoduur, status of plasings nie'
10021002
Fetch Automatically: 'Wanneer geaktiveer, sal FreeTube u intekenvoer outomaties ophaal wanneer ’n nuwe venster geopen word.'

static/locales/am.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -565,8 +565,8 @@ Settings:
565565
Hide Channel Podcasts: ''
566566
Hide Channel Releases: ''
567567
Hide Channel Courses: ''
568-
Hide Videos and Playlists Containing Text: ''
569-
Hide Videos and Playlists Containing Text Placeholder: ''
568+
Hide Videos, Playlists and Channels Containing Text: ''
569+
Hide Videos, Playlists and Channels Containing Text Placeholder: ''
570570
Hide Subscriptions Videos: ''
571571
Hide Subscriptions Shorts: ''
572572
Hide Subscriptions Live: ''
@@ -1015,7 +1015,7 @@ Tooltips:
10151015
Distraction Free Settings:
10161016
Hide Channels: ''
10171017
Hide Subscriptions Live: ''
1018-
Hide Videos and Playlists Containing Text: ''
1018+
Hide Videos, Playlists and Channels Containing Text: ''
10191019
Hide Videos on Watch: ''
10201020
Subscription Settings:
10211021
Fetch Feeds from RSS: ''

static/locales/ar.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -535,8 +535,8 @@ Settings:
535535
Hide Channels Disabled Message: تم حظر بعض القنوات باستخدام المعرّف ولم تتم معالجتها. يتم حظر الميزة أثناء تحديث هذه المعرفات
536536
Hide Channels Already Exists: معرف القناة موجود بالفعل
537537
Hide Channels API Error: ‬حدث خطأ أثناء استرداد المستخدم بالمعرف المدخل. يرجى التحقق مرة أخرى إذا كان المعرف صحيحا.
538-
Hide Videos and Playlists Containing Text: إخفاء مقاطع الفيديو وقوائم التشغيل التي تحتوي على نص
539-
Hide Videos and Playlists Containing Text Placeholder: كلمة أو جزء كلمة أو عبارة
538+
Hide Videos, Playlists and Channels Containing Text: إخفاء مقاطع الفيديو وقوائم التشغيل التي تحتوي على نص
539+
Hide Videos, Playlists and Channels Containing Text Placeholder: كلمة أو جزء كلمة أو عبارة
540540
Hide Channel Home: إخفاء علامة التبويب "الصفحة الرئيسية" للقناة
541541
Show Added Items: إظهار العناصر المضافة
542542
Hide Channel Courses: إخفاء علامة التبويب "دورات" القناة
@@ -978,7 +978,7 @@ Tooltips:
978978
Distraction Free Settings:
979979
Hide Channels: أدخل معرف القناة لإخفاء جميع مقاطع الفيديو وقوائم التشغيل والقناة نفسها من الظهور في نتائج البحث والشائعة والأكثر شهرة والموصى بها. يجب أن يكون معرف القناة الذي تم إدخاله متطابقًا تمامًا وأن يكون حساسًا لحالة الأحرف.
980980
Hide Subscriptions Live: يتم تجاوز هذا الإعداد من خلال إعداد "{appWideSetting}" على مستوى التطبيق، في قسم "{subsection}" من "{settingsSection}"
981-
Hide Videos and Playlists Containing Text: أدخل كلمة أو جزء كلمة أو عبارة (غير حساسة لحالة الأحرف) لإخفاء جميع مقاطع الفيديو وقوائم التشغيل التي تحتوي عناوينها الأصلية عليها في جميع أنحاء FreeTube، باستثناء السجل وقوائم التشغيل الخاصة بك ومقاطع الفيديو الموجودة داخل قوائم التشغيل فقط.
981+
Hide Videos, Playlists and Channels Containing Text: أدخل كلمة أو جزء كلمة أو عبارة (غير حساسة لحالة الأحرف) لإخفاء جميع مقاطع الفيديو وقوائم التشغيل التي تحتوي عناوينها الأصلية عليها في جميع أنحاء FreeTube، باستثناء السجل وقوائم التشغيل الخاصة بك ومقاطع الفيديو الموجودة داخل قوائم التشغيل فقط.
982982
Hide Videos on Watch: إخفاء مقاطع الفيديو التي تمت مشاهدتها من علامات التبويب "مقاطع الفيديو" و "الفيديوهات القصيرة" و "البث المباشر" في صفحتي الاشتراك والقناة. هذا لا يؤثر على علامة التبويب الرئيسية على صفحات القناة
983983
SponsorBlock Settings:
984984
UseDeArrowTitles: استبدل عناوين الفيديو بالعناوين التي أرسلها المستخدم من DeArrow.

static/locales/awa.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -538,8 +538,8 @@ Settings:
538538
Hide Channel Shorts: ''
539539
Hide Channel Podcasts: ''
540540
Hide Channel Releases: ''
541-
Hide Videos and Playlists Containing Text: ''
542-
Hide Videos and Playlists Containing Text Placeholder: ''
541+
Hide Videos, Playlists and Channels Containing Text: ''
542+
Hide Videos, Playlists and Channels Containing Text Placeholder: ''
543543
Hide Subscriptions Videos: ''
544544
Hide Subscriptions Shorts: ''
545545
Hide Subscriptions Live: ''
@@ -985,7 +985,7 @@ Tooltips:
985985
Distraction Free Settings:
986986
Hide Channels: ''
987987
Hide Subscriptions Live: ''
988-
Hide Videos and Playlists Containing Text: ''
988+
Hide Videos, Playlists and Channels Containing Text: ''
989989
Subscription Settings:
990990
Fetch Feeds from RSS: ''
991991
Fetch Automatically: ''

static/locales/be.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -523,8 +523,8 @@ Settings:
523523
Hide Subscriptions Shorts: 'Хаваць кароткія відэа з падпісак'
524524
Hide Subscriptions Live: 'Хаваць трансляцыі з падпісак'
525525
Hide Channels Already Exists: Ідэнтыфікатар канала ўжо існуе
526-
Hide Videos and Playlists Containing Text: Хаваць відэа і плэй-лісты, якія змяшчаюць тэкст
527-
Hide Videos and Playlists Containing Text Placeholder: Слова, фрагмент слова або фраза
526+
Hide Videos, Playlists and Channels Containing Text: Хаваць відэа і плэй-лісты, якія змяшчаюць тэкст
527+
Hide Videos, Playlists and Channels Containing Text Placeholder: Слова, фрагмент слова або фраза
528528
Hide Channels Disabled Message: Некаторыя каналы былі заблакіраваны з дапамогай ідэнтыфікатара і не былі апрацаваны. Функцыя заблакіравана, пакуль гэтыя ідэнтыфікатары абнаўляюцца
529529
Hide Channels Invalid: Памылковы ідэнтыфікатар канала
530530
Hide Channels API Error: Памылка атрымання карыстальніка з указаным ідэнтыфікатарам. Праверце яшчэ раз, ці правільны ідэнтыфікатар.
@@ -978,7 +978,7 @@ Tooltips:
978978
Distraction Free Settings:
979979
Hide Channels: 'Увядзіце ідэнтыфікатар канала, каб схаваць усе відэа, плэй-лісты і сам канал ад з''яўлення ў пошукавых, трэндавых, самых папулярных і рэкамендаваных. Уведзены ідэнтыфікатар канала павінен цалкам супадаць і ўлічваць рэгістр.'
980980
Hide Subscriptions Live: 'Гэта налада перавызначаецца наладай "{appWideSetting}" для ўсёй праграмы ў раздзеле "{subsection}" у "{settingsSection}"'
981-
Hide Videos and Playlists Containing Text: Увядзіце слова, фрагмент слова або фразу (без уліку рэгістра), каб схаваць усе відэа і плэй-лісты, арыгінальныя назвы якіх утрымліваюць гэта, ва ўсім FreeTube, за выключэннем толькі Гісторыі, Вашых плэй-лістоў і відэа ў плэй-лістах.
981+
Hide Videos, Playlists and Channels Containing Text: Увядзіце слова, фрагмент слова або фразу (без уліку рэгістра), каб схаваць усе відэа і плэй-лісты, арыгінальныя назвы якіх утрымліваюць гэта, ва ўсім FreeTube, за выключэннем толькі Гісторыі, Вашых плэй-лістоў і відэа ў плэй-лістах.
982982
Subscription Settings:
983983
Fetch Feeds from RSS: 'Пры ўключэнні FreeTube будзе выкарыстоўваць RSS замест метаду па змаўчанні для атрымання вашай стужкі падпіскі. RSS працуе хутчэй і прадухіляе блакіроўку IP-адрасоў, але не дае пэўнай інфармацыі, такой як працягласць відэа, стан у прамым эфіры або паведамленняў у супольнасці'
984984
Fetch Automatically: 'Калі ўключана, FreeTube будзе аўтаматычна атрымліваць стужку з вашых падпісак падчас запуску і пры адкрыцці новага акна.'

0 commit comments

Comments
 (0)