Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b33d3c6
feat(qobuz): Implement Qobuz provider
Lioncat6 Apr 3, 2026
d1aee75
fix(qobuz): Add ETI to track names
Lioncat6 Apr 3, 2026
6ba317a
fix(qobuz): Add provider testdata
Lioncat6 Apr 3, 2026
6d8c718
fix(qobuz): Implement new authentication requirements
Lioncat6 Apr 3, 2026
3f468ae
chore(qobuz): Fix issues with testing
Lioncat6 Apr 3, 2026
b687db7
chore(qobuz): Fix line formatting
Lioncat6 Apr 3, 2026
3635c09
fix(qobuz): Implement suggestions
Lioncat6 Apr 3, 2026
fbbd91c
test(qobuz): Update tests for track artists change
Lioncat6 Apr 3, 2026
d956b5d
chore(qobuz): Change provider ordering
Lioncat6 Apr 3, 2026
3781ecb
chore(qobuz): Alphabetize 'qobuz' usage
Lioncat6 Apr 5, 2026
9c09a1a
chore(qobuz): Add mapping function for release types
Lioncat6 Apr 5, 2026
6f264c0
qobuz(chore): Switch `region` to `locale` for URLPattern parsing
Lioncat6 Apr 5, 2026
b37c01e
chore(qobuz): Fix some incosistencies
Lioncat6 Apr 5, 2026
62f8eda
chore(qobuz): Standardize release URL and assign correct types
Lioncat6 Apr 8, 2026
ac06e62
test(qobuz): Test for URL types
Lioncat6 Apr 8, 2026
a576283
fix(qobuz): Fix artist ID assignment
Lioncat6 Apr 16, 2026
bb5334f
feat(Qobuz): Support www.qobuz.com label URLs
kellnerd May 17, 2026
5fd1a46
feat(Qobuz): Extract country and language from URLs
kellnerd May 17, 2026
bea2c74
refactor(Qobuz): Make lookup by GTIN more DRY
kellnerd May 17, 2026
7b75de5
feat(Qobuz): Extract track artist from `track.performer` object
kellnerd May 17, 2026
a5077cc
feat(Qobuz): Parse `track.performers` string for additional track art…
kellnerd May 17, 2026
a4c2859
fix(Qobuz): Catch 404 errors and improve error message
kellnerd May 17, 2026
b901643
feat(Qobuz): Prefer more reliable, localized www URL if we know it
kellnerd May 17, 2026
a323586
feat(Qobuz): Derive missing language from region
kellnerd May 17, 2026
8a205db
feat(Qobuz): Use valid region input as fallback to construct www URLs
kellnerd May 25, 2026
0b99529
fix(Qobuz): Prevent creation of invalid localized track URLs
kellnerd May 25, 2026
298e0c9
feat(Qobuz): Prefer localized label URLs which are not behind a login
kellnerd May 25, 2026
7cb8ba1
chore(provider): Filter out undefined external ID properties
kellnerd May 25, 2026
216bd84
chore(Qobuz): Remove unnecessary user auth token header again
kellnerd May 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ PORT=
# Spotify app config. See https://developer.spotify.com/documentation/web-api
HARMONY_SPOTIFY_CLIENT_ID=
HARMONY_SPOTIFY_CLIENT_SECRET=

# Tidal app config. See https://developer.tidal.com/reference/web-api
HARMONY_TIDAL_CLIENT_ID=
HARMONY_TIDAL_CLIENT_SECRET=

# Qobuz app config.
HARMONY_QOBUZ_APP_ID=
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
"nums",
"preact",
"preorder",
"Qobuz",
"runtimes",
"secondhandsongs",
"smartradio",
Expand Down
11 changes: 11 additions & 0 deletions harmonizer/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ export interface EntityId {
* Only used by providers which have region-specific API endpoints or pages.
*/
region?: CountryCode;
/**
* Language of the entity page or release metadata.
*
* Only used by providers which have language-specific API endpoints or pages.
*/
language?: LanguageCode;
/** Preserved slug from the original entity URL. */
slug?: string;
}
Expand Down Expand Up @@ -154,6 +160,9 @@ export type Language = {
/** ISO 3166-1 alpha-2 two letter country code (upper case). */
export type CountryCode = string;

/** ISO 639-1 two letter country code (lower case). */
export type LanguageCode = string;

/** Release lookup options. */
export type ReleaseOptions = Partial<{
withSeparateMedia: boolean;
Expand Down Expand Up @@ -184,6 +193,8 @@ export type ReleaseLookupParameters = {
value: string;
/** Release region which was specified with the lookup method. */
region?: CountryCode;
/** Release language which was specified with the lookup method. */
language?: LanguageCode;
};

/**
Expand Down
Loading
Loading