Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions websites/J/JKAnime/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"url": "jkanime.net",
"regExp": "^https?[:][/][/]([a-z0-9-]+[.])*jkanime[.]net[/]",
"version": "1.1.0",
"version": "1.2.0",
"logo": "https://cdn.rcd.gg/PreMiD/websites/J/JKAnime/assets/logo.png",
"thumbnail": "https://cdn.rcd.gg/PreMiD/websites/J/JKAnime/assets/thumbnail.png",
"color": "#000000",
Expand All @@ -23,5 +23,29 @@
"video"
],
"iframe": true,
"iFrameRegExp": "(.*\\.)?jkanime\\.net"
"iFrameRegExp": "(^|\\.)?(jkanime\\.net|mega\\.nz|sfastwish\\.com|flaswish\\.com|vidhidevip\\.com|callistanise\\.com|mdbekjwqa\\.pw|mp4upload\\.com|streamtape\\.com|dsvplay\\.com|myvidplay\\.com)",
"settings": [
{
"id": "useAnimeCover",
"title": "Show Cover",
"icon": "fad fa-images",
"value": true
},
{
"id": "usePresenceName",
"title": "Show Title as Presence",
"icon": "fad fa-user-edit",
"value": true
},
{
"id": "logoType",
"title": "Icon",
"icon": "fad fa-images",
"value": 0,
"values": [
"Animated",
"Still"
]
}
]
}
51 changes: 38 additions & 13 deletions websites/J/JKAnime/presence.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ let cache: {
episodio: string
season: string
bannerImg: string
descAnime: string
} = {
text: '',
nombreAnime: '',
episodio: '',
season: '',
bannerImg: ActivityAssets.Gif,
descAnime: '',
}

async function getEpisodeInfo(text: string) {
Expand All @@ -36,13 +38,16 @@ async function getEpisodeInfo(text: string) {
episodio: cache.episodio,
season: cache.season,
bannerImg: cache.bannerImg,
descAnime: cache.descAnime,
}
}
const [episodioParte, tituloCompleto] = text.split(' - ')
const episodio = episodioParte?.trim() || ''
const seasonMatch = tituloCompleto?.match(/Season\s*(\d+)/i)
const nombreAnime = tituloCompleto?.replace(/Season\s*\d+/i, '').trim() || ''
const season = seasonMatch ? `Season ${seasonMatch[1]}` : 'Season 1'
const currentEpisode = document.querySelector(
'#episodes-content li.list-group-item.current',
)
const episodio = currentEpisode?.querySelector('h5')?.textContent?.trim() || 'Episodio 1'
const nombreAnime = document.querySelector('.video_i a')?.textContent?.trim() || ''
const season = 'Season 1'
const descAnime = document.querySelector('.video_i p')?.textContent?.trim() || ''

const bannerElement = document.querySelector('div.video_t > a > img')
const bannerImg = bannerElement?.getAttribute('src') || ActivityAssets.Gif
Expand All @@ -53,13 +58,15 @@ async function getEpisodeInfo(text: string) {
episodio,
season,
bannerImg,
descAnime,
}

return {
nombreAnime,
episodio,
season,
bannerImg,
descAnime,
}
}

Expand All @@ -73,11 +80,17 @@ presence.on('iFrameData', (data: any) => {
})

presence.on('UpdateData', async () => {
const [useAnimeCover, usePresenceName, logoType] = await Promise.all([
presence.getSetting<boolean>('useAnimeCover'),
presence.getSetting<boolean>('usePresenceName'),
presence.getSetting<number>('logoType'),
])

const { pathname } = document.location
const presenceData: PresenceData = {
details: 'Navegando',
state: 'Pagina de Inicio',
largeImageKey: ActivityAssets.Gif,
largeImageKey: [ActivityAssets.Gif, ActivityAssets.Logo][logoType] || ActivityAssets.Logo,
type: ActivityType.Watching,
startTimestamp: browsingTimestamp,
smallImageKey: Assets.Reading,
Expand All @@ -89,11 +102,23 @@ presence.on('UpdateData', async () => {
const textoTest = bc.textContent
const episodeData = await getEpisodeInfo(textoTest)

presenceData.name = episodeData?.nombreAnime
presenceData.details = `${episodeData?.episodio} - ${episodeData.season}`
presenceData.state = 'JKAnime'
presenceData.largeImageKey = episodeData?.bannerImg
presenceData.largeImageText = `Viendo: ${episodeData?.nombreAnime}`
if (usePresenceName) {
presenceData.name = episodeData?.nombreAnime
}
else {
presenceData.name = 'JKAnime'
}

if (useAnimeCover) {
presenceData.largeImageKey = episodeData?.bannerImg
}
else {
presenceData.largeImageKey = [ActivityAssets.Gif, ActivityAssets.Logo][logoType] || ActivityAssets.Logo
}

presenceData.details = episodeData?.nombreAnime
presenceData.state = episodeData?.descAnime
presenceData.largeImageText = `${episodeData.season.toString()}, ${episodeData.episodio.toString()}`

if (iframePlayback) {
presenceData.smallImageKey = isPaused ? Assets.Pause : Assets.Play
Expand Down Expand Up @@ -205,11 +230,11 @@ presence.on('UpdateData', async () => {
presence.setActivity(presenceData)
return
}
else if (pathname.includes('/') && !/\/\d+\/?$/.test(pathname)) {
else if (pathname.includes('/') && !/\/\d+\/?$/.test(pathname) && !pathname.includes('/pelicula/')) {
const animeTitle = pathname.split('/')[1] || ''

if (animeTitle) {
const title = document.querySelector('div.anime_info > h3')?.textContent
const title = document.querySelector('div.anime_info > h3')?.textContent || 'Comunidad'

presenceData.details = 'Viendo Descripción'
presenceData.state = `Leyendo sobre: ${title}`
Expand Down
Loading