Skip to content

Commit 6250f50

Browse files
authored
feat(Comix): add activity (#10401)
1 parent 08728b9 commit 6250f50

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

websites/C/Comix/metadata.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"$schema": "https://schemas.premid.app/metadata/1.16",
3+
"apiVersion": 1,
4+
"author": {
5+
"id": "339316517558681610",
6+
"name": "firstoften"
7+
},
8+
"service": "Comix",
9+
"description": {
10+
"en": "Next-Gen Manga Experience."
11+
},
12+
"url": "comix.to",
13+
"regExp": "^https?[:][/][/]([a-z0-9-]+[.])*comix[.]to[/]",
14+
"version": "1.0.0",
15+
"logo": "https://raw.githubusercontent.com/sirschubert/assets/refs/heads/main/assets/communityIcon_p626ghkfd91g1.png",
16+
"thumbnail": "https://styles.redditmedia.com/t5_4vwp6n/styles/bannerBackgroundImage_iye1rp7mj91g1.png",
17+
"color": "#000000",
18+
"category": "anime",
19+
"tags": [
20+
"manga",
21+
"comics"
22+
]
23+
}

websites/C/Comix/presence.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { Assets } from 'premid'
2+
3+
const presence = new Presence({
4+
clientId: '1460511327771426848',
5+
})
6+
7+
presence.on('UpdateData', async () => {
8+
const presenceData: PresenceData = {
9+
largeImageKey: 'https://raw.githubusercontent.com/sirschubert/assets/refs/heads/main/assets/communityIcon_p626ghkfd91g1.png',
10+
}
11+
12+
const { pathname } = document.location
13+
14+
const mangaName = document.querySelector('.title')?.textContent?.trim() || 'Manga'
15+
const rawString = document.querySelector('.number')?.textContent?.trim()
16+
const groupName = document.querySelector('.user-name')?.textContent?.trim()
17+
const chapter = rawString?.split('/')[0]?.replace('Ch. ', '')?.trim()
18+
19+
const getImg = (selector: string) => {
20+
const el = document.querySelector(selector)
21+
const src = el?.getAttribute('data-src') || el?.getAttribute('src')
22+
return src ? new URL(src, document.location.href).href : null
23+
}
24+
25+
const poster = getImg('.poster div img') || getImg('.poster img')
26+
const readerPoster = getImg('.d-none img') || getImg('.reader-image img')
27+
28+
if (pathname === '/') {
29+
presenceData.state = 'Stepping into magical world...'
30+
}
31+
else if (pathname === '/home') {
32+
presenceData.state = 'Browsing homepage...'
33+
}
34+
else if (pathname === '/genres') {
35+
presenceData.details = 'Browsing genres...'
36+
}
37+
else if (pathname === '/groups/popular') {
38+
presenceData.details = 'Browsing popular groups...'
39+
}
40+
else if (/\/groups\/\d+/.test(pathname)) {
41+
presenceData.details = `Watching at '${groupName || 'Unknown'}' group`
42+
}
43+
else if (pathname.includes('/browser')) {
44+
presenceData.details = 'Searching for manga...'
45+
}
46+
47+
if (pathname.includes('/title')) {
48+
if (!rawString) {
49+
presenceData.details = `Watching "${mangaName}" mainpage`
50+
presenceData.largeImageKey = poster || presenceData.largeImageKey
51+
}
52+
else {
53+
presenceData.details = mangaName
54+
presenceData.state = `Chapter: ${chapter || 'Unknown'}`
55+
presenceData.largeImageKey = readerPoster || poster || presenceData.largeImageKey
56+
presenceData.smallImageKey = Assets.Reading
57+
presenceData.smallImageText = `Chapter: ${chapter}`
58+
}
59+
}
60+
61+
presence.setActivity(presenceData)
62+
})

0 commit comments

Comments
 (0)