Skip to content

Commit 089f8c1

Browse files
authored
feat(Deokwave): add activity (#10709)
1 parent facafb5 commit 089f8c1

2 files changed

Lines changed: 170 additions & 0 deletions

File tree

websites/D/Deokwave/metadata.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"$schema": "https://schemas.premid.app/metadata/1.16",
3+
"apiVersion": 1,
4+
"author": {
5+
"name": "Deokwave",
6+
"id": "681582689828208646"
7+
},
8+
"service": "Deokwave",
9+
"description": {
10+
"en": "Watch anime on Deokwave.",
11+
"tr": "Deokwave'de anime izle."
12+
},
13+
"url": "deokwave.com",
14+
"regExp": "^https?[:][/][/](deokwave[.]com)[/]",
15+
"version": "1.0.0",
16+
"logo": "https://i.imgur.com/SbmVetu.png",
17+
"thumbnail": "https://i.imgur.com/MoEBLvd.jpeg",
18+
"color": "#8b5cf6",
19+
"category": "anime",
20+
"tags": ["anime", "turkish", "streaming"],
21+
"settings": [
22+
{
23+
"id": "showEpisode",
24+
"title": "Show episode info",
25+
"icon": "fas fa-play-circle",
26+
"value": true
27+
},
28+
{
29+
"id": "showTimestamps",
30+
"title": "Show timestamps",
31+
"icon": "fas fa-clock",
32+
"value": true
33+
}
34+
]
35+
}

websites/D/Deokwave/presence.ts

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
import { Assets, getTimestamps } from 'premid'
2+
3+
enum Images {
4+
Logo = 'https://i.imgur.com/SbmVetu.png',
5+
}
6+
7+
const presence = new Presence({
8+
clientId: '1471931109104160820',
9+
})
10+
11+
presence.on('UpdateData', async () => {
12+
const presenceData: PresenceData = {
13+
largeImageKey: Images.Logo,
14+
}
15+
16+
const path = document.location.pathname
17+
const [showEpisode, showTimestamps, resolvedStrings] = await Promise.all([
18+
presence.getSetting<boolean>('showEpisode'),
19+
presence.getSetting<boolean>('showTimestamps'),
20+
presence.getStrings({
21+
play: 'general.playing',
22+
pause: 'general.paused',
23+
browsing: 'general.browsing',
24+
}),
25+
])
26+
27+
if (path === '/') {
28+
presenceData.details = 'Ana Sayfada'
29+
presenceData.smallImageKey = Assets.Reading
30+
presenceData.smallImageText = resolvedStrings.browsing
31+
}
32+
else if (path.startsWith('/watch/')) {
33+
const videoPlayer = document.getElementById('videoPlayer') as HTMLVideoElement | null
34+
const titleEl = document.getElementById('videoTitle')
35+
36+
if (videoPlayer) {
37+
const titleText = titleEl?.textContent?.trim() || document.title.replace(' - Deokwave', '').trim()
38+
const isPaused = videoPlayer.paused
39+
40+
if (!isPaused && showTimestamps && !Number.isNaN(videoPlayer.duration)) {
41+
const [startTimestamp, endTimestamp] = getTimestamps(
42+
Math.floor(videoPlayer.currentTime),
43+
Math.floor(videoPlayer.duration),
44+
)
45+
presenceData.startTimestamp = startTimestamp
46+
presenceData.endTimestamp = endTimestamp
47+
}
48+
49+
presenceData.details = isPaused ? resolvedStrings.pause : resolvedStrings.play
50+
presenceData.smallImageKey = isPaused ? Assets.Pause : Assets.Play
51+
presenceData.smallImageText = isPaused ? resolvedStrings.pause : resolvedStrings.play
52+
53+
if (showEpisode) {
54+
presenceData.state = titleText
55+
}
56+
}
57+
else {
58+
presenceData.details = 'Anime İzliyor'
59+
presenceData.smallImageKey = Assets.Play
60+
}
61+
}
62+
else if (path.startsWith('/anime/')) {
63+
const title = document.querySelector<HTMLElement>('h1')?.textContent?.trim()
64+
presenceData.details = 'Anime Sayfasında'
65+
66+
if (title) {
67+
presenceData.state = title
68+
}
69+
70+
presenceData.smallImageKey = Assets.Reading
71+
presenceData.smallImageText = resolvedStrings.browsing
72+
}
73+
else if (path.startsWith('/animeler/')) {
74+
presenceData.details = 'Anime Listesinde'
75+
presenceData.smallImageKey = Assets.Reading
76+
presenceData.smallImageText = resolvedStrings.browsing
77+
}
78+
else if (path.startsWith('/kategoriler/')) {
79+
presenceData.details = 'Kategorilerde'
80+
presenceData.smallImageKey = Assets.Reading
81+
presenceData.smallImageText = resolvedStrings.browsing
82+
}
83+
else if (path.startsWith('/takvim/')) {
84+
presenceData.details = 'Yayın Takviminde'
85+
presenceData.smallImageKey = Assets.Reading
86+
presenceData.smallImageText = resolvedStrings.browsing
87+
}
88+
else if (path.startsWith('/kesfet/')) {
89+
presenceData.details = 'Anime Keşfediyor'
90+
presenceData.smallImageKey = Assets.Reading
91+
presenceData.smallImageText = resolvedStrings.browsing
92+
}
93+
else if (path.startsWith('/siralama/')) {
94+
presenceData.details = 'Sıralamada'
95+
presenceData.smallImageKey = Assets.Reading
96+
presenceData.smallImageText = resolvedStrings.browsing
97+
}
98+
else if (path.startsWith('/liste/')) {
99+
presenceData.details = 'Listesinde'
100+
presenceData.smallImageKey = Assets.Reading
101+
presenceData.smallImageText = resolvedStrings.browsing
102+
}
103+
else if (path.startsWith('/profil/')) {
104+
presenceData.details = 'Profil Sayfasında'
105+
presenceData.smallImageKey = Assets.Reading
106+
presenceData.smallImageText = resolvedStrings.browsing
107+
}
108+
else if (path.startsWith('/mesajlar/')) {
109+
presenceData.details = 'Mesajlarında'
110+
presenceData.smallImageKey = Assets.Reading
111+
presenceData.smallImageText = resolvedStrings.browsing
112+
}
113+
else if (path.startsWith('/birlikte-izle/')) {
114+
presenceData.details = 'Birlikte İzliyor'
115+
presenceData.smallImageKey = Assets.Play
116+
presenceData.smallImageText = resolvedStrings.play
117+
}
118+
else if (path.startsWith('/ayarlar/')) {
119+
presenceData.details = 'Ayarlarda'
120+
presenceData.smallImageKey = Assets.Reading
121+
presenceData.smallImageText = resolvedStrings.browsing
122+
}
123+
else if (path.startsWith('/rehber/')) {
124+
presenceData.details = 'Rehberde'
125+
presenceData.smallImageKey = Assets.Reading
126+
presenceData.smallImageText = resolvedStrings.browsing
127+
}
128+
else {
129+
presenceData.details = `Deokwave'de`
130+
presenceData.smallImageKey = Assets.Reading
131+
presenceData.smallImageText = resolvedStrings.browsing
132+
}
133+
134+
presence.setActivity(presenceData)
135+
})

0 commit comments

Comments
 (0)