Xtream Code Club May 2026

.channel-info h4 { margin-bottom: 5px; font-size: 14px; }

app.get('/api/stream/url/:type/:id', async (req, res) => { if (!req.app.locals.client) { return res.status(401).json({ error: 'Not connected' }); } const { type, id } = req.params; const url = req.app.locals.client.getStreamUrl(id, type); res.json({ url }); }); xtream code club

const loadStreams = async (categoryId, type) => { const response = await fetch(`/api/streams?category_id=${categoryId}&type=${type}`); const data = await response.json(); setStreams(data); }; .channel-info h4 { margin-bottom: 5px

.channel-actions { padding: 10px 15px; border-top: 1px solid #f0f0f0; display: flex; gap: 10px; } } const { type

.channel-card:hover { transform: translateY(-5px); box-shadow: 0 5px 20px rgba(0,0,0,0.15); }

返回顶部