Merge pull request #2002 from iptv-org/freearhey-patch-2

Patch 2024.12.2
This commit is contained in:
Ismaël Moret 2025-01-05 19:50:17 +01:00 committed by GitHub
commit 9aa907e060
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 132 additions and 25 deletions

53
package-lock.json generated
View file

@ -22,6 +22,7 @@
"svelte": "^3.44.0",
"svelte-simple-modal": "^1.3.1",
"svelte-sitemap": "^2.6.0",
"sveltejs-tippy": "^3.0.0",
"tailwind-scrollbar-hide": "^1.1.7",
"tailwindcss": "^3.2.7",
"transliteration": "^2.2.0",
@ -518,6 +519,16 @@
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@sveltejs/adapter-static": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz",
@ -2022,6 +2033,15 @@
"node": ">= 14.17.0"
}
},
"node_modules/sveltejs-tippy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/sveltejs-tippy/-/sveltejs-tippy-3.0.0.tgz",
"integrity": "sha512-LAfQikm61AeqZW1hCFWUsmGEMmhMHDvrPV0JhbT38Ell9SqBjmFaY//+YKUxaJvx6nLMxGQdlcHA1rDg2Ml8tQ==",
"dev": true,
"dependencies": {
"tippy.js": "~6.0.1"
}
},
"node_modules/tailwind-scrollbar-hide": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/tailwind-scrollbar-hide/-/tailwind-scrollbar-hide-1.1.7.tgz",
@ -2079,6 +2099,15 @@
"globrex": "^0.1.2"
}
},
"node_modules/tippy.js": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.0.3.tgz",
"integrity": "sha512-buQF6HugTA4YeSA/s9xBhu0ferEAx7sRSn45G+Juh3p+Dz3vEKfxtqdg6JUnHIWDCV/r0u8Lrobs9AB4dtYcUQ==",
"dev": true,
"dependencies": {
"@popperjs/core": "^2.1.0"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@ -2566,6 +2595,12 @@
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
"@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"dev": true
},
"@sveltejs/adapter-static": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz",
@ -3573,6 +3608,15 @@
"xmlbuilder2": "^3.0.2"
}
},
"sveltejs-tippy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/sveltejs-tippy/-/sveltejs-tippy-3.0.0.tgz",
"integrity": "sha512-LAfQikm61AeqZW1hCFWUsmGEMmhMHDvrPV0JhbT38Ell9SqBjmFaY//+YKUxaJvx6nLMxGQdlcHA1rDg2Ml8tQ==",
"dev": true,
"requires": {
"tippy.js": "~6.0.1"
}
},
"tailwind-scrollbar-hide": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/tailwind-scrollbar-hide/-/tailwind-scrollbar-hide-1.1.7.tgz",
@ -3620,6 +3664,15 @@
"globrex": "^0.1.2"
}
},
"tippy.js": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.0.3.tgz",
"integrity": "sha512-buQF6HugTA4YeSA/s9xBhu0ferEAx7sRSn45G+Juh3p+Dz3vEKfxtqdg6JUnHIWDCV/r0u8Lrobs9AB4dtYcUQ==",
"dev": true,
"requires": {
"@popperjs/core": "^2.1.0"
}
},
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",

View file

@ -28,6 +28,7 @@
"tailwind-scrollbar-hide": "^1.1.7",
"tailwindcss": "^3.2.7",
"transliteration": "^2.2.0",
"validator": "^13.11.0"
"validator": "^13.11.0",
"sveltejs-tippy": "^3.0.0"
}
}

View file

@ -0,0 +1,30 @@
<script>
import tippy from 'sveltejs-tippy'
export let channel
const blocklistRefs = channel.blocklist_records
.map(record => {
const parts = record.ref.split('/')
const issueId = parts.pop()
const prefix = record.ref.includes('/issues/') ? '#' : ''
return `<a class="underline" target="_blank" rel="noreferrer" href="${record.ref}">${prefix}${issueId}</a>`
})
.join(', ')
</script>
<div
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 rounded-full"
use:tippy={{
content: `The channel has been added to our blocklist due to the claims of the copyright holder: ${blocklistRefs}`,
allowHTML: true,
placement: 'right',
interactive: true
}}
href={channel.blocklist_ref}
target="_blank"
rel="noreferrer"
>
Blocked
</div>

View file

@ -4,6 +4,8 @@
import GuidesPopup from './GuidesPopup.svelte'
import ChannelPopup from './ChannelPopup.svelte'
import Checkbox from './Checkbox.svelte'
import BlockedBadge from './BlockedBadge.svelte'
import ClosedBadge from './ClosedBadge.svelte'
import { downloadMode, selected, query } from '~/store'
import { fade } from 'svelte/transition'
@ -107,20 +109,10 @@
</a>
<div class="flex space-x-2">
{#if channel.is_closed}
<div
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full"
title="closed: {channel.closed}"
>
Closed
</div>
<ClosedBadge {channel} />
{/if}
{#if channel.is_blocked}
<div
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full"
title="The channel has been added to our blocklist due to the claim of the copyright holder"
>
Blocked
</div>
<BlockedBadge {channel} />
{/if}
</div>
</div>

View file

@ -3,6 +3,8 @@
import EditButton from '~/components/EditButton.svelte'
import Divider from '~/components/Divider.svelte'
import CloseButton from '~/components/CloseButton.svelte'
import BlockedBadge from './BlockedBadge.svelte'
import ClosedBadge from './ClosedBadge.svelte'
import { getContext } from 'svelte'
export let channel
@ -26,20 +28,10 @@
<h3 class="text-l font-medium text-gray-900 dark:text-white">{channel.displayName}</h3>
<div class="flex space-x-2">
{#if channel.is_closed}
<div
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full h-6"
title="closed: {channel.closed}"
>
Closed
</div>
<ClosedBadge {channel} />
{/if}
{#if channel.is_blocked}
<div
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full h-6"
title="The channel has been added to our blocklist due to the claim of the copyright holder"
>
Blocked
</div>
<BlockedBadge {channel} />
{/if}
</div>
</div>

View file

@ -0,0 +1,17 @@
<script>
import tippy from 'sveltejs-tippy'
export let channel
</script>
<div
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full"
use:tippy={{
content: `closed: ${channel.closed}`,
allowHTML: true,
placement: 'right',
interactive: true
}}
>
Closed
</div>

View file

@ -177,6 +177,9 @@ export function transformChannel(channel, data) {
channel.is_blocked = !!data.blocklist[channel.id]
channel.streams = channel._streams.length
channel.guides = channel._guides.length
channel.blocklist_records = Array.isArray(data.blocklist[channel.id])
? data.blocklist[channel.id]
: []
const isChannelNameRepeated = data.nameIndex[channel.name.toLowerCase()].length > 1
channel.displayName = isChannelNameRepeated

View file

@ -79,6 +79,11 @@
resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz"
integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
"@popperjs/core@^2.1.0":
version "2.11.8"
resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@sveltejs/adapter-static@^2.0.1":
version "2.0.1"
resolved "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz"
@ -897,6 +902,13 @@ svelte-sitemap@^2.6.0:
resolved "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz"
integrity sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==
sveltejs-tippy@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/sveltejs-tippy/-/sveltejs-tippy-3.0.0.tgz"
integrity sha512-LAfQikm61AeqZW1hCFWUsmGEMmhMHDvrPV0JhbT38Ell9SqBjmFaY//+YKUxaJvx6nLMxGQdlcHA1rDg2Ml8tQ==
dependencies:
tippy.js "~6.0.1"
tailwind-scrollbar-hide@^1.1.7:
version "1.1.7"
resolved "https://registry.npmjs.org/tailwind-scrollbar-hide/-/tailwind-scrollbar-hide-1.1.7.tgz"
@ -939,6 +951,13 @@ tiny-glob@^0.2.9:
globalyzer "0.1.0"
globrex "^0.1.2"
tippy.js@~6.0.1:
version "6.0.3"
resolved "https://registry.npmjs.org/tippy.js/-/tippy.js-6.0.3.tgz"
integrity sha512-buQF6HugTA4YeSA/s9xBhu0ferEAx7sRSn45G+Juh3p+Dz3vEKfxtqdg6JUnHIWDCV/r0u8Lrobs9AB4dtYcUQ==
dependencies:
"@popperjs/core" "^2.1.0"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"