Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
Something went wrong. Try again.
2.5 kB · 77 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import * as z from "zod";import { MaybeLogger } from "../../MaybeLogger.ts";import type { RockskyTransformerConfig, RockskyTransformerData } from "../../vendor/rocksky/interfaces.ts";import { DEFAULT_TRANSFORMER_ENV_NAME } from "../../../../core/Transform.ts";
export const configFromEnv = (logger: MaybeLogger = new MaybeLogger()) => { const rsEnv = process.env.RS_PRESETS; let rsConfig: RockskyTransformerConfig | undefined; if (rsEnv !== undefined && rsEnv.trim() !== '') { rsConfig = { type: 'rocksky', name: DEFAULT_TRANSFORMER_ENV_NAME, data: { apis: [ { enable: true } ] }, defaults: {} }; const presets = rsEnv.split(',').map(x => x.trim().toLocaleLowerCase()); const soSet = new Set<SearchType>(); for (const pName of presets) { const p = PRESETS[pName]; if (p === undefined) { logger.warn(`No preset with name '${p}'`); continue; } const { searchOrder = [], ...rest } = p; rsConfig.defaults = { ...rsConfig.defaults, ...rest, }; for (const o of searchOrder) { soSet.add(o); } }
if (soSet.size > 0) { rsConfig.defaults = {...rsConfig.defaults, searchOrder: Array.from(soSet)}; } logger.debug(`Using presets: ${presets.join(',')}`); }
return rsConfig;}
export const DEFAULT_ROCKSKY_SEARCH_ORDER: SearchType[] = ["isrc","basic"]
export const DEFAULTS_NATIVE: RockskyTransformerData = { "searchArtistMethod": "native", "searchOrder": ["artist"]};
export const DEFAULTS_FIELDS_BIAS = { "titleWeight": 0.33, "albumWeight": 0.33, "artistWeight": 0.33};
export const DEFAULTS_PRESET: RockskyTransformerData = { "searchOrder": DEFAULT_ROCKSKY_SEARCH_ORDER};
export const DEFAULTS_ID: RockskyTransformerData = { "searchOrder": ["isrc", "mbid", "basic"]};
export const PRESETS: Record<string, RockskyTransformerData> = { default: DEFAULTS_PRESET, sensible: DEFAULTS_ID, native: DEFAULTS_NATIVE, 'id': DEFAULTS_ID};export const searchType = z.enum(['basic', 'basicorids', 'mbid', 'isrc', 'artist']);export type SearchType = z.infer<typeof searchType>;