feat(shazam): распознавание трека через Shazam API для станций без метаданных
- новый модуль shazam: POST /shazam/recognize/:stationId — тянет ~6с аудио из потока станции, отдаёт в изолированный ShazamClient, возвращает artist/song/cover - ShazamClient — адаптер к shazam-api.com, ключ из env (SHAZAM_API_KEY); точный контракт запроса/ответа помечен TODO до получения доки из ЛК - кэш результата по станции (15с) — троттлинг + экономия платных вызовов - общий реестр не-музыкальных жанров (common/station-classification.ts); charts.service переведён на него, shazam использует для гейта «есть ли музыка» Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
17
src/shazam/shazam.controller.ts
Normal file
17
src/shazam/shazam.controller.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { Controller, Post, Param, ParseIntPipe } from '@nestjs/common';
|
||||
import { ApiTags, ApiOperation } from '@nestjs/swagger';
|
||||
import { ShazamService } from './shazam.service';
|
||||
|
||||
@ApiTags('shazam')
|
||||
@Controller('shazam')
|
||||
export class ShazamController {
|
||||
constructor(private readonly shazamService: ShazamService) {}
|
||||
|
||||
@Post('recognize/:stationId')
|
||||
@ApiOperation({
|
||||
summary: 'Распознать играющий сейчас трек на станции (по station_id)',
|
||||
})
|
||||
async recognize(@Param('stationId', ParseIntPipe) stationId: number) {
|
||||
return this.shazamService.recognize(stationId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user