Xtream Code Club «2025-2027»
.video-container { background: #000; min-height: 400px; position: relative; }
.category-group { margin-bottom: 20px; } 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); }; .video-container { background: #000
async getStreams(categoryId = null, type = 'live') { try { let action = ''; switch(type) { case 'live': action = 'get_live_streams'; break; case 'vod': action = 'get_vod_streams'; break; case 'series': action = 'get_series'; break; } const params = { username: this.username, password: this.password, action: action }; if (categoryId) params.category_id = categoryId; const response = await axios.get(`${this.baseUrl}/player_api.php`, { params }); return response.data; } catch (error) { throw error; } } } .category-group { margin-bottom: 20px
.channels-grid { flex: 1; overflow-y: auto; padding: 20px; display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; }
.user-info { padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }