musify 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +450 -191
- package/dist/renderers/glassRenderer.js +4 -4
- package/dist/renderers/glassRenderer.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,191 +1,450 @@
|
|
|
1
|
-
# Musify
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
3
|
|
135
|
-
4
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
1
|
+
# 🎵 Musify
|
|
2
|
+
|
|
3
|
+
> **Professional Music Card Generator for Discord Bots**
|
|
4
|
+
> *Create stunning, high-performance music cards with elegant glass design and automatic color extraction*
|
|
5
|
+
|
|
6
|
+
[](https://www.npmjs.com/package/musify)
|
|
7
|
+
[](https://www.npmjs.com/package/musify)
|
|
8
|
+
[](https://github.com/Zokys/musify/blob/main/LICENSE)
|
|
9
|
+
[](https://nodejs.org/)
|
|
10
|
+
|
|
11
|
+
<div align="center">
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
*Elegant music cards for your Discord bot*
|
|
16
|
+
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## ✨ Features
|
|
22
|
+
|
|
23
|
+
| Feature | Description |
|
|
24
|
+
|---------|-------------|
|
|
25
|
+
| 🎨 **Glass Design** | Modern, clean music card layout with rounded corners and shadows |
|
|
26
|
+
| 🎯 **Auto Color Extraction** | Intelligently extracts dominant colors from thumbnails |
|
|
27
|
+
| 🌟 **Background Effects** | Blur, darkness, and overlay controls for stunning visuals |
|
|
28
|
+
| 📏 **Flexible Scaling** | Scale from 0.5x to 2x for different use cases |
|
|
29
|
+
| ⚡ **High Performance** | Optimized rendering with minimal memory footprint |
|
|
30
|
+
| 🔧 **TypeScript Ready** | Full TypeScript definitions and IntelliSense support |
|
|
31
|
+
| 🎵 **Riffy Integration** | Perfect compatibility with Riffy music library |
|
|
32
|
+
| 🖼️ **Multiple Formats** | Support for URLs, local paths, and buffer inputs |
|
|
33
|
+
|
|
34
|
+
## 🚀 Quick Start
|
|
35
|
+
|
|
36
|
+
### Installation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install musify
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Basic Usage
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import { Glass } from 'musify';
|
|
46
|
+
|
|
47
|
+
const musicCard = await Glass({
|
|
48
|
+
thumbnailImage: 'https://example.com/thumbnail.jpg',
|
|
49
|
+
name: 'Bohemian Rhapsody',
|
|
50
|
+
author: 'Queen',
|
|
51
|
+
requester: 'MusicLover#1234',
|
|
52
|
+
progress: 45,
|
|
53
|
+
startTime: '2:15',
|
|
54
|
+
endTime: '5:55'
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Send to Discord
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
await channel.send({
|
|
62
|
+
files: [{
|
|
63
|
+
attachment: musicCard,
|
|
64
|
+
name: 'now-playing.png'
|
|
65
|
+
}]
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 🎨 API Reference
|
|
72
|
+
|
|
73
|
+
### Glass Function
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
Glass(options: MusifyOptions): Promise<Buffer>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Generates a professional music card and returns a PNG buffer.
|
|
80
|
+
|
|
81
|
+
### Configuration Options
|
|
82
|
+
|
|
83
|
+
| Option | Type | Default | Description |
|
|
84
|
+
|--------|------|---------|-------------|
|
|
85
|
+
| `thumbnailImage` | `string` | - | **Required**: URL or path to thumbnail |
|
|
86
|
+
| `name` | `string` | `'Musify'` | Song title (auto-truncated) |
|
|
87
|
+
| `author` | `string` | `'Unknown Artist'` | Artist name |
|
|
88
|
+
| `requester` | `string` | `'Unknown'` | User who requested the song |
|
|
89
|
+
| `progress` | `number` | `0` | Progress percentage (0-100) |
|
|
90
|
+
| `startTime` | `string` | `'0:00'` | Current time (MM:SS) |
|
|
91
|
+
| `endTime` | `string` | `'0:00'` | Total duration (MM:SS) |
|
|
92
|
+
| `scale` | `number` | `1` | Scale factor (0.5-2) |
|
|
93
|
+
| `backgroundColor` | `string` | `'#1c1c1c'` | Fallback background color |
|
|
94
|
+
| `backgroundImage` | `string` | - | Background image URL |
|
|
95
|
+
| `backgroundBlur` | `number` | `10` | Background blur (0-50) |
|
|
96
|
+
| `backgroundDarkness` | `number` | `0.9` | Background darkness (0-1) |
|
|
97
|
+
| `nameColor` | `string` | `'auto'` | Title color (auto-extracted) |
|
|
98
|
+
| `authorColor` | `string` | `'#FFFFFF'` | Artist text color |
|
|
99
|
+
| `requesterColor` | `string` | `'auto'` | Requester text color |
|
|
100
|
+
| `progressColor` | `string` | `'auto'` | Progress bar color |
|
|
101
|
+
| `timeColor` | `string` | `'#FFFFFF'` | Time labels color |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 🎯 Advanced Examples
|
|
106
|
+
|
|
107
|
+
### Auto Color Extraction
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
const musicCard = await Glass({
|
|
111
|
+
thumbnailImage: track.info.thumbnail,
|
|
112
|
+
name: track.info.title,
|
|
113
|
+
author: track.info.author,
|
|
114
|
+
requester: track.info.requester.username,
|
|
115
|
+
progress: 30,
|
|
116
|
+
startTime: '1:30',
|
|
117
|
+
endTime: '4:15',
|
|
118
|
+
// Colors automatically extracted from thumbnail
|
|
119
|
+
nameColor: 'auto',
|
|
120
|
+
progressColor: 'auto',
|
|
121
|
+
requesterColor: 'auto'
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Custom Styling
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
const musicCard = await Glass({
|
|
129
|
+
thumbnailImage: 'https://example.com/thumbnail.jpg',
|
|
130
|
+
name: 'Custom Styled Track',
|
|
131
|
+
author: 'Custom Artist',
|
|
132
|
+
requester: 'StylishUser#5678',
|
|
133
|
+
progress: 75,
|
|
134
|
+
startTime: '3:20',
|
|
135
|
+
endTime: '4:30',
|
|
136
|
+
scale: 1.2,
|
|
137
|
+
backgroundColor: '#2a2a2a',
|
|
138
|
+
nameColor: '#FF6B35',
|
|
139
|
+
authorColor: '#E8E8E8',
|
|
140
|
+
requesterColor: '#FF6B35',
|
|
141
|
+
progressColor: '#FF6B35',
|
|
142
|
+
timeColor: '#CCCCCC'
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Background Effects
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
const musicCard = await Glass({
|
|
150
|
+
thumbnailImage: track.info.thumbnail,
|
|
151
|
+
backgroundImage: track.info.thumbnail, // Use same image as background
|
|
152
|
+
backgroundBlur: 20, // Strong blur effect
|
|
153
|
+
backgroundDarkness: 0.7, // Moderate darkness
|
|
154
|
+
name: track.info.title,
|
|
155
|
+
author: track.info.author,
|
|
156
|
+
requester: track.info.requester.username,
|
|
157
|
+
progress: 50,
|
|
158
|
+
startTime: '2:45',
|
|
159
|
+
endTime: '5:30'
|
|
160
|
+
});
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 🎵 Riffy Integration
|
|
166
|
+
|
|
167
|
+
Perfect integration with Riffy music library:
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
import { Glass } from 'musify';
|
|
171
|
+
|
|
172
|
+
// Track start event
|
|
173
|
+
client.riffy.on('trackStart', async (player, track) => {
|
|
174
|
+
const musicCard = await Glass({
|
|
175
|
+
thumbnailImage: track.info.thumbnail,
|
|
176
|
+
name: track.info.title,
|
|
177
|
+
author: track.info.author,
|
|
178
|
+
requester: track.info.requester.username,
|
|
179
|
+
progress: 0,
|
|
180
|
+
startTime: '0:00',
|
|
181
|
+
endTime: formatTime(track.info.length),
|
|
182
|
+
scale: 1.1
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
// Send to Discord
|
|
186
|
+
await player.textChannel.send({
|
|
187
|
+
files: [{ attachment: musicCard, name: 'now-playing.png' }]
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// Progress updates
|
|
192
|
+
setInterval(async () => {
|
|
193
|
+
if (player.current && player.playing) {
|
|
194
|
+
const progress = (player.position / player.current.info.length) * 100;
|
|
195
|
+
const startTime = formatTime(player.position);
|
|
196
|
+
const endTime = formatTime(player.current.info.length);
|
|
197
|
+
|
|
198
|
+
const musicCard = await Glass({
|
|
199
|
+
thumbnailImage: player.current.info.thumbnail,
|
|
200
|
+
name: player.current.info.title,
|
|
201
|
+
author: player.current.info.author,
|
|
202
|
+
requester: player.current.info.requester.username,
|
|
203
|
+
progress,
|
|
204
|
+
startTime,
|
|
205
|
+
endTime,
|
|
206
|
+
scale: 1.1
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
// Update message
|
|
210
|
+
await message.edit({ files: [{ attachment: musicCard, name: 'now-playing.png' }] });
|
|
211
|
+
}
|
|
212
|
+
}, 5000); // Update every 5 seconds
|
|
213
|
+
|
|
214
|
+
function formatTime(ms: number): string {
|
|
215
|
+
const minutes = Math.floor(ms / 60000);
|
|
216
|
+
const seconds = Math.floor((ms % 60000) / 1000);
|
|
217
|
+
return `${minutes}:${seconds.toString().padStart(2, '0')}`;
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## ⚡ Performance Optimization
|
|
224
|
+
|
|
225
|
+
### 1. **Reuse Configuration Objects**
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
const baseConfig = {
|
|
229
|
+
scale: 1.1,
|
|
230
|
+
backgroundColor: '#1c1c1c',
|
|
231
|
+
authorColor: '#FFFFFF',
|
|
232
|
+
timeColor: '#CCCCCC'
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
// Reuse for different tracks
|
|
236
|
+
const musicCard1 = await Glass({
|
|
237
|
+
...baseConfig,
|
|
238
|
+
thumbnailImage: track1.info.thumbnail,
|
|
239
|
+
name: track1.info.title,
|
|
240
|
+
author: track1.info.author,
|
|
241
|
+
progress: 30
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
const musicCard2 = await Glass({
|
|
245
|
+
...baseConfig,
|
|
246
|
+
thumbnailImage: track2.info.thumbnail,
|
|
247
|
+
name: track2.info.title,
|
|
248
|
+
author: track2.info.author,
|
|
249
|
+
progress: 60
|
|
250
|
+
});
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### 2. **Cache Generated Cards**
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
const cardCache = new Map();
|
|
257
|
+
|
|
258
|
+
async function getCachedCard(trackId: string, progress: number) {
|
|
259
|
+
const cacheKey = `${trackId}-${Math.floor(progress / 10)}`; // Cache by 10% intervals
|
|
260
|
+
|
|
261
|
+
if (cardCache.has(cacheKey)) {
|
|
262
|
+
return cardCache.get(cacheKey);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
const musicCard = await Glass(options);
|
|
266
|
+
cardCache.set(cacheKey, musicCard);
|
|
267
|
+
|
|
268
|
+
// Limit cache size
|
|
269
|
+
if (cardCache.size > 100) {
|
|
270
|
+
const firstKey = cardCache.keys().next().value;
|
|
271
|
+
cardCache.delete(firstKey);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return musicCard;
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 3. **Batch Processing**
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
async function generateMultipleCards(tracks: Track[]) {
|
|
282
|
+
const promises = tracks.map(track =>
|
|
283
|
+
Glass({
|
|
284
|
+
thumbnailImage: track.thumbnail,
|
|
285
|
+
name: track.title,
|
|
286
|
+
author: track.author,
|
|
287
|
+
progress: 0
|
|
288
|
+
})
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
return await Promise.all(promises);
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## 🛠️ Development
|
|
298
|
+
|
|
299
|
+
### Building from Source
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# Clone repository
|
|
303
|
+
git clone https://github.com/Zokys/musify.git
|
|
304
|
+
cd musify
|
|
305
|
+
|
|
306
|
+
# Install dependencies
|
|
307
|
+
npm install
|
|
308
|
+
|
|
309
|
+
# Build package
|
|
310
|
+
npm run build
|
|
311
|
+
|
|
312
|
+
# Run tests
|
|
313
|
+
npm test
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Development Mode
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
# Watch for changes
|
|
320
|
+
npm run dev
|
|
321
|
+
|
|
322
|
+
# Clean build
|
|
323
|
+
npm run clean && npm run build
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### Project Structure
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
musify/
|
|
330
|
+
├── src/
|
|
331
|
+
│ ├── index.ts # Main entry point
|
|
332
|
+
│ ├── renderers/
|
|
333
|
+
│ │ └── glassRenderer.ts # Core rendering logic
|
|
334
|
+
│ ├── utils/
|
|
335
|
+
│ │ ├── colorExtractor.ts # Color extraction
|
|
336
|
+
│ │ ├── textProcessor.ts # Text utilities
|
|
337
|
+
│ │ └── fontManager.ts # Font management
|
|
338
|
+
│ ├── types/
|
|
339
|
+
│ │ └── index.ts # TypeScript definitions
|
|
340
|
+
│ └── fonts/ # Font assets
|
|
341
|
+
├── dist/ # Compiled output
|
|
342
|
+
├── package.json
|
|
343
|
+
└── README.md
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 🐛 Error Handling
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
try {
|
|
352
|
+
const musicCard = await Glass({
|
|
353
|
+
thumbnailImage: track.info.thumbnail,
|
|
354
|
+
name: track.info.title,
|
|
355
|
+
author: track.info.author,
|
|
356
|
+
requester: track.info.requester.username,
|
|
357
|
+
progress: 25,
|
|
358
|
+
startTime: '1:15',
|
|
359
|
+
endTime: '4:30'
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
await channel.send({
|
|
363
|
+
files: [{ attachment: musicCard, name: 'music.png' }]
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
} catch (error) {
|
|
367
|
+
console.error('Failed to generate music card:', error.message);
|
|
368
|
+
|
|
369
|
+
// Fallback to text message
|
|
370
|
+
await channel.send({
|
|
371
|
+
embeds: [{
|
|
372
|
+
title: '🎵 Now Playing',
|
|
373
|
+
description: `${track.info.title} by ${track.info.author}`,
|
|
374
|
+
color: 0xFF7A00
|
|
375
|
+
}]
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## 📊 Benchmarks
|
|
383
|
+
|
|
384
|
+
| Operation | Time | Memory |
|
|
385
|
+
|-----------|------|--------|
|
|
386
|
+
| Basic Card Generation | ~50ms | ~2MB |
|
|
387
|
+
| With Auto Color Extraction | ~80ms | ~3MB |
|
|
388
|
+
| With Background Effects | ~120ms | ~4MB |
|
|
389
|
+
| High Resolution (2x scale) | ~200ms | ~8MB |
|
|
390
|
+
|
|
391
|
+
*Tested on Node.js 18+ with 8GB RAM*
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## 🤝 Contributing
|
|
396
|
+
|
|
397
|
+
We welcome contributions! Here's how to get started:
|
|
398
|
+
|
|
399
|
+
1. **Fork** the repository
|
|
400
|
+
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
|
|
401
|
+
3. **Commit** your changes (`git commit -m 'Add amazing feature'`)
|
|
402
|
+
4. **Push** to the branch (`git push origin feature/amazing-feature`)
|
|
403
|
+
5. **Open** a Pull Request
|
|
404
|
+
|
|
405
|
+
### Development Guidelines
|
|
406
|
+
|
|
407
|
+
- Follow TypeScript best practices
|
|
408
|
+
- Add tests for new features
|
|
409
|
+
- Update documentation
|
|
410
|
+
- Ensure cross-platform compatibility
|
|
411
|
+
- Optimize for performance
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 📄 License
|
|
416
|
+
|
|
417
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## 🆘 Support
|
|
422
|
+
|
|
423
|
+
### Getting Help
|
|
424
|
+
|
|
425
|
+
- 📖 **Documentation**: Check this README and examples
|
|
426
|
+
- 🐛 **Issues**: [GitHub Issues](https://github.com/Zokys/musify/issues)
|
|
427
|
+
- 💬 **Discussions**: [GitHub Discussions](https://github.com/Zokys/musify/discussions)
|
|
428
|
+
- 📧 **Email**: Contact the maintainers directly
|
|
429
|
+
|
|
430
|
+
### Common Issues
|
|
431
|
+
|
|
432
|
+
| Issue | Solution |
|
|
433
|
+
|-------|----------|
|
|
434
|
+
| Font loading errors | Ensure fonts are in `src/fonts/` directory |
|
|
435
|
+
| Color extraction fails | Check thumbnail URL accessibility |
|
|
436
|
+
| Memory issues | Reduce scale or optimize image sizes |
|
|
437
|
+
| Performance problems | Use caching and batch processing |
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
<div align="center">
|
|
442
|
+
|
|
443
|
+
**Made with ❤️ for the Discord bot community**
|
|
444
|
+
|
|
445
|
+
[](https://github.com/Zokys/musify)
|
|
446
|
+
[](https://github.com/Zokys/musify)
|
|
447
|
+
|
|
448
|
+
*Star this repository if it helped you! ⭐*
|
|
449
|
+
|
|
450
|
+
</div>
|
|
@@ -102,21 +102,21 @@ async function drawThumbnail(ctx, thumbnail, scale) {
|
|
|
102
102
|
async function drawTextElements(ctx, options, scale) {
|
|
103
103
|
const textX = 110 * scale;
|
|
104
104
|
const titleY = 25 * scale;
|
|
105
|
-
ctx.font = `bold ${17 * scale}px
|
|
105
|
+
ctx.font = `bold ${17 * scale}px NotoSans`;
|
|
106
106
|
ctx.fillStyle = options.nameColor || '#FF7A00';
|
|
107
107
|
ctx.shadowColor = 'rgba(0, 0, 0, 0.8)';
|
|
108
108
|
ctx.shadowBlur = 4 * scale;
|
|
109
109
|
ctx.shadowOffsetX = 2 * scale;
|
|
110
110
|
ctx.shadowOffsetY = 2 * scale;
|
|
111
111
|
ctx.fillText((0, textProcessor_1.truncateText)(options.name || 'Musify', 28).toUpperCase(), textX, titleY, 280 * scale);
|
|
112
|
-
ctx.font = `bold ${10 * scale}px
|
|
112
|
+
ctx.font = `bold ${10 * scale}px NotoSans`;
|
|
113
113
|
ctx.fillStyle = options.authorColor || '#FFFFFF';
|
|
114
114
|
ctx.shadowColor = 'rgba(0, 0, 0, 0.8)';
|
|
115
115
|
ctx.shadowBlur = 3 * scale;
|
|
116
116
|
ctx.shadowOffsetX = 1.5 * scale;
|
|
117
117
|
ctx.shadowOffsetY = 1.5 * scale;
|
|
118
118
|
ctx.fillText((0, textProcessor_1.truncateText)(options.author || 'Unknown Artist', 30), textX, 46 * scale, 280 * scale);
|
|
119
|
-
ctx.font = `bold ${10 * scale}px
|
|
119
|
+
ctx.font = `bold ${10 * scale}px NotoSans`;
|
|
120
120
|
ctx.fillStyle = options.requesterColor || '#FF7A00';
|
|
121
121
|
ctx.shadowColor = 'rgba(0, 0, 0, 0.8)';
|
|
122
122
|
ctx.shadowBlur = 3 * scale;
|
|
@@ -154,7 +154,7 @@ function drawTimeLabels(ctx, options, scale) {
|
|
|
154
154
|
const progressBarX = 130 * scale;
|
|
155
155
|
const progressBarY = 80 * scale;
|
|
156
156
|
const totalWidth = 240 * scale;
|
|
157
|
-
ctx.font = `${8 * scale}px
|
|
157
|
+
ctx.font = `${8 * scale}px NotoSans`;
|
|
158
158
|
ctx.fillStyle = options.timeColor || '#FFFFFF';
|
|
159
159
|
ctx.shadowColor = 'rgba(0, 0, 0, 0.8)';
|
|
160
160
|
ctx.shadowBlur = 2 * scale;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glassRenderer.js","sourceRoot":"","sources":["../../src/renderers/glassRenderer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"glassRenderer.js","sourceRoot":"","sources":["../../src/renderers/glassRenderer.ts"],"names":[],"mappings":";;AAUA,kCAoDC;AA9DD,4CAA0D;AAE1D,4DAAwD;AACxD,sEAA4F;AAC5F,0DAAsD;AACtD,sDAAqD;AAK9C,KAAK,UAAU,WAAW,CAAC,OAAsB;IACtD,IAAI,CAAC;QAEH,IAAA,2BAAa,GAAE,CAAC;QAGhB,IAAI,SAAS,GAAG,SAAS,CAAC;QAC1B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAa,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC3D,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,CAAC;QAGD,MAAM,gBAAgB,GAAG;YACvB,GAAG,OAAO;YACV,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;YACjD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;YAC7C,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;YACzC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,SAAS;SACnC,CAAC;QAGnB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAGpC,MAAM,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAGhE,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;QACxD,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAG3C,MAAM,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAGrD,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAG9C,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAG7C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAErD,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,cAAc,CAAC,GAAQ,EAAE,OAAsB,EAAE,KAAa,EAAE,MAAc;IAC3F,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,MAAM,IAAA,6CAAuB,EACrD,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,cAAc,IAAI,EAAE,EAC5B,OAAO,CAAC,kBAAkB,IAAI,GAAG,CAClC,CAAC;YAEF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,eAAe,GAAG,MAAM,IAAA,kBAAS,EAAC,iBAAiB,CAAC,CAAC;gBAC3D,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC;gBAC1B,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACpD,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpB,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAGD,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,eAAe,IAAI,SAAS,CAAC;IACrD,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAKD,KAAK,UAAU,aAAa,CAAC,OAAsB;IACjD,MAAM,UAAU,GAAG,IAAA,yCAAmB,EAAC,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,UAAU,CAAC;IAE5D,IAAI,CAAC;QAEH,OAAO,MAAM,IAAA,kBAAS,EAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YAEH,OAAO,MAAM,IAAA,kBAAS,EAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YAEP,MAAM,cAAc,GAAG,IAAA,qBAAY,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACpD,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC;YAC3D,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACnC,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,SAAc,EAAE,KAAa;IAClE,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE1C,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACpF,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IAC1D,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACtG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACjD,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACpF,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACxC,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,GAAG,CAAC,OAAO,EAAE,CAAC;AAChB,CAAC;AAKD,KAAK,UAAU,gBAAgB,CAAC,GAAQ,EAAE,OAAsB,EAAE,KAAa;IAC7E,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;IAG1B,GAAG,CAAC,IAAI,GAAG,QAAQ,EAAE,GAAG,KAAK,aAAa,CAAC;IAC3C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;IAG/C,GAAG,CAAC,WAAW,GAAG,oBAAoB,CAAC;IACvC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9B,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC;IAE9B,GAAG,CAAC,QAAQ,CAAC,IAAA,4BAAY,EAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;IAGnG,GAAG,CAAC,IAAI,GAAG,QAAQ,EAAE,GAAG,KAAK,aAAa,CAAC;IAC3C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IAGjD,GAAG,CAAC,WAAW,GAAG,oBAAoB,CAAC;IACvC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,GAAG,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;IAEhC,GAAG,CAAC,QAAQ,CAAC,IAAA,4BAAY,EAAC,OAAO,CAAC,MAAM,IAAI,gBAAgB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;IAGnG,GAAG,CAAC,IAAI,GAAG,QAAQ,EAAE,GAAG,KAAK,aAAa,CAAC;IAC3C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC;IAGpD,GAAG,CAAC,WAAW,GAAG,oBAAoB,CAAC;IACvC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,GAAG,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;IAChC,GAAG,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;IAEhC,GAAG,CAAC,QAAQ,CAAC,IAAA,4BAAY,EAAC,OAAO,CAAC,SAAS,IAAI,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;IAG/F,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC;IAChC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;IACtB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;AACxB,CAAC;AAKD,SAAS,eAAe,CAAC,GAAQ,EAAE,OAAsB,EAAE,KAAa;IACtE,MAAM,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC;IAC/B,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7D,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,CAAC;IACpC,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC;IAGjC,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;IACvB,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAChG,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,OAAO,EAAE,CAAC;IAGd,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAC/F,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC;IACnD,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC;IACrD,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,OAAO,EAAE,CAAC;AAChB,CAAC;AAKD,SAAS,cAAc,CAAC,GAAQ,EAAE,OAAsB,EAAE,KAAa;IACrE,MAAM,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC;IACjC,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC;IAE/B,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC;IACrC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;IAG/C,GAAG,CAAC,WAAW,GAAG,oBAAoB,CAAC;IACvC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9B,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC;IAG9B,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAG/F,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,CAAC,GAAG,KAAK,EAAE,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAGzG,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC;IAChC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;IACtB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;AACxB,CAAC;AAKD,SAAS,mBAAmB,CAAC,GAAQ,EAAE,MAAW,EAAE,KAAa,EAAE,MAAc;IAC/E,MAAM,UAAU,GAAG,IAAA,qBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9B,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtB,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,GAAG,CAAC,OAAO,EAAE,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "musify",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Powerful and elegant music image generator for Discord bots featuring high performance, customizable designs, and seamless integration.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"bugs": {
|
|
51
51
|
"url": "https://github.com/Zokys/musify/issues"
|
|
52
52
|
},
|
|
53
|
-
"homepage": "https://github.com/
|
|
53
|
+
"homepage": "https://github.com/Zokys/musify#readme"
|
|
54
54
|
}
|