music-assistant-server

88 KBAMBR
test_parsers.ambr
88 KB3,284 lines • plaintext
1# serializer version: 1
2# name: test_parse_albums[no-artist.album]
3  dict({
4    'album_type': 'unknown',
5    'artists': list([
6      dict({
7        'date_added': None,
8        'external_ids': list([
9        ]),
10        'favorite': False,
11        'is_playable': True,
12        'item_id': 'fake_artist_unknown',
13        'media_type': 'artist',
14        'metadata': dict({
15          'chapters': None,
16          'copyright': None,
17          'description': None,
18          'explicit': None,
19          'genres': None,
20          'grouping': None,
21          'images': None,
22          'label': None,
23          'languages': None,
24          'last_refresh': None,
25          'links': None,
26          'lrc_lyrics': None,
27          'lyrics': None,
28          'mood': None,
29          'performers': None,
30          'popularity': None,
31          'preview': None,
32          'release_date': None,
33          'review': None,
34          'style': None,
35        }),
36        'name': '[unknown]',
37        'position': None,
38        'provider': 'xx-instance-id-xx',
39        'provider_mappings': list([
40          dict({
41            'audio_format': dict({
42              'bit_depth': 16,
43              'bit_rate': 0,
44              'channels': 2,
45              'codec_type': '?',
46              'content_type': '?',
47              'output_format_str': '?',
48              'sample_rate': 44100,
49            }),
50            'available': True,
51            'details': None,
52            'in_library': None,
53            'is_unique': None,
54            'item_id': 'fake_artist_unknown',
55            'provider_domain': 'opensubsonic',
56            'provider_instance': 'xx-instance-id-xx',
57            'url': None,
58          }),
59        ]),
60        'sort_name': 'unknown]',
61        'translation_key': None,
62        'uri': 'xx-instance-id-xx://artist/fake_artist_unknown',
63        'version': '',
64      }),
65    ]),
66    'date_added': None,
67    'external_ids': list([
68      list([
69        'musicbrainz_albumid',
70        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
71      ]),
72    ]),
73    'favorite': True,
74    'is_playable': True,
75    'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
76    'media_type': 'album',
77    'metadata': dict({
78      'chapters': None,
79      'copyright': None,
80      'description': None,
81      'explicit': None,
82      'genres': list([
83        'East coast',
84        'Hip-Hop',
85      ]),
86      'grouping': None,
87      'images': list([
88        dict({
89          'path': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
90          'provider': 'xx-instance-id-xx',
91          'remotely_accessible': False,
92          'type': 'thumb',
93        }),
94      ]),
95      'label': None,
96      'languages': None,
97      'last_refresh': None,
98      'links': None,
99      'lrc_lyrics': None,
100      'lyrics': None,
101      'mood': 'slow',
102      'performers': None,
103      'popularity': None,
104      'preview': None,
105      'release_date': None,
106      'review': None,
107      'style': None,
108    }),
109    'name': '8-bit lagerfeuer',
110    'position': None,
111    'provider': 'opensubsonic',
112    'provider_mappings': list([
113      dict({
114        'audio_format': dict({
115          'bit_depth': 16,
116          'bit_rate': 0,
117          'channels': 2,
118          'codec_type': '?',
119          'content_type': '?',
120          'output_format_str': '?',
121          'sample_rate': 44100,
122        }),
123        'available': True,
124        'details': None,
125        'in_library': None,
126        'is_unique': None,
127        'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
128        'provider_domain': 'opensubsonic',
129        'provider_instance': 'xx-instance-id-xx',
130        'url': None,
131      }),
132    ]),
133    'sort_name': 'lagerfeuer (8-bit)',
134    'translation_key': None,
135    'uri': 'opensubsonic://album/ad0f112b6dcf83de5e9cae85d07f0d35',
136    'version': '',
137    'year': 2007,
138  })
139# ---
140# name: test_parse_albums[no-artist.album].1
141  dict({
142    'album_type': 'unknown',
143    'artists': list([
144      dict({
145        'date_added': None,
146        'external_ids': list([
147        ]),
148        'favorite': False,
149        'is_playable': True,
150        'item_id': 'fake_artist_unknown',
151        'media_type': 'artist',
152        'metadata': dict({
153          'chapters': None,
154          'copyright': None,
155          'description': None,
156          'explicit': None,
157          'genres': None,
158          'grouping': None,
159          'images': None,
160          'label': None,
161          'languages': None,
162          'last_refresh': None,
163          'links': None,
164          'lrc_lyrics': None,
165          'lyrics': None,
166          'mood': None,
167          'performers': None,
168          'popularity': None,
169          'preview': None,
170          'release_date': None,
171          'review': None,
172          'style': None,
173        }),
174        'name': '[unknown]',
175        'position': None,
176        'provider': 'xx-instance-id-xx',
177        'provider_mappings': list([
178          dict({
179            'audio_format': dict({
180              'bit_depth': 16,
181              'bit_rate': 0,
182              'channels': 2,
183              'codec_type': '?',
184              'content_type': '?',
185              'output_format_str': '?',
186              'sample_rate': 44100,
187            }),
188            'available': True,
189            'details': None,
190            'in_library': None,
191            'is_unique': None,
192            'item_id': 'fake_artist_unknown',
193            'provider_domain': 'opensubsonic',
194            'provider_instance': 'xx-instance-id-xx',
195            'url': None,
196          }),
197        ]),
198        'sort_name': 'unknown]',
199        'translation_key': None,
200        'uri': 'xx-instance-id-xx://artist/fake_artist_unknown',
201        'version': '',
202      }),
203    ]),
204    'date_added': None,
205    'external_ids': list([
206      list([
207        'musicbrainz_albumid',
208        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
209      ]),
210    ]),
211    'favorite': True,
212    'is_playable': True,
213    'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
214    'media_type': 'album',
215    'metadata': dict({
216      'chapters': None,
217      'copyright': None,
218      'description': 'Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fit’s needs and wishes, we think the chances aren’t bad that you’ll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: "Really love this music." Velanche / XLR8R, UK: "Awesome job he\'s done... overall production is dope." Kwesi / BBE Music, UK: "Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT',
219      'explicit': None,
220      'genres': list([
221        'East coast',
222        'Hip-Hop',
223      ]),
224      'grouping': None,
225      'images': list([
226        dict({
227          'path': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
228          'provider': 'xx-instance-id-xx',
229          'remotely_accessible': False,
230          'type': 'thumb',
231        }),
232        dict({
233          'path': 'http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg',
234          'provider': 'xx-instance-id-xx',
235          'remotely_accessible': True,
236          'type': 'thumb',
237        }),
238      ]),
239      'label': None,
240      'languages': None,
241      'last_refresh': None,
242      'links': None,
243      'lrc_lyrics': None,
244      'lyrics': None,
245      'mood': 'slow',
246      'performers': None,
247      'popularity': None,
248      'preview': None,
249      'release_date': None,
250      'review': None,
251      'style': None,
252    }),
253    'name': '8-bit lagerfeuer',
254    'position': None,
255    'provider': 'opensubsonic',
256    'provider_mappings': list([
257      dict({
258        'audio_format': dict({
259          'bit_depth': 16,
260          'bit_rate': 0,
261          'channels': 2,
262          'codec_type': '?',
263          'content_type': '?',
264          'output_format_str': '?',
265          'sample_rate': 44100,
266        }),
267        'available': True,
268        'details': None,
269        'in_library': None,
270        'is_unique': None,
271        'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
272        'provider_domain': 'opensubsonic',
273        'provider_instance': 'xx-instance-id-xx',
274        'url': None,
275      }),
276    ]),
277    'sort_name': 'lagerfeuer (8-bit)',
278    'translation_key': None,
279    'uri': 'opensubsonic://album/ad0f112b6dcf83de5e9cae85d07f0d35',
280    'version': '',
281    'year': 2007,
282  })
283# ---
284# name: test_parse_albums[no-version.album]
285  dict({
286    'album_type': 'unknown',
287    'artists': list([
288      dict({
289        'available': True,
290        'external_ids': list([
291        ]),
292        'image': None,
293        'is_playable': True,
294        'item_id': '91c3901ac465b9efc439e4be4270c2b6',
295        'media_type': 'artist',
296        'name': 'pornophonique',
297        'provider': 'xx-instance-id-xx',
298        'sort_name': 'pornophonique',
299        'translation_key': None,
300        'uri': 'xx-instance-id-xx://artist/91c3901ac465b9efc439e4be4270c2b6',
301        'version': '',
302        'year': None,
303      }),
304      dict({
305        'available': True,
306        'external_ids': list([
307        ]),
308        'image': None,
309        'is_playable': True,
310        'item_id': 'ar-1',
311        'media_type': 'artist',
312        'name': 'Artist 1',
313        'provider': 'xx-instance-id-xx',
314        'sort_name': 'artist 1',
315        'translation_key': None,
316        'uri': 'xx-instance-id-xx://artist/ar-1',
317        'version': '',
318        'year': None,
319      }),
320      dict({
321        'available': True,
322        'external_ids': list([
323        ]),
324        'image': None,
325        'is_playable': True,
326        'item_id': 'ar-2',
327        'media_type': 'artist',
328        'name': 'Artist 2',
329        'provider': 'xx-instance-id-xx',
330        'sort_name': 'artist 2',
331        'translation_key': None,
332        'uri': 'xx-instance-id-xx://artist/ar-2',
333        'version': '',
334        'year': None,
335      }),
336    ]),
337    'date_added': None,
338    'external_ids': list([
339      list([
340        'musicbrainz_albumid',
341        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
342      ]),
343    ]),
344    'favorite': True,
345    'is_playable': True,
346    'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
347    'media_type': 'album',
348    'metadata': dict({
349      'chapters': None,
350      'copyright': None,
351      'description': None,
352      'explicit': None,
353      'genres': list([
354        'East coast',
355        'Hip-Hop',
356      ]),
357      'grouping': None,
358      'images': list([
359        dict({
360          'path': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
361          'provider': 'xx-instance-id-xx',
362          'remotely_accessible': False,
363          'type': 'thumb',
364        }),
365      ]),
366      'label': None,
367      'languages': None,
368      'last_refresh': None,
369      'links': None,
370      'lrc_lyrics': None,
371      'lyrics': None,
372      'mood': 'slow',
373      'performers': None,
374      'popularity': None,
375      'preview': None,
376      'release_date': None,
377      'review': None,
378      'style': None,
379    }),
380    'name': '8-bit lagerfeuer',
381    'position': None,
382    'provider': 'opensubsonic',
383    'provider_mappings': list([
384      dict({
385        'audio_format': dict({
386          'bit_depth': 16,
387          'bit_rate': 0,
388          'channels': 2,
389          'codec_type': '?',
390          'content_type': '?',
391          'output_format_str': '?',
392          'sample_rate': 44100,
393        }),
394        'available': True,
395        'details': None,
396        'in_library': None,
397        'is_unique': None,
398        'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
399        'provider_domain': 'opensubsonic',
400        'provider_instance': 'xx-instance-id-xx',
401        'url': None,
402      }),
403    ]),
404    'sort_name': 'lagerfeuer (8-bit)',
405    'translation_key': None,
406    'uri': 'opensubsonic://album/ad0f112b6dcf83de5e9cae85d07f0d35',
407    'version': '',
408    'year': 2007,
409  })
410# ---
411# name: test_parse_albums[no-version.album].1
412  dict({
413    'album_type': 'unknown',
414    'artists': list([
415      dict({
416        'available': True,
417        'external_ids': list([
418        ]),
419        'image': None,
420        'is_playable': True,
421        'item_id': '91c3901ac465b9efc439e4be4270c2b6',
422        'media_type': 'artist',
423        'name': 'pornophonique',
424        'provider': 'xx-instance-id-xx',
425        'sort_name': 'pornophonique',
426        'translation_key': None,
427        'uri': 'xx-instance-id-xx://artist/91c3901ac465b9efc439e4be4270c2b6',
428        'version': '',
429        'year': None,
430      }),
431      dict({
432        'available': True,
433        'external_ids': list([
434        ]),
435        'image': None,
436        'is_playable': True,
437        'item_id': 'ar-1',
438        'media_type': 'artist',
439        'name': 'Artist 1',
440        'provider': 'xx-instance-id-xx',
441        'sort_name': 'artist 1',
442        'translation_key': None,
443        'uri': 'xx-instance-id-xx://artist/ar-1',
444        'version': '',
445        'year': None,
446      }),
447      dict({
448        'available': True,
449        'external_ids': list([
450        ]),
451        'image': None,
452        'is_playable': True,
453        'item_id': 'ar-2',
454        'media_type': 'artist',
455        'name': 'Artist 2',
456        'provider': 'xx-instance-id-xx',
457        'sort_name': 'artist 2',
458        'translation_key': None,
459        'uri': 'xx-instance-id-xx://artist/ar-2',
460        'version': '',
461        'year': None,
462      }),
463    ]),
464    'date_added': None,
465    'external_ids': list([
466      list([
467        'musicbrainz_albumid',
468        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
469      ]),
470    ]),
471    'favorite': True,
472    'is_playable': True,
473    'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
474    'media_type': 'album',
475    'metadata': dict({
476      'chapters': None,
477      'copyright': None,
478      'description': 'Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fit’s needs and wishes, we think the chances aren’t bad that you’ll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: "Really love this music." Velanche / XLR8R, UK: "Awesome job he\'s done... overall production is dope." Kwesi / BBE Music, UK: "Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT',
479      'explicit': None,
480      'genres': list([
481        'East coast',
482        'Hip-Hop',
483      ]),
484      'grouping': None,
485      'images': list([
486        dict({
487          'path': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
488          'provider': 'xx-instance-id-xx',
489          'remotely_accessible': False,
490          'type': 'thumb',
491        }),
492        dict({
493          'path': 'http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg',
494          'provider': 'xx-instance-id-xx',
495          'remotely_accessible': True,
496          'type': 'thumb',
497        }),
498      ]),
499      'label': None,
500      'languages': None,
501      'last_refresh': None,
502      'links': None,
503      'lrc_lyrics': None,
504      'lyrics': None,
505      'mood': 'slow',
506      'performers': None,
507      'popularity': None,
508      'preview': None,
509      'release_date': None,
510      'review': None,
511      'style': None,
512    }),
513    'name': '8-bit lagerfeuer',
514    'position': None,
515    'provider': 'opensubsonic',
516    'provider_mappings': list([
517      dict({
518        'audio_format': dict({
519          'bit_depth': 16,
520          'bit_rate': 0,
521          'channels': 2,
522          'codec_type': '?',
523          'content_type': '?',
524          'output_format_str': '?',
525          'sample_rate': 44100,
526        }),
527        'available': True,
528        'details': None,
529        'in_library': None,
530        'is_unique': None,
531        'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
532        'provider_domain': 'opensubsonic',
533        'provider_instance': 'xx-instance-id-xx',
534        'url': None,
535      }),
536    ]),
537    'sort_name': 'lagerfeuer (8-bit)',
538    'translation_key': None,
539    'uri': 'opensubsonic://album/ad0f112b6dcf83de5e9cae85d07f0d35',
540    'version': '',
541    'year': 2007,
542  })
543# ---
544# name: test_parse_albums[spec.album]
545  dict({
546    'album_type': 'unknown',
547    'artists': list([
548      dict({
549        'available': True,
550        'external_ids': list([
551        ]),
552        'image': None,
553        'is_playable': True,
554        'item_id': '91c3901ac465b9efc439e4be4270c2b6',
555        'media_type': 'artist',
556        'name': 'pornophonique',
557        'provider': 'xx-instance-id-xx',
558        'sort_name': 'pornophonique',
559        'translation_key': None,
560        'uri': 'xx-instance-id-xx://artist/91c3901ac465b9efc439e4be4270c2b6',
561        'version': '',
562        'year': None,
563      }),
564      dict({
565        'available': True,
566        'external_ids': list([
567        ]),
568        'image': None,
569        'is_playable': True,
570        'item_id': 'ar-1',
571        'media_type': 'artist',
572        'name': 'Artist 1',
573        'provider': 'xx-instance-id-xx',
574        'sort_name': 'artist 1',
575        'translation_key': None,
576        'uri': 'xx-instance-id-xx://artist/ar-1',
577        'version': '',
578        'year': None,
579      }),
580      dict({
581        'available': True,
582        'external_ids': list([
583        ]),
584        'image': None,
585        'is_playable': True,
586        'item_id': 'ar-2',
587        'media_type': 'artist',
588        'name': 'Artist 2',
589        'provider': 'xx-instance-id-xx',
590        'sort_name': 'artist 2',
591        'translation_key': None,
592        'uri': 'xx-instance-id-xx://artist/ar-2',
593        'version': '',
594        'year': None,
595      }),
596    ]),
597    'date_added': None,
598    'external_ids': list([
599      list([
600        'musicbrainz_albumid',
601        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
602      ]),
603    ]),
604    'favorite': True,
605    'is_playable': True,
606    'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
607    'media_type': 'album',
608    'metadata': dict({
609      'chapters': None,
610      'copyright': None,
611      'description': None,
612      'explicit': None,
613      'genres': list([
614        'East coast',
615        'Hip-Hop',
616      ]),
617      'grouping': None,
618      'images': list([
619        dict({
620          'path': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
621          'provider': 'xx-instance-id-xx',
622          'remotely_accessible': False,
623          'type': 'thumb',
624        }),
625      ]),
626      'label': None,
627      'languages': None,
628      'last_refresh': None,
629      'links': None,
630      'lrc_lyrics': None,
631      'lyrics': None,
632      'mood': 'slow',
633      'performers': None,
634      'popularity': None,
635      'preview': None,
636      'release_date': None,
637      'review': None,
638      'style': None,
639    }),
640    'name': '8-bit lagerfeuer',
641    'position': None,
642    'provider': 'opensubsonic',
643    'provider_mappings': list([
644      dict({
645        'audio_format': dict({
646          'bit_depth': 16,
647          'bit_rate': 0,
648          'channels': 2,
649          'codec_type': '?',
650          'content_type': '?',
651          'output_format_str': '?',
652          'sample_rate': 44100,
653        }),
654        'available': True,
655        'details': None,
656        'in_library': None,
657        'is_unique': None,
658        'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
659        'provider_domain': 'opensubsonic',
660        'provider_instance': 'xx-instance-id-xx',
661        'url': None,
662      }),
663    ]),
664    'sort_name': 'lagerfeuer (8-bit)',
665    'translation_key': None,
666    'uri': 'opensubsonic://album/ad0f112b6dcf83de5e9cae85d07f0d35',
667    'version': 'Deluxe Edition',
668    'year': 2007,
669  })
670# ---
671# name: test_parse_albums[spec.album].1
672  dict({
673    'album_type': 'unknown',
674    'artists': list([
675      dict({
676        'available': True,
677        'external_ids': list([
678        ]),
679        'image': None,
680        'is_playable': True,
681        'item_id': '91c3901ac465b9efc439e4be4270c2b6',
682        'media_type': 'artist',
683        'name': 'pornophonique',
684        'provider': 'xx-instance-id-xx',
685        'sort_name': 'pornophonique',
686        'translation_key': None,
687        'uri': 'xx-instance-id-xx://artist/91c3901ac465b9efc439e4be4270c2b6',
688        'version': '',
689        'year': None,
690      }),
691      dict({
692        'available': True,
693        'external_ids': list([
694        ]),
695        'image': None,
696        'is_playable': True,
697        'item_id': 'ar-1',
698        'media_type': 'artist',
699        'name': 'Artist 1',
700        'provider': 'xx-instance-id-xx',
701        'sort_name': 'artist 1',
702        'translation_key': None,
703        'uri': 'xx-instance-id-xx://artist/ar-1',
704        'version': '',
705        'year': None,
706      }),
707      dict({
708        'available': True,
709        'external_ids': list([
710        ]),
711        'image': None,
712        'is_playable': True,
713        'item_id': 'ar-2',
714        'media_type': 'artist',
715        'name': 'Artist 2',
716        'provider': 'xx-instance-id-xx',
717        'sort_name': 'artist 2',
718        'translation_key': None,
719        'uri': 'xx-instance-id-xx://artist/ar-2',
720        'version': '',
721        'year': None,
722      }),
723    ]),
724    'date_added': None,
725    'external_ids': list([
726      list([
727        'musicbrainz_albumid',
728        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
729      ]),
730    ]),
731    'favorite': True,
732    'is_playable': True,
733    'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
734    'media_type': 'album',
735    'metadata': dict({
736      'chapters': None,
737      'copyright': None,
738      'description': 'Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fit’s needs and wishes, we think the chances aren’t bad that you’ll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: "Really love this music." Velanche / XLR8R, UK: "Awesome job he\'s done... overall production is dope." Kwesi / BBE Music, UK: "Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT',
739      'explicit': None,
740      'genres': list([
741        'East coast',
742        'Hip-Hop',
743      ]),
744      'grouping': None,
745      'images': list([
746        dict({
747          'path': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
748          'provider': 'xx-instance-id-xx',
749          'remotely_accessible': False,
750          'type': 'thumb',
751        }),
752        dict({
753          'path': 'http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg',
754          'provider': 'xx-instance-id-xx',
755          'remotely_accessible': True,
756          'type': 'thumb',
757        }),
758      ]),
759      'label': None,
760      'languages': None,
761      'last_refresh': None,
762      'links': None,
763      'lrc_lyrics': None,
764      'lyrics': None,
765      'mood': 'slow',
766      'performers': None,
767      'popularity': None,
768      'preview': None,
769      'release_date': None,
770      'review': None,
771      'style': None,
772    }),
773    'name': '8-bit lagerfeuer',
774    'position': None,
775    'provider': 'opensubsonic',
776    'provider_mappings': list([
777      dict({
778        'audio_format': dict({
779          'bit_depth': 16,
780          'bit_rate': 0,
781          'channels': 2,
782          'codec_type': '?',
783          'content_type': '?',
784          'output_format_str': '?',
785          'sample_rate': 44100,
786        }),
787        'available': True,
788        'details': None,
789        'in_library': None,
790        'is_unique': None,
791        'item_id': 'ad0f112b6dcf83de5e9cae85d07f0d35',
792        'provider_domain': 'opensubsonic',
793        'provider_instance': 'xx-instance-id-xx',
794        'url': None,
795      }),
796    ]),
797    'sort_name': 'lagerfeuer (8-bit)',
798    'translation_key': None,
799    'uri': 'opensubsonic://album/ad0f112b6dcf83de5e9cae85d07f0d35',
800    'version': 'Deluxe Edition',
801    'year': 2007,
802  })
803# ---
804# name: test_parse_artists[no-sort-name.artist]
805  dict({
806    'date_added': None,
807    'external_ids': list([
808      list([
809        'musicbrainz_artistid',
810        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
811      ]),
812    ]),
813    'favorite': True,
814    'is_playable': True,
815    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
816    'media_type': 'artist',
817    'metadata': dict({
818      'chapters': None,
819      'copyright': None,
820      'description': None,
821      'explicit': None,
822      'genres': None,
823      'grouping': None,
824      'images': list([
825        dict({
826          'path': 'https://demo.org/image.jpg',
827          'provider': 'xx-instance-id-xx',
828          'remotely_accessible': True,
829          'type': 'thumb',
830        }),
831        dict({
832          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
833          'provider': 'xx-instance-id-xx',
834          'remotely_accessible': False,
835          'type': 'thumb',
836        }),
837      ]),
838      'label': None,
839      'languages': None,
840      'last_refresh': None,
841      'links': None,
842      'lrc_lyrics': None,
843      'lyrics': None,
844      'mood': None,
845      'performers': None,
846      'popularity': None,
847      'preview': None,
848      'release_date': None,
849      'review': None,
850      'style': None,
851    }),
852    'name': '2 Mello',
853    'position': None,
854    'provider': 'opensubsonic',
855    'provider_mappings': list([
856      dict({
857        'audio_format': dict({
858          'bit_depth': 16,
859          'bit_rate': 0,
860          'channels': 2,
861          'codec_type': '?',
862          'content_type': '?',
863          'output_format_str': '?',
864          'sample_rate': 44100,
865        }),
866        'available': True,
867        'details': None,
868        'in_library': None,
869        'is_unique': None,
870        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
871        'provider_domain': 'opensubsonic',
872        'provider_instance': 'xx-instance-id-xx',
873        'url': None,
874      }),
875    ]),
876    'sort_name': '2 mello',
877    'translation_key': None,
878    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
879    'version': '',
880  })
881# ---
882# name: test_parse_artists[no-sort-name.artist].1
883  dict({
884    'date_added': None,
885    'external_ids': list([
886      list([
887        'musicbrainz_artistid',
888        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
889      ]),
890    ]),
891    'favorite': True,
892    'is_playable': True,
893    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
894    'media_type': 'artist',
895    'metadata': dict({
896      'chapters': None,
897      'copyright': None,
898      'description': 'Empty biography',
899      'explicit': None,
900      'genres': None,
901      'grouping': None,
902      'images': list([
903        dict({
904          'path': 'https://demo.org/image.jpg',
905          'provider': 'xx-instance-id-xx',
906          'remotely_accessible': True,
907          'type': 'thumb',
908        }),
909        dict({
910          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
911          'provider': 'xx-instance-id-xx',
912          'remotely_accessible': False,
913          'type': 'thumb',
914        }),
915        dict({
916          'path': 'http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg',
917          'provider': 'xx-instance-id-xx',
918          'remotely_accessible': True,
919          'type': 'thumb',
920        }),
921      ]),
922      'label': None,
923      'languages': None,
924      'last_refresh': None,
925      'links': None,
926      'lrc_lyrics': None,
927      'lyrics': None,
928      'mood': None,
929      'performers': None,
930      'popularity': None,
931      'preview': None,
932      'release_date': None,
933      'review': None,
934      'style': None,
935    }),
936    'name': '2 Mello',
937    'position': None,
938    'provider': 'opensubsonic',
939    'provider_mappings': list([
940      dict({
941        'audio_format': dict({
942          'bit_depth': 16,
943          'bit_rate': 0,
944          'channels': 2,
945          'codec_type': '?',
946          'content_type': '?',
947          'output_format_str': '?',
948          'sample_rate': 44100,
949        }),
950        'available': True,
951        'details': None,
952        'in_library': None,
953        'is_unique': None,
954        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
955        'provider_domain': 'opensubsonic',
956        'provider_instance': 'xx-instance-id-xx',
957        'url': None,
958      }),
959    ]),
960    'sort_name': '2 mello',
961    'translation_key': None,
962    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
963    'version': '',
964  })
965# ---
966# name: test_parse_artists[spec-artistid3.artist]
967  dict({
968    'date_added': None,
969    'external_ids': list([
970      list([
971        'musicbrainz_artistid',
972        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
973      ]),
974    ]),
975    'favorite': True,
976    'is_playable': True,
977    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
978    'media_type': 'artist',
979    'metadata': dict({
980      'chapters': None,
981      'copyright': None,
982      'description': None,
983      'explicit': None,
984      'genres': None,
985      'grouping': None,
986      'images': list([
987        dict({
988          'path': 'https://demo.org/image.jpg',
989          'provider': 'xx-instance-id-xx',
990          'remotely_accessible': True,
991          'type': 'thumb',
992        }),
993        dict({
994          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
995          'provider': 'xx-instance-id-xx',
996          'remotely_accessible': False,
997          'type': 'thumb',
998        }),
999      ]),
1000      'label': None,
1001      'languages': None,
1002      'last_refresh': None,
1003      'links': None,
1004      'lrc_lyrics': None,
1005      'lyrics': None,
1006      'mood': None,
1007      'performers': None,
1008      'popularity': None,
1009      'preview': None,
1010      'release_date': None,
1011      'review': None,
1012      'style': None,
1013    }),
1014    'name': '2 Mello',
1015    'position': None,
1016    'provider': 'opensubsonic',
1017    'provider_mappings': list([
1018      dict({
1019        'audio_format': dict({
1020          'bit_depth': 16,
1021          'bit_rate': 0,
1022          'channels': 2,
1023          'codec_type': '?',
1024          'content_type': '?',
1025          'output_format_str': '?',
1026          'sample_rate': 44100,
1027        }),
1028        'available': True,
1029        'details': None,
1030        'in_library': None,
1031        'is_unique': None,
1032        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
1033        'provider_domain': 'opensubsonic',
1034        'provider_instance': 'xx-instance-id-xx',
1035        'url': None,
1036      }),
1037    ]),
1038    'sort_name': 'Mello (2)',
1039    'translation_key': None,
1040    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
1041    'version': '',
1042  })
1043# ---
1044# name: test_parse_artists[spec-artistid3.artist].1
1045  dict({
1046    'date_added': None,
1047    'external_ids': list([
1048      list([
1049        'musicbrainz_artistid',
1050        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
1051      ]),
1052    ]),
1053    'favorite': True,
1054    'is_playable': True,
1055    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
1056    'media_type': 'artist',
1057    'metadata': dict({
1058      'chapters': None,
1059      'copyright': None,
1060      'description': 'Empty biography',
1061      'explicit': None,
1062      'genres': None,
1063      'grouping': None,
1064      'images': list([
1065        dict({
1066          'path': 'https://demo.org/image.jpg',
1067          'provider': 'xx-instance-id-xx',
1068          'remotely_accessible': True,
1069          'type': 'thumb',
1070        }),
1071        dict({
1072          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
1073          'provider': 'xx-instance-id-xx',
1074          'remotely_accessible': False,
1075          'type': 'thumb',
1076        }),
1077        dict({
1078          'path': 'http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg',
1079          'provider': 'xx-instance-id-xx',
1080          'remotely_accessible': True,
1081          'type': 'thumb',
1082        }),
1083      ]),
1084      'label': None,
1085      'languages': None,
1086      'last_refresh': None,
1087      'links': None,
1088      'lrc_lyrics': None,
1089      'lyrics': None,
1090      'mood': None,
1091      'performers': None,
1092      'popularity': None,
1093      'preview': None,
1094      'release_date': None,
1095      'review': None,
1096      'style': None,
1097    }),
1098    'name': '2 Mello',
1099    'position': None,
1100    'provider': 'opensubsonic',
1101    'provider_mappings': list([
1102      dict({
1103        'audio_format': dict({
1104          'bit_depth': 16,
1105          'bit_rate': 0,
1106          'channels': 2,
1107          'codec_type': '?',
1108          'content_type': '?',
1109          'output_format_str': '?',
1110          'sample_rate': 44100,
1111        }),
1112        'available': True,
1113        'details': None,
1114        'in_library': None,
1115        'is_unique': None,
1116        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
1117        'provider_domain': 'opensubsonic',
1118        'provider_instance': 'xx-instance-id-xx',
1119        'url': None,
1120      }),
1121    ]),
1122    'sort_name': 'Mello (2)',
1123    'translation_key': None,
1124    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
1125    'version': '',
1126  })
1127# ---
1128# name: test_parse_artists[spec-sample.artist]
1129  dict({
1130    'date_added': None,
1131    'external_ids': list([
1132    ]),
1133    'favorite': True,
1134    'is_playable': True,
1135    'item_id': '100000002',
1136    'media_type': 'artist',
1137    'metadata': dict({
1138      'chapters': None,
1139      'copyright': None,
1140      'description': None,
1141      'explicit': None,
1142      'genres': None,
1143      'grouping': None,
1144      'images': list([
1145        dict({
1146          'path': 'ar-100000002',
1147          'provider': 'xx-instance-id-xx',
1148          'remotely_accessible': False,
1149          'type': 'thumb',
1150        }),
1151      ]),
1152      'label': None,
1153      'languages': None,
1154      'last_refresh': None,
1155      'links': None,
1156      'lrc_lyrics': None,
1157      'lyrics': None,
1158      'mood': None,
1159      'performers': None,
1160      'popularity': None,
1161      'preview': None,
1162      'release_date': None,
1163      'review': None,
1164      'style': None,
1165    }),
1166    'name': 'Synthetic',
1167    'position': None,
1168    'provider': 'opensubsonic',
1169    'provider_mappings': list([
1170      dict({
1171        'audio_format': dict({
1172          'bit_depth': 16,
1173          'bit_rate': 0,
1174          'channels': 2,
1175          'codec_type': '?',
1176          'content_type': '?',
1177          'output_format_str': '?',
1178          'sample_rate': 44100,
1179        }),
1180        'available': True,
1181        'details': None,
1182        'in_library': None,
1183        'is_unique': None,
1184        'item_id': '100000002',
1185        'provider_domain': 'opensubsonic',
1186        'provider_instance': 'xx-instance-id-xx',
1187        'url': None,
1188      }),
1189    ]),
1190    'sort_name': 'synthetic',
1191    'translation_key': None,
1192    'uri': 'opensubsonic://artist/100000002',
1193    'version': '',
1194  })
1195# ---
1196# name: test_parse_artists[spec-sample.artist].1
1197  dict({
1198    'date_added': None,
1199    'external_ids': list([
1200    ]),
1201    'favorite': True,
1202    'is_playable': True,
1203    'item_id': '100000002',
1204    'media_type': 'artist',
1205    'metadata': dict({
1206      'chapters': None,
1207      'copyright': None,
1208      'description': 'Empty biography',
1209      'explicit': None,
1210      'genres': None,
1211      'grouping': None,
1212      'images': list([
1213        dict({
1214          'path': 'ar-100000002',
1215          'provider': 'xx-instance-id-xx',
1216          'remotely_accessible': False,
1217          'type': 'thumb',
1218        }),
1219        dict({
1220          'path': 'http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg',
1221          'provider': 'xx-instance-id-xx',
1222          'remotely_accessible': True,
1223          'type': 'thumb',
1224        }),
1225      ]),
1226      'label': None,
1227      'languages': None,
1228      'last_refresh': None,
1229      'links': None,
1230      'lrc_lyrics': None,
1231      'lyrics': None,
1232      'mood': None,
1233      'performers': None,
1234      'popularity': None,
1235      'preview': None,
1236      'release_date': None,
1237      'review': None,
1238      'style': None,
1239    }),
1240    'name': 'Synthetic',
1241    'position': None,
1242    'provider': 'opensubsonic',
1243    'provider_mappings': list([
1244      dict({
1245        'audio_format': dict({
1246          'bit_depth': 16,
1247          'bit_rate': 0,
1248          'channels': 2,
1249          'codec_type': '?',
1250          'content_type': '?',
1251          'output_format_str': '?',
1252          'sample_rate': 44100,
1253        }),
1254        'available': True,
1255        'details': None,
1256        'in_library': None,
1257        'is_unique': None,
1258        'item_id': '100000002',
1259        'provider_domain': 'opensubsonic',
1260        'provider_instance': 'xx-instance-id-xx',
1261        'url': None,
1262      }),
1263    ]),
1264    'sort_name': 'synthetic',
1265    'translation_key': None,
1266    'uri': 'opensubsonic://artist/100000002',
1267    'version': '',
1268  })
1269# ---
1270# name: test_parse_episode[gonic-sample.episode]
1271  dict({
1272    'date_added': None,
1273    'duration': 1878,
1274    'external_ids': list([
1275    ]),
1276    'favorite': False,
1277    'fully_played': None,
1278    'is_playable': True,
1279    'item_id': 'pd-5$!$pe-1860',
1280    'media_type': 'podcast_episode',
1281    'metadata': dict({
1282      'chapters': None,
1283      'copyright': None,
1284      'description': 'The history of The History of Rome...Why the Western Empire Fell when it did...Some thoughts on the future...Thank you, goodnight.',
1285      'explicit': None,
1286      'genres': None,
1287      'grouping': None,
1288      'images': list([
1289        dict({
1290          'path': 'pd-5',
1291          'provider': 'xx-instance-id-xx',
1292          'remotely_accessible': False,
1293          'type': 'thumb',
1294        }),
1295      ]),
1296      'label': None,
1297      'languages': None,
1298      'last_refresh': None,
1299      'links': None,
1300      'lrc_lyrics': None,
1301      'lyrics': None,
1302      'mood': None,
1303      'performers': None,
1304      'popularity': None,
1305      'preview': None,
1306      'release_date': '2012-05-06T18:18:38+00:00',
1307      'review': None,
1308      'style': None,
1309    }),
1310    'name': '179- The End',
1311    'podcast': dict({
1312      'date_added': None,
1313      'external_ids': list([
1314      ]),
1315      'favorite': False,
1316      'is_playable': True,
1317      'item_id': 'pd-5',
1318      'media_type': 'podcast',
1319      'metadata': dict({
1320        'chapters': None,
1321        'copyright': None,
1322        'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1323        'explicit': None,
1324        'genres': None,
1325        'grouping': None,
1326        'images': list([
1327          dict({
1328            'path': 'pd-5',
1329            'provider': 'xx-instance-id-xx',
1330            'remotely_accessible': False,
1331            'type': 'thumb',
1332          }),
1333        ]),
1334        'label': None,
1335        'languages': None,
1336        'last_refresh': None,
1337        'links': None,
1338        'lrc_lyrics': None,
1339        'lyrics': None,
1340        'mood': None,
1341        'performers': None,
1342        'popularity': None,
1343        'preview': None,
1344        'release_date': None,
1345        'review': None,
1346        'style': None,
1347      }),
1348      'name': 'The History of Rome',
1349      'position': None,
1350      'provider': 'opensubsonic',
1351      'provider_mappings': list([
1352        dict({
1353          'audio_format': dict({
1354            'bit_depth': 16,
1355            'bit_rate': 0,
1356            'channels': 2,
1357            'codec_type': '?',
1358            'content_type': '?',
1359            'output_format_str': '?',
1360            'sample_rate': 44100,
1361          }),
1362          'available': True,
1363          'details': None,
1364          'in_library': None,
1365          'is_unique': None,
1366          'item_id': 'pd-5',
1367          'provider_domain': 'opensubsonic',
1368          'provider_instance': 'xx-instance-id-xx',
1369          'url': None,
1370        }),
1371      ]),
1372      'publisher': None,
1373      'sort_name': 'history of rome, the',
1374      'total_episodes': 5,
1375      'translation_key': None,
1376      'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1377      'version': '',
1378    }),
1379    'position': 5,
1380    'provider': 'opensubsonic',
1381    'provider_mappings': list([
1382      dict({
1383        'audio_format': dict({
1384          'bit_depth': 16,
1385          'bit_rate': 0,
1386          'channels': 2,
1387          'codec_type': '?',
1388          'content_type': '?',
1389          'output_format_str': '?',
1390          'sample_rate': 44100,
1391        }),
1392        'available': True,
1393        'details': None,
1394        'in_library': None,
1395        'is_unique': None,
1396        'item_id': 'pd-5$!$pe-1860',
1397        'provider_domain': 'opensubsonic',
1398        'provider_instance': 'xx-instance-id-xx',
1399        'url': None,
1400      }),
1401    ]),
1402    'resume_position_ms': None,
1403    'sort_name': '179- the end',
1404    'translation_key': None,
1405    'uri': 'opensubsonic://podcast_episode/pd-5$!$pe-1860',
1406    'version': '',
1407  })
1408# ---
1409# name: test_parse_episode[no-cover.episode]
1410  dict({
1411    'date_added': None,
1412    'duration': 0,
1413    'external_ids': list([
1414    ]),
1415    'favorite': False,
1416    'fully_played': None,
1417    'is_playable': True,
1418    'item_id': 'pd-5$!$pe-1860',
1419    'media_type': 'podcast_episode',
1420    'metadata': dict({
1421      'chapters': None,
1422      'copyright': None,
1423      'description': 'The history of The History of Rome...Why the Western Empire Fell when it did...Some thoughts on the future...Thank you, goodnight.',
1424      'explicit': None,
1425      'genres': None,
1426      'grouping': None,
1427      'images': list([
1428        dict({
1429          'path': 'pd-5',
1430          'provider': 'xx-instance-id-xx',
1431          'remotely_accessible': False,
1432          'type': 'thumb',
1433        }),
1434      ]),
1435      'label': None,
1436      'languages': None,
1437      'last_refresh': None,
1438      'links': None,
1439      'lrc_lyrics': None,
1440      'lyrics': None,
1441      'mood': None,
1442      'performers': None,
1443      'popularity': None,
1444      'preview': None,
1445      'release_date': '2012-05-06T18:18:38+00:00',
1446      'review': None,
1447      'style': None,
1448    }),
1449    'name': '179- The End',
1450    'podcast': dict({
1451      'date_added': None,
1452      'external_ids': list([
1453      ]),
1454      'favorite': False,
1455      'is_playable': True,
1456      'item_id': 'pd-5',
1457      'media_type': 'podcast',
1458      'metadata': dict({
1459        'chapters': None,
1460        'copyright': None,
1461        'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1462        'explicit': None,
1463        'genres': None,
1464        'grouping': None,
1465        'images': list([
1466          dict({
1467            'path': 'pd-5',
1468            'provider': 'xx-instance-id-xx',
1469            'remotely_accessible': False,
1470            'type': 'thumb',
1471          }),
1472        ]),
1473        'label': None,
1474        'languages': None,
1475        'last_refresh': None,
1476        'links': None,
1477        'lrc_lyrics': None,
1478        'lyrics': None,
1479        'mood': None,
1480        'performers': None,
1481        'popularity': None,
1482        'preview': None,
1483        'release_date': None,
1484        'review': None,
1485        'style': None,
1486      }),
1487      'name': 'The History of Rome',
1488      'position': None,
1489      'provider': 'opensubsonic',
1490      'provider_mappings': list([
1491        dict({
1492          'audio_format': dict({
1493            'bit_depth': 16,
1494            'bit_rate': 0,
1495            'channels': 2,
1496            'codec_type': '?',
1497            'content_type': '?',
1498            'output_format_str': '?',
1499            'sample_rate': 44100,
1500          }),
1501          'available': True,
1502          'details': None,
1503          'in_library': None,
1504          'is_unique': None,
1505          'item_id': 'pd-5',
1506          'provider_domain': 'opensubsonic',
1507          'provider_instance': 'xx-instance-id-xx',
1508          'url': None,
1509        }),
1510      ]),
1511      'publisher': None,
1512      'sort_name': 'history of rome, the',
1513      'total_episodes': 5,
1514      'translation_key': None,
1515      'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1516      'version': '',
1517    }),
1518    'position': 5,
1519    'provider': 'opensubsonic',
1520    'provider_mappings': list([
1521      dict({
1522        'audio_format': dict({
1523          'bit_depth': 16,
1524          'bit_rate': 0,
1525          'channels': 2,
1526          'codec_type': '?',
1527          'content_type': '?',
1528          'output_format_str': '?',
1529          'sample_rate': 44100,
1530        }),
1531        'available': True,
1532        'details': None,
1533        'in_library': None,
1534        'is_unique': None,
1535        'item_id': 'pd-5$!$pe-1860',
1536        'provider_domain': 'opensubsonic',
1537        'provider_instance': 'xx-instance-id-xx',
1538        'url': None,
1539      }),
1540    ]),
1541    'resume_position_ms': None,
1542    'sort_name': '179- the end',
1543    'translation_key': None,
1544    'uri': 'opensubsonic://podcast_episode/pd-5$!$pe-1860',
1545    'version': '',
1546  })
1547# ---
1548# name: test_parse_episode[no-duration.episode]
1549  dict({
1550    'date_added': None,
1551    'duration': 0,
1552    'external_ids': list([
1553    ]),
1554    'favorite': False,
1555    'fully_played': None,
1556    'is_playable': True,
1557    'item_id': 'pd-5$!$pe-1860',
1558    'media_type': 'podcast_episode',
1559    'metadata': dict({
1560      'chapters': None,
1561      'copyright': None,
1562      'description': 'The history of The History of Rome...Why the Western Empire Fell when it did...Some thoughts on the future...Thank you, goodnight.',
1563      'explicit': None,
1564      'genres': None,
1565      'grouping': None,
1566      'images': list([
1567        dict({
1568          'path': 'pd-5',
1569          'provider': 'xx-instance-id-xx',
1570          'remotely_accessible': False,
1571          'type': 'thumb',
1572        }),
1573      ]),
1574      'label': None,
1575      'languages': None,
1576      'last_refresh': None,
1577      'links': None,
1578      'lrc_lyrics': None,
1579      'lyrics': None,
1580      'mood': None,
1581      'performers': None,
1582      'popularity': None,
1583      'preview': None,
1584      'release_date': '2012-05-06T18:18:38+00:00',
1585      'review': None,
1586      'style': None,
1587    }),
1588    'name': '179- The End',
1589    'podcast': dict({
1590      'date_added': None,
1591      'external_ids': list([
1592      ]),
1593      'favorite': False,
1594      'is_playable': True,
1595      'item_id': 'pd-5',
1596      'media_type': 'podcast',
1597      'metadata': dict({
1598        'chapters': None,
1599        'copyright': None,
1600        'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1601        'explicit': None,
1602        'genres': None,
1603        'grouping': None,
1604        'images': list([
1605          dict({
1606            'path': 'pd-5',
1607            'provider': 'xx-instance-id-xx',
1608            'remotely_accessible': False,
1609            'type': 'thumb',
1610          }),
1611        ]),
1612        'label': None,
1613        'languages': None,
1614        'last_refresh': None,
1615        'links': None,
1616        'lrc_lyrics': None,
1617        'lyrics': None,
1618        'mood': None,
1619        'performers': None,
1620        'popularity': None,
1621        'preview': None,
1622        'release_date': None,
1623        'review': None,
1624        'style': None,
1625      }),
1626      'name': 'The History of Rome',
1627      'position': None,
1628      'provider': 'opensubsonic',
1629      'provider_mappings': list([
1630        dict({
1631          'audio_format': dict({
1632            'bit_depth': 16,
1633            'bit_rate': 0,
1634            'channels': 2,
1635            'codec_type': '?',
1636            'content_type': '?',
1637            'output_format_str': '?',
1638            'sample_rate': 44100,
1639          }),
1640          'available': True,
1641          'details': None,
1642          'in_library': None,
1643          'is_unique': None,
1644          'item_id': 'pd-5',
1645          'provider_domain': 'opensubsonic',
1646          'provider_instance': 'xx-instance-id-xx',
1647          'url': None,
1648        }),
1649      ]),
1650      'publisher': None,
1651      'sort_name': 'history of rome, the',
1652      'total_episodes': 5,
1653      'translation_key': None,
1654      'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1655      'version': '',
1656    }),
1657    'position': 5,
1658    'provider': 'opensubsonic',
1659    'provider_mappings': list([
1660      dict({
1661        'audio_format': dict({
1662          'bit_depth': 16,
1663          'bit_rate': 0,
1664          'channels': 2,
1665          'codec_type': '?',
1666          'content_type': '?',
1667          'output_format_str': '?',
1668          'sample_rate': 44100,
1669        }),
1670        'available': True,
1671        'details': None,
1672        'in_library': None,
1673        'is_unique': None,
1674        'item_id': 'pd-5$!$pe-1860',
1675        'provider_domain': 'opensubsonic',
1676        'provider_instance': 'xx-instance-id-xx',
1677        'url': None,
1678      }),
1679    ]),
1680    'resume_position_ms': None,
1681    'sort_name': '179- the end',
1682    'translation_key': None,
1683    'uri': 'opensubsonic://podcast_episode/pd-5$!$pe-1860',
1684    'version': '',
1685  })
1686# ---
1687# name: test_parse_playlist[gonic-sample.playlist]
1688  dict({
1689    'date_added': None,
1690    'external_ids': list([
1691    ]),
1692    'favorite': False,
1693    'is_editable': True,
1694    'is_playable': True,
1695    'item_id': 'Mi8xNzQzNzg5NTk5MzM1LTE3NDM3ODk1OTkzMzUubTN1',
1696    'media_type': 'playlist',
1697    'metadata': dict({
1698      'chapters': None,
1699      'copyright': None,
1700      'description': None,
1701      'explicit': None,
1702      'genres': None,
1703      'grouping': None,
1704      'images': list([
1705        dict({
1706          'path': 'al-2250',
1707          'provider': 'xx-instance-id-xx',
1708          'remotely_accessible': False,
1709          'type': 'thumb',
1710        }),
1711      ]),
1712      'label': None,
1713      'languages': None,
1714      'last_refresh': None,
1715      'links': None,
1716      'lrc_lyrics': None,
1717      'lyrics': None,
1718      'mood': None,
1719      'performers': None,
1720      'popularity': None,
1721      'preview': None,
1722      'release_date': None,
1723      'review': None,
1724      'style': None,
1725    }),
1726    'name': "Guns N' Roses - Use Your Illusion",
1727    'owner': '',
1728    'position': None,
1729    'provider': 'opensubsonic',
1730    'provider_mappings': list([
1731      dict({
1732        'audio_format': dict({
1733          'bit_depth': 16,
1734          'bit_rate': 0,
1735          'channels': 2,
1736          'codec_type': '?',
1737          'content_type': '?',
1738          'output_format_str': '?',
1739          'sample_rate': 44100,
1740        }),
1741        'available': True,
1742        'details': None,
1743        'in_library': None,
1744        'is_unique': None,
1745        'item_id': 'Mi8xNzQzNzg5NTk5MzM1LTE3NDM3ODk1OTkzMzUubTN1',
1746        'provider_domain': 'opensubsonic',
1747        'provider_instance': 'xx-instance-id-xx',
1748        'url': None,
1749      }),
1750    ]),
1751    'sort_name': "guns n' roses - use your illusion",
1752    'translation_key': None,
1753    'uri': 'opensubsonic://playlist/Mi8xNzQzNzg5NTk5MzM1LTE3NDM3ODk1OTkzMzUubTN1',
1754    'version': '',
1755  })
1756# ---
1757# name: test_parse_podcast[gonic-sample.podcast]
1758  dict({
1759    'date_added': None,
1760    'external_ids': list([
1761    ]),
1762    'favorite': False,
1763    'is_playable': True,
1764    'item_id': 'pd-5',
1765    'media_type': 'podcast',
1766    'metadata': dict({
1767      'chapters': None,
1768      'copyright': None,
1769      'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1770      'explicit': None,
1771      'genres': None,
1772      'grouping': None,
1773      'images': list([
1774        dict({
1775          'path': 'pd-5',
1776          'provider': 'xx-instance-id-xx',
1777          'remotely_accessible': False,
1778          'type': 'thumb',
1779        }),
1780      ]),
1781      'label': None,
1782      'languages': None,
1783      'last_refresh': None,
1784      'links': None,
1785      'lrc_lyrics': None,
1786      'lyrics': None,
1787      'mood': None,
1788      'performers': None,
1789      'popularity': None,
1790      'preview': None,
1791      'release_date': None,
1792      'review': None,
1793      'style': None,
1794    }),
1795    'name': 'The History of Rome',
1796    'position': None,
1797    'provider': 'opensubsonic',
1798    'provider_mappings': list([
1799      dict({
1800        'audio_format': dict({
1801          'bit_depth': 16,
1802          'bit_rate': 0,
1803          'channels': 2,
1804          'codec_type': '?',
1805          'content_type': '?',
1806          'output_format_str': '?',
1807          'sample_rate': 44100,
1808        }),
1809        'available': True,
1810        'details': None,
1811        'in_library': None,
1812        'is_unique': None,
1813        'item_id': 'pd-5',
1814        'provider_domain': 'opensubsonic',
1815        'provider_instance': 'xx-instance-id-xx',
1816        'url': None,
1817      }),
1818    ]),
1819    'publisher': None,
1820    'sort_name': 'history of rome, the',
1821    'total_episodes': 5,
1822    'translation_key': None,
1823    'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1824    'version': '',
1825  })
1826# ---
1827# name: test_parse_podcast[no-episodes.podcast]
1828  dict({
1829    'date_added': None,
1830    'external_ids': list([
1831    ]),
1832    'favorite': False,
1833    'is_playable': True,
1834    'item_id': 'pd-5',
1835    'media_type': 'podcast',
1836    'metadata': dict({
1837      'chapters': None,
1838      'copyright': None,
1839      'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1840      'explicit': None,
1841      'genres': None,
1842      'grouping': None,
1843      'images': list([
1844        dict({
1845          'path': 'pd-5',
1846          'provider': 'xx-instance-id-xx',
1847          'remotely_accessible': False,
1848          'type': 'thumb',
1849        }),
1850      ]),
1851      'label': None,
1852      'languages': None,
1853      'last_refresh': None,
1854      'links': None,
1855      'lrc_lyrics': None,
1856      'lyrics': None,
1857      'mood': None,
1858      'performers': None,
1859      'popularity': None,
1860      'preview': None,
1861      'release_date': None,
1862      'review': None,
1863      'style': None,
1864    }),
1865    'name': 'The History of Rome',
1866    'position': None,
1867    'provider': 'opensubsonic',
1868    'provider_mappings': list([
1869      dict({
1870        'audio_format': dict({
1871          'bit_depth': 16,
1872          'bit_rate': 0,
1873          'channels': 2,
1874          'codec_type': '?',
1875          'content_type': '?',
1876          'output_format_str': '?',
1877          'sample_rate': 44100,
1878        }),
1879        'available': True,
1880        'details': None,
1881        'in_library': None,
1882        'is_unique': None,
1883        'item_id': 'pd-5',
1884        'provider_domain': 'opensubsonic',
1885        'provider_instance': 'xx-instance-id-xx',
1886        'url': None,
1887      }),
1888    ]),
1889    'publisher': None,
1890    'sort_name': 'history of rome, the',
1891    'total_episodes': 0,
1892    'translation_key': None,
1893    'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1894    'version': '',
1895  })
1896# ---
1897# name: test_parse_track[missing-items.track]
1898  dict({
1899    'album': dict({
1900      'available': True,
1901      'external_ids': list([
1902      ]),
1903      'image': None,
1904      'is_playable': True,
1905      'item_id': 'e8a0685e3f3ec6f251649af2b58b8617',
1906      'media_type': 'album',
1907      'name': 'Live at The Casbah - 2005-04-29',
1908      'provider': 'xx-instance-id-xx',
1909      'sort_name': 'live at the casbah - 2005-04-29',
1910      'translation_key': None,
1911      'uri': 'xx-instance-id-xx://album/e8a0685e3f3ec6f251649af2b58b8617',
1912      'version': '',
1913      'year': None,
1914    }),
1915    'artists': list([
1916      dict({
1917        'date_added': None,
1918        'external_ids': list([
1919        ]),
1920        'favorite': False,
1921        'is_playable': True,
1922        'item_id': 'fake_artist_unknown',
1923        'media_type': 'artist',
1924        'metadata': dict({
1925          'chapters': None,
1926          'copyright': None,
1927          'description': None,
1928          'explicit': None,
1929          'genres': None,
1930          'grouping': None,
1931          'images': None,
1932          'label': None,
1933          'languages': None,
1934          'last_refresh': None,
1935          'links': None,
1936          'lrc_lyrics': None,
1937          'lyrics': None,
1938          'mood': None,
1939          'performers': None,
1940          'popularity': None,
1941          'preview': None,
1942          'release_date': None,
1943          'review': None,
1944          'style': None,
1945        }),
1946        'name': '[unknown]',
1947        'position': None,
1948        'provider': 'xx-instance-id-xx',
1949        'provider_mappings': list([
1950          dict({
1951            'audio_format': dict({
1952              'bit_depth': 16,
1953              'bit_rate': 0,
1954              'channels': 2,
1955              'codec_type': '?',
1956              'content_type': '?',
1957              'output_format_str': '?',
1958              'sample_rate': 44100,
1959            }),
1960            'available': True,
1961            'details': None,
1962            'in_library': None,
1963            'is_unique': None,
1964            'item_id': 'fake_artist_unknown',
1965            'provider_domain': 'opensubsonic',
1966            'provider_instance': 'xx-instance-id-xx',
1967            'url': None,
1968          }),
1969        ]),
1970        'sort_name': 'unknown]',
1971        'translation_key': None,
1972        'uri': 'xx-instance-id-xx://artist/fake_artist_unknown',
1973        'version': '',
1974      }),
1975    ]),
1976    'date_added': None,
1977    'disc_number': 0,
1978    'duration': 0,
1979    'external_ids': list([
1980      list([
1981        'musicbrainz_recordingid',
1982        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
1983      ]),
1984    ]),
1985    'favorite': True,
1986    'is_playable': True,
1987    'item_id': '082f435a363c32c57d5edb6a678a28d4',
1988    'last_played': 0,
1989    'media_type': 'track',
1990    'metadata': dict({
1991      'chapters': None,
1992      'copyright': None,
1993      'description': None,
1994      'explicit': True,
1995      'genres': list([
1996        'East coast',
1997        'Hip-Hop',
1998      ]),
1999      'grouping': None,
2000      'images': None,
2001      'label': None,
2002      'languages': None,
2003      'last_refresh': None,
2004      'links': None,
2005      'lrc_lyrics': None,
2006      'lyrics': None,
2007      'mood': 'slow',
2008      'performers': list([
2009        'Artist 3',
2010        'Artist 4',
2011        'Artist 5',
2012      ]),
2013      'popularity': None,
2014      'preview': None,
2015      'release_date': None,
2016      'review': None,
2017      'style': None,
2018    }),
2019    'name': '"polar expedition"',
2020    'position': None,
2021    'provider': 'xx-instance-id-xx',
2022    'provider_mappings': list([
2023      dict({
2024        'audio_format': dict({
2025          'bit_depth': 16,
2026          'bit_rate': 0,
2027          'channels': 2,
2028          'codec_type': '?',
2029          'content_type': '?',
2030          'output_format_str': '?',
2031          'sample_rate': 44100,
2032        }),
2033        'available': True,
2034        'details': None,
2035        'in_library': None,
2036        'is_unique': None,
2037        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2038        'provider_domain': 'opensubsonic',
2039        'provider_instance': 'xx-instance-id-xx',
2040        'url': None,
2041      }),
2042    ]),
2043    'sort_name': 'Polar expedition',
2044    'track_number': 0,
2045    'translation_key': None,
2046    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2047    'version': '',
2048  })
2049# ---
2050# name: test_parse_track[missing-items.track].1
2051  dict({
2052    'album': dict({
2053      'artist': 'pornophonique',
2054      'artistId': '97e0398acf63f9fb930d7d4ce209a52b',
2055      'artists': list([
2056        dict({
2057          'id': 'ar-1',
2058          'name': 'Artist 1',
2059        }),
2060        dict({
2061          'id': 'ar-2',
2062          'name': 'Artist 2',
2063        }),
2064      ]),
2065      'coverArt': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
2066      'created': '2023-03-10T02:19:35.784818075Z',
2067      'discTitles': list([
2068        dict({
2069          'disc': 0,
2070          'title': 'Disc 0 title',
2071        }),
2072        dict({
2073          'disc': 2,
2074          'title': 'Disc 1 title',
2075        }),
2076      ]),
2077      'displayArtist': 'Artist 1 feat. Artist 2',
2078      'duration': 1954,
2079      'explicitStatus': 'explicit',
2080      'genre': 'Hip-Hop',
2081      'genres': list([
2082        dict({
2083          'name': 'Hip-Hop',
2084        }),
2085        dict({
2086          'name': 'East coast',
2087        }),
2088      ]),
2089      'id': 'e8a0685e3f3ec6f251649af2b58b8617',
2090      'isCompilation': False,
2091      'moods': list([
2092        'slow',
2093        'cool',
2094      ]),
2095      'musicBrainzId': '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2096      'name': 'Live at The Casbah - 2005-04-29',
2097      'originalReleaseDate': dict({
2098        'day': 10,
2099        'month': 3,
2100        'year': 2001,
2101      }),
2102      'playCount': 97,
2103      'played': '2023-03-28T00:45:13Z',
2104      'releaseDate': dict({
2105        'day': 10,
2106        'month': 3,
2107        'year': 2001,
2108      }),
2109      'releaseTypes': list([
2110        'Album',
2111        'Remixes',
2112      ]),
2113      'songCount': 8,
2114      'sortName': 'lagerfeuer (8-bit)',
2115      'starred': '2023-03-22T01:51:06Z',
2116      'userRating': 4,
2117      'version': 'Deluxe Edition',
2118      'year': 2007,
2119    }),
2120    'artists': list([
2121      dict({
2122        'date_added': None,
2123        'external_ids': list([
2124        ]),
2125        'favorite': False,
2126        'is_playable': True,
2127        'item_id': 'fake_artist_unknown',
2128        'media_type': 'artist',
2129        'metadata': dict({
2130          'chapters': None,
2131          'copyright': None,
2132          'description': None,
2133          'explicit': None,
2134          'genres': None,
2135          'grouping': None,
2136          'images': None,
2137          'label': None,
2138          'languages': None,
2139          'last_refresh': None,
2140          'links': None,
2141          'lrc_lyrics': None,
2142          'lyrics': None,
2143          'mood': None,
2144          'performers': None,
2145          'popularity': None,
2146          'preview': None,
2147          'release_date': None,
2148          'review': None,
2149          'style': None,
2150        }),
2151        'name': '[unknown]',
2152        'position': None,
2153        'provider': 'xx-instance-id-xx',
2154        'provider_mappings': list([
2155          dict({
2156            'audio_format': dict({
2157              'bit_depth': 16,
2158              'bit_rate': 0,
2159              'channels': 2,
2160              'codec_type': '?',
2161              'content_type': '?',
2162              'output_format_str': '?',
2163              'sample_rate': 44100,
2164            }),
2165            'available': True,
2166            'details': None,
2167            'in_library': None,
2168            'is_unique': None,
2169            'item_id': 'fake_artist_unknown',
2170            'provider_domain': 'opensubsonic',
2171            'provider_instance': 'xx-instance-id-xx',
2172            'url': None,
2173          }),
2174        ]),
2175        'sort_name': 'unknown]',
2176        'translation_key': None,
2177        'uri': 'xx-instance-id-xx://artist/fake_artist_unknown',
2178        'version': '',
2179      }),
2180    ]),
2181    'date_added': None,
2182    'disc_number': 0,
2183    'duration': 0,
2184    'external_ids': list([
2185      list([
2186        'musicbrainz_recordingid',
2187        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2188      ]),
2189    ]),
2190    'favorite': True,
2191    'is_playable': True,
2192    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2193    'last_played': 0,
2194    'media_type': 'track',
2195    'metadata': dict({
2196      'chapters': None,
2197      'copyright': None,
2198      'description': None,
2199      'explicit': True,
2200      'genres': list([
2201        'East coast',
2202        'Hip-Hop',
2203      ]),
2204      'grouping': None,
2205      'images': None,
2206      'label': None,
2207      'languages': None,
2208      'last_refresh': None,
2209      'links': None,
2210      'lrc_lyrics': None,
2211      'lyrics': None,
2212      'mood': 'slow',
2213      'performers': list([
2214        'Artist 3',
2215        'Artist 4',
2216        'Artist 5',
2217      ]),
2218      'popularity': None,
2219      'preview': None,
2220      'release_date': None,
2221      'review': None,
2222      'style': None,
2223    }),
2224    'name': '"polar expedition"',
2225    'position': None,
2226    'provider': 'xx-instance-id-xx',
2227    'provider_mappings': list([
2228      dict({
2229        'audio_format': dict({
2230          'bit_depth': 16,
2231          'bit_rate': 0,
2232          'channels': 2,
2233          'codec_type': '?',
2234          'content_type': '?',
2235          'output_format_str': '?',
2236          'sample_rate': 44100,
2237        }),
2238        'available': True,
2239        'details': None,
2240        'in_library': None,
2241        'is_unique': None,
2242        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2243        'provider_domain': 'opensubsonic',
2244        'provider_instance': 'xx-instance-id-xx',
2245        'url': None,
2246      }),
2247    ]),
2248    'sort_name': 'Polar expedition',
2249    'track_number': 0,
2250    'translation_key': None,
2251    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2252    'version': '',
2253  })
2254# ---
2255# name: test_parse_track[navi-various.track]
2256  dict({
2257    'album': dict({
2258      'available': True,
2259      'external_ids': list([
2260      ]),
2261      'image': None,
2262      'is_playable': True,
2263      'item_id': 'e8a0685e3f3ec6f251649af2b58b8617',
2264      'media_type': 'album',
2265      'name': 'Live at The Casbah - 2005-04-29',
2266      'provider': 'xx-instance-id-xx',
2267      'sort_name': 'live at the casbah - 2005-04-29',
2268      'translation_key': None,
2269      'uri': 'xx-instance-id-xx://album/e8a0685e3f3ec6f251649af2b58b8617',
2270      'version': '',
2271      'year': None,
2272    }),
2273    'artists': list([
2274      dict({
2275        'date_added': None,
2276        'external_ids': list([
2277        ]),
2278        'favorite': False,
2279        'is_playable': True,
2280        'item_id': 'MA-NAVIDROME-The New Deal',
2281        'media_type': 'artist',
2282        'metadata': dict({
2283          'chapters': None,
2284          'copyright': None,
2285          'description': None,
2286          'explicit': None,
2287          'genres': None,
2288          'grouping': None,
2289          'images': None,
2290          'label': None,
2291          'languages': None,
2292          'last_refresh': None,
2293          'links': None,
2294          'lrc_lyrics': None,
2295          'lyrics': None,
2296          'mood': None,
2297          'performers': None,
2298          'popularity': None,
2299          'preview': None,
2300          'release_date': None,
2301          'review': None,
2302          'style': None,
2303        }),
2304        'name': 'The New Deal',
2305        'position': None,
2306        'provider': 'opensubsonic',
2307        'provider_mappings': list([
2308          dict({
2309            'audio_format': dict({
2310              'bit_depth': 16,
2311              'bit_rate': 0,
2312              'channels': 2,
2313              'codec_type': '?',
2314              'content_type': '?',
2315              'output_format_str': '?',
2316              'sample_rate': 44100,
2317            }),
2318            'available': True,
2319            'details': None,
2320            'in_library': None,
2321            'is_unique': None,
2322            'item_id': 'MA-NAVIDROME-The New Deal',
2323            'provider_domain': 'opensubsonic',
2324            'provider_instance': 'xx-instance-id-xx',
2325            'url': None,
2326          }),
2327        ]),
2328        'sort_name': 'new deal, the',
2329        'translation_key': None,
2330        'uri': 'opensubsonic://artist/MA-NAVIDROME-The New Deal',
2331        'version': '',
2332      }),
2333    ]),
2334    'date_added': None,
2335    'disc_number': 0,
2336    'duration': 0,
2337    'external_ids': list([
2338      list([
2339        'musicbrainz_recordingid',
2340        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2341      ]),
2342    ]),
2343    'favorite': True,
2344    'is_playable': True,
2345    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2346    'last_played': 0,
2347    'media_type': 'track',
2348    'metadata': dict({
2349      'chapters': None,
2350      'copyright': None,
2351      'description': None,
2352      'explicit': True,
2353      'genres': list([
2354        'East coast',
2355        'Hip-Hop',
2356      ]),
2357      'grouping': None,
2358      'images': None,
2359      'label': None,
2360      'languages': None,
2361      'last_refresh': None,
2362      'links': None,
2363      'lrc_lyrics': None,
2364      'lyrics': None,
2365      'mood': 'slow',
2366      'performers': list([
2367        'Artist 3',
2368        'Artist 4',
2369        'Artist 5',
2370      ]),
2371      'popularity': None,
2372      'preview': None,
2373      'release_date': None,
2374      'review': None,
2375      'style': None,
2376    }),
2377    'name': '"polar expedition"',
2378    'position': None,
2379    'provider': 'xx-instance-id-xx',
2380    'provider_mappings': list([
2381      dict({
2382        'audio_format': dict({
2383          'bit_depth': 16,
2384          'bit_rate': 0,
2385          'channels': 2,
2386          'codec_type': '?',
2387          'content_type': '?',
2388          'output_format_str': '?',
2389          'sample_rate': 44100,
2390        }),
2391        'available': True,
2392        'details': None,
2393        'in_library': None,
2394        'is_unique': None,
2395        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2396        'provider_domain': 'opensubsonic',
2397        'provider_instance': 'xx-instance-id-xx',
2398        'url': None,
2399      }),
2400    ]),
2401    'sort_name': 'Polar expedition',
2402    'track_number': 0,
2403    'translation_key': None,
2404    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2405    'version': '',
2406  })
2407# ---
2408# name: test_parse_track[navi-various.track].1
2409  dict({
2410    'album': dict({
2411      'artist': 'pornophonique',
2412      'artistId': '97e0398acf63f9fb930d7d4ce209a52b',
2413      'artists': list([
2414        dict({
2415          'id': 'ar-1',
2416          'name': 'Artist 1',
2417        }),
2418        dict({
2419          'id': 'ar-2',
2420          'name': 'Artist 2',
2421        }),
2422      ]),
2423      'coverArt': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
2424      'created': '2023-03-10T02:19:35.784818075Z',
2425      'discTitles': list([
2426        dict({
2427          'disc': 0,
2428          'title': 'Disc 0 title',
2429        }),
2430        dict({
2431          'disc': 2,
2432          'title': 'Disc 1 title',
2433        }),
2434      ]),
2435      'displayArtist': 'Artist 1 feat. Artist 2',
2436      'duration': 1954,
2437      'explicitStatus': 'explicit',
2438      'genre': 'Hip-Hop',
2439      'genres': list([
2440        dict({
2441          'name': 'Hip-Hop',
2442        }),
2443        dict({
2444          'name': 'East coast',
2445        }),
2446      ]),
2447      'id': 'e8a0685e3f3ec6f251649af2b58b8617',
2448      'isCompilation': False,
2449      'moods': list([
2450        'slow',
2451        'cool',
2452      ]),
2453      'musicBrainzId': '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2454      'name': 'Live at The Casbah - 2005-04-29',
2455      'originalReleaseDate': dict({
2456        'day': 10,
2457        'month': 3,
2458        'year': 2001,
2459      }),
2460      'playCount': 97,
2461      'played': '2023-03-28T00:45:13Z',
2462      'releaseDate': dict({
2463        'day': 10,
2464        'month': 3,
2465        'year': 2001,
2466      }),
2467      'releaseTypes': list([
2468        'Album',
2469        'Remixes',
2470      ]),
2471      'songCount': 8,
2472      'sortName': 'lagerfeuer (8-bit)',
2473      'starred': '2023-03-22T01:51:06Z',
2474      'userRating': 4,
2475      'version': 'Deluxe Edition',
2476      'year': 2007,
2477    }),
2478    'artists': list([
2479      dict({
2480        'date_added': None,
2481        'external_ids': list([
2482        ]),
2483        'favorite': False,
2484        'is_playable': True,
2485        'item_id': 'MA-NAVIDROME-The New Deal',
2486        'media_type': 'artist',
2487        'metadata': dict({
2488          'chapters': None,
2489          'copyright': None,
2490          'description': None,
2491          'explicit': None,
2492          'genres': None,
2493          'grouping': None,
2494          'images': None,
2495          'label': None,
2496          'languages': None,
2497          'last_refresh': None,
2498          'links': None,
2499          'lrc_lyrics': None,
2500          'lyrics': None,
2501          'mood': None,
2502          'performers': None,
2503          'popularity': None,
2504          'preview': None,
2505          'release_date': None,
2506          'review': None,
2507          'style': None,
2508        }),
2509        'name': 'The New Deal',
2510        'position': None,
2511        'provider': 'opensubsonic',
2512        'provider_mappings': list([
2513          dict({
2514            'audio_format': dict({
2515              'bit_depth': 16,
2516              'bit_rate': 0,
2517              'channels': 2,
2518              'codec_type': '?',
2519              'content_type': '?',
2520              'output_format_str': '?',
2521              'sample_rate': 44100,
2522            }),
2523            'available': True,
2524            'details': None,
2525            'in_library': None,
2526            'is_unique': None,
2527            'item_id': 'MA-NAVIDROME-The New Deal',
2528            'provider_domain': 'opensubsonic',
2529            'provider_instance': 'xx-instance-id-xx',
2530            'url': None,
2531          }),
2532        ]),
2533        'sort_name': 'new deal, the',
2534        'translation_key': None,
2535        'uri': 'opensubsonic://artist/MA-NAVIDROME-The New Deal',
2536        'version': '',
2537      }),
2538    ]),
2539    'date_added': None,
2540    'disc_number': 0,
2541    'duration': 0,
2542    'external_ids': list([
2543      list([
2544        'musicbrainz_recordingid',
2545        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2546      ]),
2547    ]),
2548    'favorite': True,
2549    'is_playable': True,
2550    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2551    'last_played': 0,
2552    'media_type': 'track',
2553    'metadata': dict({
2554      'chapters': None,
2555      'copyright': None,
2556      'description': None,
2557      'explicit': True,
2558      'genres': list([
2559        'East coast',
2560        'Hip-Hop',
2561      ]),
2562      'grouping': None,
2563      'images': None,
2564      'label': None,
2565      'languages': None,
2566      'last_refresh': None,
2567      'links': None,
2568      'lrc_lyrics': None,
2569      'lyrics': None,
2570      'mood': 'slow',
2571      'performers': list([
2572        'Artist 3',
2573        'Artist 4',
2574        'Artist 5',
2575      ]),
2576      'popularity': None,
2577      'preview': None,
2578      'release_date': None,
2579      'review': None,
2580      'style': None,
2581    }),
2582    'name': '"polar expedition"',
2583    'position': None,
2584    'provider': 'xx-instance-id-xx',
2585    'provider_mappings': list([
2586      dict({
2587        'audio_format': dict({
2588          'bit_depth': 16,
2589          'bit_rate': 0,
2590          'channels': 2,
2591          'codec_type': '?',
2592          'content_type': '?',
2593          'output_format_str': '?',
2594          'sample_rate': 44100,
2595        }),
2596        'available': True,
2597        'details': None,
2598        'in_library': None,
2599        'is_unique': None,
2600        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2601        'provider_domain': 'opensubsonic',
2602        'provider_instance': 'xx-instance-id-xx',
2603        'url': None,
2604      }),
2605    ]),
2606    'sort_name': 'Polar expedition',
2607    'track_number': 0,
2608    'translation_key': None,
2609    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2610    'version': '',
2611  })
2612# ---
2613# name: test_parse_track[no-version.track]
2614  dict({
2615    'album': dict({
2616      'available': True,
2617      'external_ids': list([
2618      ]),
2619      'image': None,
2620      'is_playable': True,
2621      'item_id': 'e8a0685e3f3ec6f251649af2b58b8617',
2622      'media_type': 'album',
2623      'name': 'Live at The Casbah - 2005-04-29',
2624      'provider': 'xx-instance-id-xx',
2625      'sort_name': 'live at the casbah - 2005-04-29',
2626      'translation_key': None,
2627      'uri': 'xx-instance-id-xx://album/e8a0685e3f3ec6f251649af2b58b8617',
2628      'version': '',
2629      'year': None,
2630    }),
2631    'artists': list([
2632      dict({
2633        'available': True,
2634        'external_ids': list([
2635        ]),
2636        'image': None,
2637        'is_playable': True,
2638        'item_id': '97e0398acf63f9fb930d7d4ce209a52b',
2639        'media_type': 'artist',
2640        'name': 'The New Deal',
2641        'provider': 'xx-instance-id-xx',
2642        'sort_name': 'new deal, the',
2643        'translation_key': None,
2644        'uri': 'xx-instance-id-xx://artist/97e0398acf63f9fb930d7d4ce209a52b',
2645        'version': '',
2646        'year': None,
2647      }),
2648      dict({
2649        'available': True,
2650        'external_ids': list([
2651        ]),
2652        'image': None,
2653        'is_playable': True,
2654        'item_id': 'ar-1',
2655        'media_type': 'artist',
2656        'name': 'Artist 1',
2657        'provider': 'xx-instance-id-xx',
2658        'sort_name': 'artist 1',
2659        'translation_key': None,
2660        'uri': 'xx-instance-id-xx://artist/ar-1',
2661        'version': '',
2662        'year': None,
2663      }),
2664      dict({
2665        'available': True,
2666        'external_ids': list([
2667        ]),
2668        'image': None,
2669        'is_playable': True,
2670        'item_id': 'ar-2',
2671        'media_type': 'artist',
2672        'name': 'Artist 2',
2673        'provider': 'xx-instance-id-xx',
2674        'sort_name': 'artist 2',
2675        'translation_key': None,
2676        'uri': 'xx-instance-id-xx://artist/ar-2',
2677        'version': '',
2678        'year': None,
2679      }),
2680    ]),
2681    'date_added': None,
2682    'disc_number': 1,
2683    'duration': 178,
2684    'external_ids': list([
2685      list([
2686        'musicbrainz_recordingid',
2687        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2688      ]),
2689    ]),
2690    'favorite': True,
2691    'is_playable': True,
2692    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2693    'last_played': 0,
2694    'media_type': 'track',
2695    'metadata': dict({
2696      'chapters': None,
2697      'copyright': None,
2698      'description': None,
2699      'explicit': True,
2700      'genres': list([
2701        'East coast',
2702        'Hip-Hop',
2703      ]),
2704      'grouping': None,
2705      'images': None,
2706      'label': None,
2707      'languages': None,
2708      'last_refresh': None,
2709      'links': None,
2710      'lrc_lyrics': None,
2711      'lyrics': None,
2712      'mood': 'slow',
2713      'performers': list([
2714        'Artist 3',
2715        'Artist 4',
2716        'Artist 5',
2717      ]),
2718      'popularity': None,
2719      'preview': None,
2720      'release_date': None,
2721      'review': None,
2722      'style': None,
2723    }),
2724    'name': '"polar expedition"',
2725    'position': None,
2726    'provider': 'xx-instance-id-xx',
2727    'provider_mappings': list([
2728      dict({
2729        'audio_format': dict({
2730          'bit_depth': 16,
2731          'bit_rate': 880,
2732          'channels': 2,
2733          'codec_type': '?',
2734          'content_type': 'flac',
2735          'output_format_str': 'flac',
2736          'sample_rate': 44100,
2737        }),
2738        'available': True,
2739        'details': None,
2740        'in_library': None,
2741        'is_unique': None,
2742        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2743        'provider_domain': 'opensubsonic',
2744        'provider_instance': 'xx-instance-id-xx',
2745        'url': None,
2746      }),
2747    ]),
2748    'sort_name': 'Polar expedition',
2749    'track_number': 4,
2750    'translation_key': None,
2751    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2752    'version': '',
2753  })
2754# ---
2755# name: test_parse_track[no-version.track].1
2756  dict({
2757    'album': dict({
2758      'artist': 'pornophonique',
2759      'artistId': '97e0398acf63f9fb930d7d4ce209a52b',
2760      'artists': list([
2761        dict({
2762          'id': 'ar-1',
2763          'name': 'Artist 1',
2764        }),
2765        dict({
2766          'id': 'ar-2',
2767          'name': 'Artist 2',
2768        }),
2769      ]),
2770      'coverArt': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
2771      'created': '2023-03-10T02:19:35.784818075Z',
2772      'discTitles': list([
2773        dict({
2774          'disc': 0,
2775          'title': 'Disc 0 title',
2776        }),
2777        dict({
2778          'disc': 2,
2779          'title': 'Disc 1 title',
2780        }),
2781      ]),
2782      'displayArtist': 'Artist 1 feat. Artist 2',
2783      'duration': 1954,
2784      'explicitStatus': 'explicit',
2785      'genre': 'Hip-Hop',
2786      'genres': list([
2787        dict({
2788          'name': 'Hip-Hop',
2789        }),
2790        dict({
2791          'name': 'East coast',
2792        }),
2793      ]),
2794      'id': 'e8a0685e3f3ec6f251649af2b58b8617',
2795      'isCompilation': False,
2796      'moods': list([
2797        'slow',
2798        'cool',
2799      ]),
2800      'musicBrainzId': '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2801      'name': 'Live at The Casbah - 2005-04-29',
2802      'originalReleaseDate': dict({
2803        'day': 10,
2804        'month': 3,
2805        'year': 2001,
2806      }),
2807      'playCount': 97,
2808      'played': '2023-03-28T00:45:13Z',
2809      'releaseDate': dict({
2810        'day': 10,
2811        'month': 3,
2812        'year': 2001,
2813      }),
2814      'releaseTypes': list([
2815        'Album',
2816        'Remixes',
2817      ]),
2818      'songCount': 8,
2819      'sortName': 'lagerfeuer (8-bit)',
2820      'starred': '2023-03-22T01:51:06Z',
2821      'userRating': 4,
2822      'year': 2007,
2823    }),
2824    'artists': list([
2825      dict({
2826        'available': True,
2827        'external_ids': list([
2828        ]),
2829        'image': None,
2830        'is_playable': True,
2831        'item_id': '97e0398acf63f9fb930d7d4ce209a52b',
2832        'media_type': 'artist',
2833        'name': 'The New Deal',
2834        'provider': 'xx-instance-id-xx',
2835        'sort_name': 'new deal, the',
2836        'translation_key': None,
2837        'uri': 'xx-instance-id-xx://artist/97e0398acf63f9fb930d7d4ce209a52b',
2838        'version': '',
2839        'year': None,
2840      }),
2841      dict({
2842        'available': True,
2843        'external_ids': list([
2844        ]),
2845        'image': None,
2846        'is_playable': True,
2847        'item_id': 'ar-1',
2848        'media_type': 'artist',
2849        'name': 'Artist 1',
2850        'provider': 'xx-instance-id-xx',
2851        'sort_name': 'artist 1',
2852        'translation_key': None,
2853        'uri': 'xx-instance-id-xx://artist/ar-1',
2854        'version': '',
2855        'year': None,
2856      }),
2857      dict({
2858        'available': True,
2859        'external_ids': list([
2860        ]),
2861        'image': None,
2862        'is_playable': True,
2863        'item_id': 'ar-2',
2864        'media_type': 'artist',
2865        'name': 'Artist 2',
2866        'provider': 'xx-instance-id-xx',
2867        'sort_name': 'artist 2',
2868        'translation_key': None,
2869        'uri': 'xx-instance-id-xx://artist/ar-2',
2870        'version': '',
2871        'year': None,
2872      }),
2873    ]),
2874    'date_added': None,
2875    'disc_number': 1,
2876    'duration': 178,
2877    'external_ids': list([
2878      list([
2879        'musicbrainz_recordingid',
2880        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2881      ]),
2882    ]),
2883    'favorite': True,
2884    'is_playable': True,
2885    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2886    'last_played': 0,
2887    'media_type': 'track',
2888    'metadata': dict({
2889      'chapters': None,
2890      'copyright': None,
2891      'description': None,
2892      'explicit': True,
2893      'genres': list([
2894        'East coast',
2895        'Hip-Hop',
2896      ]),
2897      'grouping': None,
2898      'images': None,
2899      'label': None,
2900      'languages': None,
2901      'last_refresh': None,
2902      'links': None,
2903      'lrc_lyrics': None,
2904      'lyrics': None,
2905      'mood': 'slow',
2906      'performers': list([
2907        'Artist 3',
2908        'Artist 4',
2909        'Artist 5',
2910      ]),
2911      'popularity': None,
2912      'preview': None,
2913      'release_date': None,
2914      'review': None,
2915      'style': None,
2916    }),
2917    'name': '"polar expedition"',
2918    'position': None,
2919    'provider': 'xx-instance-id-xx',
2920    'provider_mappings': list([
2921      dict({
2922        'audio_format': dict({
2923          'bit_depth': 16,
2924          'bit_rate': 880,
2925          'channels': 2,
2926          'codec_type': '?',
2927          'content_type': 'flac',
2928          'output_format_str': 'flac',
2929          'sample_rate': 44100,
2930        }),
2931        'available': True,
2932        'details': None,
2933        'in_library': None,
2934        'is_unique': None,
2935        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2936        'provider_domain': 'opensubsonic',
2937        'provider_instance': 'xx-instance-id-xx',
2938        'url': None,
2939      }),
2940    ]),
2941    'sort_name': 'Polar expedition',
2942    'track_number': 4,
2943    'translation_key': None,
2944    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2945    'version': '',
2946  })
2947# ---
2948# name: test_parse_track[spec-child.track]
2949  dict({
2950    'album': dict({
2951      'available': True,
2952      'external_ids': list([
2953      ]),
2954      'image': None,
2955      'is_playable': True,
2956      'item_id': 'e8a0685e3f3ec6f251649af2b58b8617',
2957      'media_type': 'album',
2958      'name': 'Live at The Casbah - 2005-04-29',
2959      'provider': 'xx-instance-id-xx',
2960      'sort_name': 'live at the casbah - 2005-04-29',
2961      'translation_key': None,
2962      'uri': 'xx-instance-id-xx://album/e8a0685e3f3ec6f251649af2b58b8617',
2963      'version': '',
2964      'year': None,
2965    }),
2966    'artists': list([
2967      dict({
2968        'available': True,
2969        'external_ids': list([
2970        ]),
2971        'image': None,
2972        'is_playable': True,
2973        'item_id': '97e0398acf63f9fb930d7d4ce209a52b',
2974        'media_type': 'artist',
2975        'name': 'The New Deal',
2976        'provider': 'xx-instance-id-xx',
2977        'sort_name': 'new deal, the',
2978        'translation_key': None,
2979        'uri': 'xx-instance-id-xx://artist/97e0398acf63f9fb930d7d4ce209a52b',
2980        'version': '',
2981        'year': None,
2982      }),
2983      dict({
2984        'available': True,
2985        'external_ids': list([
2986        ]),
2987        'image': None,
2988        'is_playable': True,
2989        'item_id': 'ar-1',
2990        'media_type': 'artist',
2991        'name': 'Artist 1',
2992        'provider': 'xx-instance-id-xx',
2993        'sort_name': 'artist 1',
2994        'translation_key': None,
2995        'uri': 'xx-instance-id-xx://artist/ar-1',
2996        'version': '',
2997        'year': None,
2998      }),
2999      dict({
3000        'available': True,
3001        'external_ids': list([
3002        ]),
3003        'image': None,
3004        'is_playable': True,
3005        'item_id': 'ar-2',
3006        'media_type': 'artist',
3007        'name': 'Artist 2',
3008        'provider': 'xx-instance-id-xx',
3009        'sort_name': 'artist 2',
3010        'translation_key': None,
3011        'uri': 'xx-instance-id-xx://artist/ar-2',
3012        'version': '',
3013        'year': None,
3014      }),
3015    ]),
3016    'date_added': None,
3017    'disc_number': 1,
3018    'duration': 178,
3019    'external_ids': list([
3020      list([
3021        'musicbrainz_recordingid',
3022        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
3023      ]),
3024    ]),
3025    'favorite': True,
3026    'is_playable': True,
3027    'item_id': '082f435a363c32c57d5edb6a678a28d4',
3028    'last_played': 0,
3029    'media_type': 'track',
3030    'metadata': dict({
3031      'chapters': None,
3032      'copyright': None,
3033      'description': None,
3034      'explicit': True,
3035      'genres': list([
3036        'East coast',
3037        'Hip-Hop',
3038      ]),
3039      'grouping': None,
3040      'images': None,
3041      'label': None,
3042      'languages': None,
3043      'last_refresh': None,
3044      'links': None,
3045      'lrc_lyrics': None,
3046      'lyrics': None,
3047      'mood': 'slow',
3048      'performers': list([
3049        'Artist 3',
3050        'Artist 4',
3051        'Artist 5',
3052      ]),
3053      'popularity': None,
3054      'preview': None,
3055      'release_date': None,
3056      'review': None,
3057      'style': None,
3058    }),
3059    'name': '"polar expedition"',
3060    'position': None,
3061    'provider': 'xx-instance-id-xx',
3062    'provider_mappings': list([
3063      dict({
3064        'audio_format': dict({
3065          'bit_depth': 16,
3066          'bit_rate': 880,
3067          'channels': 2,
3068          'codec_type': '?',
3069          'content_type': 'flac',
3070          'output_format_str': 'flac',
3071          'sample_rate': 44100,
3072        }),
3073        'available': True,
3074        'details': None,
3075        'in_library': None,
3076        'is_unique': None,
3077        'item_id': '082f435a363c32c57d5edb6a678a28d4',
3078        'provider_domain': 'opensubsonic',
3079        'provider_instance': 'xx-instance-id-xx',
3080        'url': None,
3081      }),
3082    ]),
3083    'sort_name': 'Polar expedition',
3084    'track_number': 4,
3085    'translation_key': None,
3086    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
3087    'version': '',
3088  })
3089# ---
3090# name: test_parse_track[spec-child.track].1
3091  dict({
3092    'album': dict({
3093      'artist': 'pornophonique',
3094      'artistId': '97e0398acf63f9fb930d7d4ce209a52b',
3095      'artists': list([
3096        dict({
3097          'id': 'ar-1',
3098          'name': 'Artist 1',
3099        }),
3100        dict({
3101          'id': 'ar-2',
3102          'name': 'Artist 2',
3103        }),
3104      ]),
3105      'coverArt': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
3106      'created': '2023-03-10T02:19:35.784818075Z',
3107      'discTitles': list([
3108        dict({
3109          'disc': 0,
3110          'title': 'Disc 0 title',
3111        }),
3112        dict({
3113          'disc': 2,
3114          'title': 'Disc 1 title',
3115        }),
3116      ]),
3117      'displayArtist': 'Artist 1 feat. Artist 2',
3118      'duration': 1954,
3119      'explicitStatus': 'explicit',
3120      'genre': 'Hip-Hop',
3121      'genres': list([
3122        dict({
3123          'name': 'Hip-Hop',
3124        }),
3125        dict({
3126          'name': 'East coast',
3127        }),
3128      ]),
3129      'id': 'e8a0685e3f3ec6f251649af2b58b8617',
3130      'isCompilation': False,
3131      'moods': list([
3132        'slow',
3133        'cool',
3134      ]),
3135      'musicBrainzId': '189002e7-3285-4e2e-92a3-7f6c30d407a2',
3136      'name': 'Live at The Casbah - 2005-04-29',
3137      'originalReleaseDate': dict({
3138        'day': 10,
3139        'month': 3,
3140        'year': 2001,
3141      }),
3142      'playCount': 97,
3143      'played': '2023-03-28T00:45:13Z',
3144      'releaseDate': dict({
3145        'day': 10,
3146        'month': 3,
3147        'year': 2001,
3148      }),
3149      'releaseTypes': list([
3150        'Album',
3151        'Remixes',
3152      ]),
3153      'songCount': 8,
3154      'sortName': 'lagerfeuer (8-bit)',
3155      'starred': '2023-03-22T01:51:06Z',
3156      'userRating': 4,
3157      'version': 'Deluxe Edition',
3158      'year': 2007,
3159    }),
3160    'artists': list([
3161      dict({
3162        'available': True,
3163        'external_ids': list([
3164        ]),
3165        'image': None,
3166        'is_playable': True,
3167        'item_id': '97e0398acf63f9fb930d7d4ce209a52b',
3168        'media_type': 'artist',
3169        'name': 'The New Deal',
3170        'provider': 'xx-instance-id-xx',
3171        'sort_name': 'new deal, the',
3172        'translation_key': None,
3173        'uri': 'xx-instance-id-xx://artist/97e0398acf63f9fb930d7d4ce209a52b',
3174        'version': '',
3175        'year': None,
3176      }),
3177      dict({
3178        'available': True,
3179        'external_ids': list([
3180        ]),
3181        'image': None,
3182        'is_playable': True,
3183        'item_id': 'ar-1',
3184        'media_type': 'artist',
3185        'name': 'Artist 1',
3186        'provider': 'xx-instance-id-xx',
3187        'sort_name': 'artist 1',
3188        'translation_key': None,
3189        'uri': 'xx-instance-id-xx://artist/ar-1',
3190        'version': '',
3191        'year': None,
3192      }),
3193      dict({
3194        'available': True,
3195        'external_ids': list([
3196        ]),
3197        'image': None,
3198        'is_playable': True,
3199        'item_id': 'ar-2',
3200        'media_type': 'artist',
3201        'name': 'Artist 2',
3202        'provider': 'xx-instance-id-xx',
3203        'sort_name': 'artist 2',
3204        'translation_key': None,
3205        'uri': 'xx-instance-id-xx://artist/ar-2',
3206        'version': '',
3207        'year': None,
3208      }),
3209    ]),
3210    'date_added': None,
3211    'disc_number': 1,
3212    'duration': 178,
3213    'external_ids': list([
3214      list([
3215        'musicbrainz_recordingid',
3216        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
3217      ]),
3218    ]),
3219    'favorite': True,
3220    'is_playable': True,
3221    'item_id': '082f435a363c32c57d5edb6a678a28d4',
3222    'last_played': 0,
3223    'media_type': 'track',
3224    'metadata': dict({
3225      'chapters': None,
3226      'copyright': None,
3227      'description': None,
3228      'explicit': True,
3229      'genres': list([
3230        'East coast',
3231        'Hip-Hop',
3232      ]),
3233      'grouping': None,
3234      'images': None,
3235      'label': None,
3236      'languages': None,
3237      'last_refresh': None,
3238      'links': None,
3239      'lrc_lyrics': None,
3240      'lyrics': None,
3241      'mood': 'slow',
3242      'performers': list([
3243        'Artist 3',
3244        'Artist 4',
3245        'Artist 5',
3246      ]),
3247      'popularity': None,
3248      'preview': None,
3249      'release_date': None,
3250      'review': None,
3251      'style': None,
3252    }),
3253    'name': '"polar expedition"',
3254    'position': None,
3255    'provider': 'xx-instance-id-xx',
3256    'provider_mappings': list([
3257      dict({
3258        'audio_format': dict({
3259          'bit_depth': 16,
3260          'bit_rate': 880,
3261          'channels': 2,
3262          'codec_type': '?',
3263          'content_type': 'flac',
3264          'output_format_str': 'flac',
3265          'sample_rate': 44100,
3266        }),
3267        'available': True,
3268        'details': None,
3269        'in_library': None,
3270        'is_unique': None,
3271        'item_id': '082f435a363c32c57d5edb6a678a28d4',
3272        'provider_domain': 'opensubsonic',
3273        'provider_instance': 'xx-instance-id-xx',
3274        'url': None,
3275      }),
3276    ]),
3277    'sort_name': 'Polar expedition',
3278    'track_number': 4,
3279    'translation_key': None,
3280    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
3281    'version': '',
3282  })
3283# ---
3284