55
66const fs = require ( 'fs' ) ;
77const log = require ( '../helpers/lager.js' ) ;
8- const config = require ( '../helpers/configLoader.js' ) . getOrInit ( 'config.js' ) ;
8+ const cl = require ( '../helpers/configLoader.js' ) ;
9+ const config = cl . getOrInit ( 'config.js' ) ;
910const axios = require ( 'axios' ) ;
1011const yt = require ( "ytsr" ) ;
1112const path = require ( "path" ) ;
1213
14+ let staticOverridesFetcher = new ( require ( './staticOverridesFetcher.js' ) ) ( cl . getOrInit ( 'staticoverrides.js' ) ) ;
1315let musichoardersFetcher = new ( require ( './musichoardersFetcher.js' ) ) ( config . rpc . persistentMusicHoardersCache ) ;
1416
1517// These functions, 'fetchers', provide uniform inteface for simple access to the APIs
@@ -18,6 +20,12 @@ let musichoardersFetcher = new (require('./musichoardersFetcher.js'))(config.rpc
1820// In order to be as simple as possible, the functions may throw exceptions or not return anything.
1921// They are expected to be called through the `fetchSafely()` wrapper.
2022const fetchers = {
23+ "staticoverrides" : async ( metadata ) => {
24+ return staticOverridesFetcher . fetch ( metadata ) ;
25+ } ,
26+ "musichoarders" : async ( metadata ) => {
27+ return musichoardersFetcher . fetch ( "musichoarders" , metadata ) ;
28+ } ,
2129 "apple" : async ( metadata ) => { // Doesn't rely on MusicHoarders, keep it that way, just in case
2230 if ( ( metadata . ALBUMARTIST || metadata . artist ) && metadata . title )
2331 {
@@ -31,8 +39,9 @@ const fetchers = {
3139 if ( result . data . resultCount > 0 && result . data . results [ 0 ] !== undefined )
3240 {
3341 return {
34- fetchedFrom : "Apple Music" ,
42+ artworkFrom : "Apple Music" ,
3543 artworkUrl : result . data . results [ 0 ] . artworkUrl100 ,
44+ joinFrom : "Apple Music" ,
3645 joinUrl : result . data . results [ 0 ] . trackViewUrl
3746 } ;
3847 }
@@ -44,9 +53,6 @@ const fetchers = {
4453 "deezer" : async ( metadata ) => {
4554 return musichoardersFetcher . fetch ( "deezer" , metadata ) ;
4655 } ,
47- "musichoarders" : async ( metadata ) => {
48- return musichoardersFetcher . fetch ( "musichoarders" , metadata ) ;
49- } ,
5056 "qobuz" : async ( metadata ) => {
5157 return musichoardersFetcher . fetch ( "qobuz" , metadata ) ;
5258 } ,
@@ -64,8 +70,9 @@ const fetchers = {
6470 if ( result . items . length > 0 )
6571 {
6672 return {
67- fetchedFrom : "Youtube" ,
73+ artworkFrom : undefined ,
6874 artworkUrl : undefined ,
75+ joinFrom : "Youtube" ,
6976 joinUrl : result . items [ 0 ] . url
7077 } ;
7178 }
@@ -76,7 +83,7 @@ const fetchers = {
7683 * Safe wrapper for calling a fetcher in try-catch block
7784 * @param {string } fetcherName name of the fetcher to use
7885 * @param {Object } metadata VLC metadata
79- * @returns {!{fetchedFrom: string, artworkUrl: string, joinUrl: string} }
86+ * @returns {!{artworkFrom: ? string, artworkUrl: ? string, joinFrom: ?string, joinUrl: ? string} }
8087 */
8188async function fetchSafely ( fetcherName , metadata )
8289{
@@ -100,19 +107,19 @@ async function fetchSafely(fetcherName, metadata)
100107 * @param {string } preferredArtworkProvider name of preferred artwork fetcher
101108 * @param {string } preferredJoinProvider name of preferred join fetcher
102109 * @param {Object } metadata VLC metadata
103- * @returns {!{artworkUrl: string, artworkFrom: string, joinUrl: string, joinFrom: string} }
110+ * @returns {!{artworkFrom: ? string, artworkUrl: ? string, joinFrom: ? string, joinUrl: ? string} }
104111 */
105112async function combinedFetch ( preferredArtworkProvider , preferredJoinProvider , metadata )
106113{
107- let artworkUrl , artworkFrom , joinUrl , joinFrom ;
114+ let artworkFrom , artworkUrl , joinFrom , joinUrl ;
108115 let results = [ ] ;
109116
110117 // First try fetching artwork URL using preferred provider
111118 results [ preferredArtworkProvider ] = await fetchSafely ( preferredArtworkProvider , metadata ) ;
112119 if ( results [ preferredArtworkProvider ] . artworkUrl )
113120 {
121+ artworkFrom = results [ preferredArtworkProvider ] . artworkFrom ;
114122 artworkUrl = results [ preferredArtworkProvider ] . artworkUrl ;
115- artworkFrom = results [ preferredArtworkProvider ] . fetchedFrom ;
116123 }
117124
118125 // Next try fetching join URL from preferred provider
@@ -123,20 +130,20 @@ async function combinedFetch(preferredArtworkProvider, preferredJoinProvider, me
123130 // Set it separately, in case both preferred providers are the same
124131 if ( results [ preferredJoinProvider ] . joinUrl )
125132 {
133+ joinFrom = results [ preferredJoinProvider ] . joinFrom ;
126134 joinUrl = results [ preferredJoinProvider ] . joinUrl ;
127- joinFrom = results [ preferredJoinProvider ] . fetchedFrom ;
128135 }
129136
130137 // Try using preferred join provider as a backup artwork provider and vice versa
131138 if ( ! artworkUrl && results [ preferredJoinProvider ] . artworkUrl )
132139 {
140+ artworkFrom = results [ preferredJoinProvider ] . artworkFrom ;
133141 artworkUrl = results [ preferredJoinProvider ] . artworkUrl ;
134- artworkFrom = results [ preferredJoinProvider ] . fetchedFrom ;
135142 }
136143 if ( ! joinUrl && results [ preferredArtworkProvider ] . joinUrl )
137144 {
145+ joinFrom = results [ preferredArtworkProvider ] . joinFrom ;
138146 joinUrl = results [ preferredArtworkProvider ] . joinUrl ;
139- joinFrom = results [ preferredArtworkProvider ] . fetchedFrom ;
140147 }
141148
142149 // In case either still isn't set, iterate all other providers
@@ -148,13 +155,13 @@ async function combinedFetch(preferredArtworkProvider, preferredJoinProvider, me
148155 results [ availableProviderNames [ ii ] ] = await fetchSafely ( availableProviderNames [ ii ] , metadata ) ;
149156 if ( ! artworkUrl && results [ availableProviderNames [ ii ] ] . artworkUrl )
150157 {
158+ artworkFrom = results [ availableProviderNames [ ii ] ] . artworkFrom ;
151159 artworkUrl = results [ availableProviderNames [ ii ] ] . artworkUrl ;
152- artworkFrom = results [ availableProviderNames [ ii ] ] . fetchedFrom ;
153160 }
154161 if ( ! joinUrl && results [ availableProviderNames [ ii ] ] . joinUrl )
155162 {
163+ joinFrom = results [ availableProviderNames [ ii ] ] . joinFrom ;
156164 joinUrl = results [ availableProviderNames [ ii ] ] . joinUrl ;
157- joinFrom = results [ availableProviderNames [ ii ] ] . fetchedFrom ;
158165 }
159166 }
160167 }
0 commit comments