- новый модуль 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>
18 lines
618 B
TypeScript
18 lines
618 B
TypeScript
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);
|
|
}
|
|
}
|