music-assistant-server

71.9 KBAMBR
test_parsers.ambr
71.9 KB2,689 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[spec.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[spec.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_artists[no-sort-name.artist]
545  dict({
546    'date_added': None,
547    'external_ids': list([
548      list([
549        'musicbrainz_artistid',
550        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
551      ]),
552    ]),
553    'favorite': True,
554    'is_playable': True,
555    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
556    'media_type': 'artist',
557    'metadata': dict({
558      'chapters': None,
559      'copyright': None,
560      'description': None,
561      'explicit': None,
562      'genres': None,
563      'grouping': None,
564      'images': list([
565        dict({
566          'path': 'https://demo.org/image.jpg',
567          'provider': 'xx-instance-id-xx',
568          'remotely_accessible': True,
569          'type': 'thumb',
570        }),
571        dict({
572          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
573          'provider': 'xx-instance-id-xx',
574          'remotely_accessible': False,
575          'type': 'thumb',
576        }),
577      ]),
578      'label': None,
579      'languages': None,
580      'last_refresh': None,
581      'links': None,
582      'lrc_lyrics': None,
583      'lyrics': None,
584      'mood': None,
585      'performers': None,
586      'popularity': None,
587      'preview': None,
588      'release_date': None,
589      'review': None,
590      'style': None,
591    }),
592    'name': '2 Mello',
593    'position': None,
594    'provider': 'opensubsonic',
595    'provider_mappings': list([
596      dict({
597        'audio_format': dict({
598          'bit_depth': 16,
599          'bit_rate': 0,
600          'channels': 2,
601          'codec_type': '?',
602          'content_type': '?',
603          'output_format_str': '?',
604          'sample_rate': 44100,
605        }),
606        'available': True,
607        'details': None,
608        'in_library': None,
609        'is_unique': None,
610        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
611        'provider_domain': 'opensubsonic',
612        'provider_instance': 'xx-instance-id-xx',
613        'url': None,
614      }),
615    ]),
616    'sort_name': '2 mello',
617    'translation_key': None,
618    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
619    'version': '',
620  })
621# ---
622# name: test_parse_artists[no-sort-name.artist].1
623  dict({
624    'date_added': None,
625    'external_ids': list([
626      list([
627        'musicbrainz_artistid',
628        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
629      ]),
630    ]),
631    'favorite': True,
632    'is_playable': True,
633    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
634    'media_type': 'artist',
635    'metadata': dict({
636      'chapters': None,
637      'copyright': None,
638      'description': 'Empty biography',
639      'explicit': None,
640      'genres': None,
641      'grouping': None,
642      'images': list([
643        dict({
644          'path': 'https://demo.org/image.jpg',
645          'provider': 'xx-instance-id-xx',
646          'remotely_accessible': True,
647          'type': 'thumb',
648        }),
649        dict({
650          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
651          'provider': 'xx-instance-id-xx',
652          'remotely_accessible': False,
653          'type': 'thumb',
654        }),
655        dict({
656          'path': 'http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg',
657          'provider': 'xx-instance-id-xx',
658          'remotely_accessible': True,
659          'type': 'thumb',
660        }),
661      ]),
662      'label': None,
663      'languages': None,
664      'last_refresh': None,
665      'links': None,
666      'lrc_lyrics': None,
667      'lyrics': None,
668      'mood': None,
669      'performers': None,
670      'popularity': None,
671      'preview': None,
672      'release_date': None,
673      'review': None,
674      'style': None,
675    }),
676    'name': '2 Mello',
677    'position': None,
678    'provider': 'opensubsonic',
679    'provider_mappings': list([
680      dict({
681        'audio_format': dict({
682          'bit_depth': 16,
683          'bit_rate': 0,
684          'channels': 2,
685          'codec_type': '?',
686          'content_type': '?',
687          'output_format_str': '?',
688          'sample_rate': 44100,
689        }),
690        'available': True,
691        'details': None,
692        'in_library': None,
693        'is_unique': None,
694        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
695        'provider_domain': 'opensubsonic',
696        'provider_instance': 'xx-instance-id-xx',
697        'url': None,
698      }),
699    ]),
700    'sort_name': '2 mello',
701    'translation_key': None,
702    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
703    'version': '',
704  })
705# ---
706# name: test_parse_artists[spec-artistid3.artist]
707  dict({
708    'date_added': None,
709    'external_ids': list([
710      list([
711        'musicbrainz_artistid',
712        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
713      ]),
714    ]),
715    'favorite': True,
716    'is_playable': True,
717    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
718    'media_type': 'artist',
719    'metadata': dict({
720      'chapters': None,
721      'copyright': None,
722      'description': None,
723      'explicit': None,
724      'genres': None,
725      'grouping': None,
726      'images': list([
727        dict({
728          'path': 'https://demo.org/image.jpg',
729          'provider': 'xx-instance-id-xx',
730          'remotely_accessible': True,
731          'type': 'thumb',
732        }),
733        dict({
734          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
735          'provider': 'xx-instance-id-xx',
736          'remotely_accessible': False,
737          'type': 'thumb',
738        }),
739      ]),
740      'label': None,
741      'languages': None,
742      'last_refresh': None,
743      'links': None,
744      'lrc_lyrics': None,
745      'lyrics': None,
746      'mood': None,
747      'performers': None,
748      'popularity': None,
749      'preview': None,
750      'release_date': None,
751      'review': None,
752      'style': None,
753    }),
754    'name': '2 Mello',
755    'position': None,
756    'provider': 'opensubsonic',
757    'provider_mappings': list([
758      dict({
759        'audio_format': dict({
760          'bit_depth': 16,
761          'bit_rate': 0,
762          'channels': 2,
763          'codec_type': '?',
764          'content_type': '?',
765          'output_format_str': '?',
766          'sample_rate': 44100,
767        }),
768        'available': True,
769        'details': None,
770        'in_library': None,
771        'is_unique': None,
772        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
773        'provider_domain': 'opensubsonic',
774        'provider_instance': 'xx-instance-id-xx',
775        'url': None,
776      }),
777    ]),
778    'sort_name': 'Mello (2)',
779    'translation_key': None,
780    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
781    'version': '',
782  })
783# ---
784# name: test_parse_artists[spec-artistid3.artist].1
785  dict({
786    'date_added': None,
787    'external_ids': list([
788      list([
789        'musicbrainz_artistid',
790        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
791      ]),
792    ]),
793    'favorite': True,
794    'is_playable': True,
795    'item_id': '37ec820ca7193e17040c98f7da7c4b51',
796    'media_type': 'artist',
797    'metadata': dict({
798      'chapters': None,
799      'copyright': None,
800      'description': 'Empty biography',
801      'explicit': None,
802      'genres': None,
803      'grouping': None,
804      'images': list([
805        dict({
806          'path': 'https://demo.org/image.jpg',
807          'provider': 'xx-instance-id-xx',
808          'remotely_accessible': True,
809          'type': 'thumb',
810        }),
811        dict({
812          'path': 'ar-37ec820ca7193e17040c98f7da7c4b51_0',
813          'provider': 'xx-instance-id-xx',
814          'remotely_accessible': False,
815          'type': 'thumb',
816        }),
817        dict({
818          'path': 'http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg',
819          'provider': 'xx-instance-id-xx',
820          'remotely_accessible': True,
821          'type': 'thumb',
822        }),
823      ]),
824      'label': None,
825      'languages': None,
826      'last_refresh': None,
827      'links': None,
828      'lrc_lyrics': None,
829      'lyrics': None,
830      'mood': None,
831      'performers': None,
832      'popularity': None,
833      'preview': None,
834      'release_date': None,
835      'review': None,
836      'style': None,
837    }),
838    'name': '2 Mello',
839    'position': None,
840    'provider': 'opensubsonic',
841    'provider_mappings': list([
842      dict({
843        'audio_format': dict({
844          'bit_depth': 16,
845          'bit_rate': 0,
846          'channels': 2,
847          'codec_type': '?',
848          'content_type': '?',
849          'output_format_str': '?',
850          'sample_rate': 44100,
851        }),
852        'available': True,
853        'details': None,
854        'in_library': None,
855        'is_unique': None,
856        'item_id': '37ec820ca7193e17040c98f7da7c4b51',
857        'provider_domain': 'opensubsonic',
858        'provider_instance': 'xx-instance-id-xx',
859        'url': None,
860      }),
861    ]),
862    'sort_name': 'Mello (2)',
863    'translation_key': None,
864    'uri': 'opensubsonic://artist/37ec820ca7193e17040c98f7da7c4b51',
865    'version': '',
866  })
867# ---
868# name: test_parse_artists[spec-sample.artist]
869  dict({
870    'date_added': None,
871    'external_ids': list([
872    ]),
873    'favorite': True,
874    'is_playable': True,
875    'item_id': '100000002',
876    'media_type': 'artist',
877    'metadata': dict({
878      'chapters': None,
879      'copyright': None,
880      'description': None,
881      'explicit': None,
882      'genres': None,
883      'grouping': None,
884      'images': list([
885        dict({
886          'path': 'ar-100000002',
887          'provider': 'xx-instance-id-xx',
888          'remotely_accessible': False,
889          'type': 'thumb',
890        }),
891      ]),
892      'label': None,
893      'languages': None,
894      'last_refresh': None,
895      'links': None,
896      'lrc_lyrics': None,
897      'lyrics': None,
898      'mood': None,
899      'performers': None,
900      'popularity': None,
901      'preview': None,
902      'release_date': None,
903      'review': None,
904      'style': None,
905    }),
906    'name': 'Synthetic',
907    'position': None,
908    'provider': 'opensubsonic',
909    'provider_mappings': list([
910      dict({
911        'audio_format': dict({
912          'bit_depth': 16,
913          'bit_rate': 0,
914          'channels': 2,
915          'codec_type': '?',
916          'content_type': '?',
917          'output_format_str': '?',
918          'sample_rate': 44100,
919        }),
920        'available': True,
921        'details': None,
922        'in_library': None,
923        'is_unique': None,
924        'item_id': '100000002',
925        'provider_domain': 'opensubsonic',
926        'provider_instance': 'xx-instance-id-xx',
927        'url': None,
928      }),
929    ]),
930    'sort_name': 'synthetic',
931    'translation_key': None,
932    'uri': 'opensubsonic://artist/100000002',
933    'version': '',
934  })
935# ---
936# name: test_parse_artists[spec-sample.artist].1
937  dict({
938    'date_added': None,
939    'external_ids': list([
940    ]),
941    'favorite': True,
942    'is_playable': True,
943    'item_id': '100000002',
944    'media_type': 'artist',
945    'metadata': dict({
946      'chapters': None,
947      'copyright': None,
948      'description': 'Empty biography',
949      'explicit': None,
950      'genres': None,
951      'grouping': None,
952      'images': list([
953        dict({
954          'path': 'ar-100000002',
955          'provider': 'xx-instance-id-xx',
956          'remotely_accessible': False,
957          'type': 'thumb',
958        }),
959        dict({
960          'path': 'http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg',
961          'provider': 'xx-instance-id-xx',
962          'remotely_accessible': True,
963          'type': 'thumb',
964        }),
965      ]),
966      'label': None,
967      'languages': None,
968      'last_refresh': None,
969      'links': None,
970      'lrc_lyrics': None,
971      'lyrics': None,
972      'mood': None,
973      'performers': None,
974      'popularity': None,
975      'preview': None,
976      'release_date': None,
977      'review': None,
978      'style': None,
979    }),
980    'name': 'Synthetic',
981    'position': None,
982    'provider': 'opensubsonic',
983    'provider_mappings': list([
984      dict({
985        'audio_format': dict({
986          'bit_depth': 16,
987          'bit_rate': 0,
988          'channels': 2,
989          'codec_type': '?',
990          'content_type': '?',
991          'output_format_str': '?',
992          'sample_rate': 44100,
993        }),
994        'available': True,
995        'details': None,
996        'in_library': None,
997        'is_unique': None,
998        'item_id': '100000002',
999        'provider_domain': 'opensubsonic',
1000        'provider_instance': 'xx-instance-id-xx',
1001        'url': None,
1002      }),
1003    ]),
1004    'sort_name': 'synthetic',
1005    'translation_key': None,
1006    'uri': 'opensubsonic://artist/100000002',
1007    'version': '',
1008  })
1009# ---
1010# name: test_parse_episode[gonic-sample.episode]
1011  dict({
1012    'date_added': None,
1013    'duration': 1878,
1014    'external_ids': list([
1015    ]),
1016    'favorite': False,
1017    'fully_played': None,
1018    'is_playable': True,
1019    'item_id': 'pd-5$!$pe-1860',
1020    'media_type': 'podcast_episode',
1021    'metadata': dict({
1022      'chapters': None,
1023      'copyright': None,
1024      'description': 'The history of The History of Rome...Why the Western Empire Fell when it did...Some thoughts on the future...Thank you, goodnight.',
1025      'explicit': None,
1026      'genres': None,
1027      'grouping': None,
1028      'images': list([
1029        dict({
1030          'path': 'pd-5',
1031          'provider': 'xx-instance-id-xx',
1032          'remotely_accessible': False,
1033          'type': 'thumb',
1034        }),
1035      ]),
1036      'label': None,
1037      'languages': None,
1038      'last_refresh': None,
1039      'links': None,
1040      'lrc_lyrics': None,
1041      'lyrics': None,
1042      'mood': None,
1043      'performers': None,
1044      'popularity': None,
1045      'preview': None,
1046      'release_date': '2012-05-06T18:18:38+00:00',
1047      'review': None,
1048      'style': None,
1049    }),
1050    'name': '179- The End',
1051    'podcast': dict({
1052      'date_added': None,
1053      'external_ids': list([
1054      ]),
1055      'favorite': False,
1056      'is_playable': True,
1057      'item_id': 'pd-5',
1058      'media_type': 'podcast',
1059      'metadata': dict({
1060        'chapters': None,
1061        'copyright': None,
1062        'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1063        'explicit': None,
1064        'genres': None,
1065        'grouping': None,
1066        'images': list([
1067          dict({
1068            'path': 'pd-5',
1069            'provider': 'xx-instance-id-xx',
1070            'remotely_accessible': False,
1071            'type': 'thumb',
1072          }),
1073        ]),
1074        'label': None,
1075        'languages': None,
1076        'last_refresh': None,
1077        'links': None,
1078        'lrc_lyrics': None,
1079        'lyrics': None,
1080        'mood': None,
1081        'performers': None,
1082        'popularity': None,
1083        'preview': None,
1084        'release_date': None,
1085        'review': None,
1086        'style': None,
1087      }),
1088      'name': 'The History of Rome',
1089      'position': None,
1090      'provider': 'opensubsonic',
1091      'provider_mappings': list([
1092        dict({
1093          'audio_format': dict({
1094            'bit_depth': 16,
1095            'bit_rate': 0,
1096            'channels': 2,
1097            'codec_type': '?',
1098            'content_type': '?',
1099            'output_format_str': '?',
1100            'sample_rate': 44100,
1101          }),
1102          'available': True,
1103          'details': None,
1104          'in_library': None,
1105          'is_unique': None,
1106          'item_id': 'pd-5',
1107          'provider_domain': 'opensubsonic',
1108          'provider_instance': 'xx-instance-id-xx',
1109          'url': None,
1110        }),
1111      ]),
1112      'publisher': None,
1113      'sort_name': 'history of rome, the',
1114      'total_episodes': 5,
1115      'translation_key': None,
1116      'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1117      'version': '',
1118    }),
1119    'position': 5,
1120    'provider': 'opensubsonic',
1121    'provider_mappings': list([
1122      dict({
1123        'audio_format': dict({
1124          'bit_depth': 16,
1125          'bit_rate': 0,
1126          'channels': 2,
1127          'codec_type': '?',
1128          'content_type': '?',
1129          'output_format_str': '?',
1130          'sample_rate': 44100,
1131        }),
1132        'available': True,
1133        'details': None,
1134        'in_library': None,
1135        'is_unique': None,
1136        'item_id': 'pd-5$!$pe-1860',
1137        'provider_domain': 'opensubsonic',
1138        'provider_instance': 'xx-instance-id-xx',
1139        'url': None,
1140      }),
1141    ]),
1142    'resume_position_ms': None,
1143    'sort_name': '179- the end',
1144    'translation_key': None,
1145    'uri': 'opensubsonic://podcast_episode/pd-5$!$pe-1860',
1146    'version': '',
1147  })
1148# ---
1149# name: test_parse_episode[no-cover.episode]
1150  dict({
1151    'date_added': None,
1152    'duration': 0,
1153    'external_ids': list([
1154    ]),
1155    'favorite': False,
1156    'fully_played': None,
1157    'is_playable': True,
1158    'item_id': 'pd-5$!$pe-1860',
1159    'media_type': 'podcast_episode',
1160    'metadata': dict({
1161      'chapters': None,
1162      'copyright': None,
1163      'description': 'The history of The History of Rome...Why the Western Empire Fell when it did...Some thoughts on the future...Thank you, goodnight.',
1164      'explicit': None,
1165      'genres': None,
1166      'grouping': None,
1167      'images': list([
1168        dict({
1169          'path': 'pd-5',
1170          'provider': 'xx-instance-id-xx',
1171          'remotely_accessible': False,
1172          'type': 'thumb',
1173        }),
1174      ]),
1175      'label': None,
1176      'languages': None,
1177      'last_refresh': None,
1178      'links': None,
1179      'lrc_lyrics': None,
1180      'lyrics': None,
1181      'mood': None,
1182      'performers': None,
1183      'popularity': None,
1184      'preview': None,
1185      'release_date': '2012-05-06T18:18:38+00:00',
1186      'review': None,
1187      'style': None,
1188    }),
1189    'name': '179- The End',
1190    'podcast': dict({
1191      'date_added': None,
1192      'external_ids': list([
1193      ]),
1194      'favorite': False,
1195      'is_playable': True,
1196      'item_id': 'pd-5',
1197      'media_type': 'podcast',
1198      'metadata': dict({
1199        'chapters': None,
1200        'copyright': None,
1201        'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1202        'explicit': None,
1203        'genres': None,
1204        'grouping': None,
1205        'images': list([
1206          dict({
1207            'path': 'pd-5',
1208            'provider': 'xx-instance-id-xx',
1209            'remotely_accessible': False,
1210            'type': 'thumb',
1211          }),
1212        ]),
1213        'label': None,
1214        'languages': None,
1215        'last_refresh': None,
1216        'links': None,
1217        'lrc_lyrics': None,
1218        'lyrics': None,
1219        'mood': None,
1220        'performers': None,
1221        'popularity': None,
1222        'preview': None,
1223        'release_date': None,
1224        'review': None,
1225        'style': None,
1226      }),
1227      'name': 'The History of Rome',
1228      'position': None,
1229      'provider': 'opensubsonic',
1230      'provider_mappings': list([
1231        dict({
1232          'audio_format': dict({
1233            'bit_depth': 16,
1234            'bit_rate': 0,
1235            'channels': 2,
1236            'codec_type': '?',
1237            'content_type': '?',
1238            'output_format_str': '?',
1239            'sample_rate': 44100,
1240          }),
1241          'available': True,
1242          'details': None,
1243          'in_library': None,
1244          'is_unique': None,
1245          'item_id': 'pd-5',
1246          'provider_domain': 'opensubsonic',
1247          'provider_instance': 'xx-instance-id-xx',
1248          'url': None,
1249        }),
1250      ]),
1251      'publisher': None,
1252      'sort_name': 'history of rome, the',
1253      'total_episodes': 5,
1254      'translation_key': None,
1255      'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1256      'version': '',
1257    }),
1258    'position': 5,
1259    'provider': 'opensubsonic',
1260    'provider_mappings': list([
1261      dict({
1262        'audio_format': dict({
1263          'bit_depth': 16,
1264          'bit_rate': 0,
1265          'channels': 2,
1266          'codec_type': '?',
1267          'content_type': '?',
1268          'output_format_str': '?',
1269          'sample_rate': 44100,
1270        }),
1271        'available': True,
1272        'details': None,
1273        'in_library': None,
1274        'is_unique': None,
1275        'item_id': 'pd-5$!$pe-1860',
1276        'provider_domain': 'opensubsonic',
1277        'provider_instance': 'xx-instance-id-xx',
1278        'url': None,
1279      }),
1280    ]),
1281    'resume_position_ms': None,
1282    'sort_name': '179- the end',
1283    'translation_key': None,
1284    'uri': 'opensubsonic://podcast_episode/pd-5$!$pe-1860',
1285    'version': '',
1286  })
1287# ---
1288# name: test_parse_episode[no-duration.episode]
1289  dict({
1290    'date_added': None,
1291    'duration': 0,
1292    'external_ids': list([
1293    ]),
1294    'favorite': False,
1295    'fully_played': None,
1296    'is_playable': True,
1297    'item_id': 'pd-5$!$pe-1860',
1298    'media_type': 'podcast_episode',
1299    'metadata': dict({
1300      'chapters': None,
1301      'copyright': None,
1302      'description': 'The history of The History of Rome...Why the Western Empire Fell when it did...Some thoughts on the future...Thank you, goodnight.',
1303      'explicit': None,
1304      'genres': None,
1305      'grouping': None,
1306      'images': list([
1307        dict({
1308          'path': 'pd-5',
1309          'provider': 'xx-instance-id-xx',
1310          'remotely_accessible': False,
1311          'type': 'thumb',
1312        }),
1313      ]),
1314      'label': None,
1315      'languages': None,
1316      'last_refresh': None,
1317      'links': None,
1318      'lrc_lyrics': None,
1319      'lyrics': None,
1320      'mood': None,
1321      'performers': None,
1322      'popularity': None,
1323      'preview': None,
1324      'release_date': '2012-05-06T18:18:38+00:00',
1325      'review': None,
1326      'style': None,
1327    }),
1328    'name': '179- The End',
1329    'podcast': dict({
1330      'date_added': None,
1331      'external_ids': list([
1332      ]),
1333      'favorite': False,
1334      'is_playable': True,
1335      'item_id': 'pd-5',
1336      'media_type': 'podcast',
1337      'metadata': dict({
1338        'chapters': None,
1339        'copyright': None,
1340        'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1341        'explicit': None,
1342        'genres': None,
1343        'grouping': None,
1344        'images': list([
1345          dict({
1346            'path': 'pd-5',
1347            'provider': 'xx-instance-id-xx',
1348            'remotely_accessible': False,
1349            'type': 'thumb',
1350          }),
1351        ]),
1352        'label': None,
1353        'languages': None,
1354        'last_refresh': None,
1355        'links': None,
1356        'lrc_lyrics': None,
1357        'lyrics': None,
1358        'mood': None,
1359        'performers': None,
1360        'popularity': None,
1361        'preview': None,
1362        'release_date': None,
1363        'review': None,
1364        'style': None,
1365      }),
1366      'name': 'The History of Rome',
1367      'position': None,
1368      'provider': 'opensubsonic',
1369      'provider_mappings': list([
1370        dict({
1371          'audio_format': dict({
1372            'bit_depth': 16,
1373            'bit_rate': 0,
1374            'channels': 2,
1375            'codec_type': '?',
1376            'content_type': '?',
1377            'output_format_str': '?',
1378            'sample_rate': 44100,
1379          }),
1380          'available': True,
1381          'details': None,
1382          'in_library': None,
1383          'is_unique': None,
1384          'item_id': 'pd-5',
1385          'provider_domain': 'opensubsonic',
1386          'provider_instance': 'xx-instance-id-xx',
1387          'url': None,
1388        }),
1389      ]),
1390      'publisher': None,
1391      'sort_name': 'history of rome, the',
1392      'total_episodes': 5,
1393      'translation_key': None,
1394      'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1395      'version': '',
1396    }),
1397    'position': 5,
1398    'provider': 'opensubsonic',
1399    'provider_mappings': list([
1400      dict({
1401        'audio_format': dict({
1402          'bit_depth': 16,
1403          'bit_rate': 0,
1404          'channels': 2,
1405          'codec_type': '?',
1406          'content_type': '?',
1407          'output_format_str': '?',
1408          'sample_rate': 44100,
1409        }),
1410        'available': True,
1411        'details': None,
1412        'in_library': None,
1413        'is_unique': None,
1414        'item_id': 'pd-5$!$pe-1860',
1415        'provider_domain': 'opensubsonic',
1416        'provider_instance': 'xx-instance-id-xx',
1417        'url': None,
1418      }),
1419    ]),
1420    'resume_position_ms': None,
1421    'sort_name': '179- the end',
1422    'translation_key': None,
1423    'uri': 'opensubsonic://podcast_episode/pd-5$!$pe-1860',
1424    'version': '',
1425  })
1426# ---
1427# name: test_parse_playlist[gonic-sample.playlist]
1428  dict({
1429    'date_added': None,
1430    'external_ids': list([
1431    ]),
1432    'favorite': False,
1433    'is_editable': True,
1434    'is_playable': True,
1435    'item_id': 'Mi8xNzQzNzg5NTk5MzM1LTE3NDM3ODk1OTkzMzUubTN1',
1436    'media_type': 'playlist',
1437    'metadata': dict({
1438      'chapters': None,
1439      'copyright': None,
1440      'description': None,
1441      'explicit': None,
1442      'genres': None,
1443      'grouping': None,
1444      'images': list([
1445        dict({
1446          'path': 'al-2250',
1447          'provider': 'xx-instance-id-xx',
1448          'remotely_accessible': False,
1449          'type': 'thumb',
1450        }),
1451      ]),
1452      'label': None,
1453      'languages': None,
1454      'last_refresh': None,
1455      'links': None,
1456      'lrc_lyrics': None,
1457      'lyrics': None,
1458      'mood': None,
1459      'performers': None,
1460      'popularity': None,
1461      'preview': None,
1462      'release_date': None,
1463      'review': None,
1464      'style': None,
1465    }),
1466    'name': "Guns N' Roses - Use Your Illusion",
1467    'owner': '',
1468    'position': None,
1469    'provider': 'opensubsonic',
1470    'provider_mappings': list([
1471      dict({
1472        'audio_format': dict({
1473          'bit_depth': 16,
1474          'bit_rate': 0,
1475          'channels': 2,
1476          'codec_type': '?',
1477          'content_type': '?',
1478          'output_format_str': '?',
1479          'sample_rate': 44100,
1480        }),
1481        'available': True,
1482        'details': None,
1483        'in_library': None,
1484        'is_unique': None,
1485        'item_id': 'Mi8xNzQzNzg5NTk5MzM1LTE3NDM3ODk1OTkzMzUubTN1',
1486        'provider_domain': 'opensubsonic',
1487        'provider_instance': 'xx-instance-id-xx',
1488        'url': None,
1489      }),
1490    ]),
1491    'sort_name': "guns n' roses - use your illusion",
1492    'translation_key': None,
1493    'uri': 'opensubsonic://playlist/Mi8xNzQzNzg5NTk5MzM1LTE3NDM3ODk1OTkzMzUubTN1',
1494    'version': '',
1495  })
1496# ---
1497# name: test_parse_podcast[gonic-sample.podcast]
1498  dict({
1499    'date_added': None,
1500    'external_ids': list([
1501    ]),
1502    'favorite': False,
1503    'is_playable': True,
1504    'item_id': 'pd-5',
1505    'media_type': 'podcast',
1506    'metadata': dict({
1507      'chapters': None,
1508      'copyright': None,
1509      'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1510      'explicit': None,
1511      'genres': None,
1512      'grouping': None,
1513      'images': list([
1514        dict({
1515          'path': 'pd-5',
1516          'provider': 'xx-instance-id-xx',
1517          'remotely_accessible': False,
1518          'type': 'thumb',
1519        }),
1520      ]),
1521      'label': None,
1522      'languages': None,
1523      'last_refresh': None,
1524      'links': None,
1525      'lrc_lyrics': None,
1526      'lyrics': None,
1527      'mood': None,
1528      'performers': None,
1529      'popularity': None,
1530      'preview': None,
1531      'release_date': None,
1532      'review': None,
1533      'style': None,
1534    }),
1535    'name': 'The History of Rome',
1536    'position': None,
1537    'provider': 'opensubsonic',
1538    'provider_mappings': list([
1539      dict({
1540        'audio_format': dict({
1541          'bit_depth': 16,
1542          'bit_rate': 0,
1543          'channels': 2,
1544          'codec_type': '?',
1545          'content_type': '?',
1546          'output_format_str': '?',
1547          'sample_rate': 44100,
1548        }),
1549        'available': True,
1550        'details': None,
1551        'in_library': None,
1552        'is_unique': None,
1553        'item_id': 'pd-5',
1554        'provider_domain': 'opensubsonic',
1555        'provider_instance': 'xx-instance-id-xx',
1556        'url': None,
1557      }),
1558    ]),
1559    'publisher': None,
1560    'sort_name': 'history of rome, the',
1561    'total_episodes': 5,
1562    'translation_key': None,
1563    'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1564    'version': '',
1565  })
1566# ---
1567# name: test_parse_podcast[no-episodes.podcast]
1568  dict({
1569    'date_added': None,
1570    'external_ids': list([
1571    ]),
1572    'favorite': False,
1573    'is_playable': True,
1574    'item_id': 'pd-5',
1575    'media_type': 'podcast',
1576    'metadata': dict({
1577      'chapters': None,
1578      'copyright': None,
1579      'description': 'A weekly podcast tracing the rise, decline and fall of the Roman Empire. Now complete!',
1580      'explicit': None,
1581      'genres': None,
1582      'grouping': None,
1583      'images': list([
1584        dict({
1585          'path': 'pd-5',
1586          'provider': 'xx-instance-id-xx',
1587          'remotely_accessible': False,
1588          'type': 'thumb',
1589        }),
1590      ]),
1591      'label': None,
1592      'languages': None,
1593      'last_refresh': None,
1594      'links': None,
1595      'lrc_lyrics': None,
1596      'lyrics': None,
1597      'mood': None,
1598      'performers': None,
1599      'popularity': None,
1600      'preview': None,
1601      'release_date': None,
1602      'review': None,
1603      'style': None,
1604    }),
1605    'name': 'The History of Rome',
1606    'position': None,
1607    'provider': 'opensubsonic',
1608    'provider_mappings': list([
1609      dict({
1610        'audio_format': dict({
1611          'bit_depth': 16,
1612          'bit_rate': 0,
1613          'channels': 2,
1614          'codec_type': '?',
1615          'content_type': '?',
1616          'output_format_str': '?',
1617          'sample_rate': 44100,
1618        }),
1619        'available': True,
1620        'details': None,
1621        'in_library': None,
1622        'is_unique': None,
1623        'item_id': 'pd-5',
1624        'provider_domain': 'opensubsonic',
1625        'provider_instance': 'xx-instance-id-xx',
1626        'url': None,
1627      }),
1628    ]),
1629    'publisher': None,
1630    'sort_name': 'history of rome, the',
1631    'total_episodes': 0,
1632    'translation_key': None,
1633    'uri': 'http://feeds.feedburner.com/TheHistoryOfRome',
1634    'version': '',
1635  })
1636# ---
1637# name: test_parse_track[missing-items.track]
1638  dict({
1639    'album': dict({
1640      'available': True,
1641      'external_ids': list([
1642      ]),
1643      'image': None,
1644      'is_playable': True,
1645      'item_id': 'e8a0685e3f3ec6f251649af2b58b8617',
1646      'media_type': 'album',
1647      'name': 'Live at The Casbah - 2005-04-29',
1648      'provider': 'xx-instance-id-xx',
1649      'sort_name': 'live at the casbah - 2005-04-29',
1650      'translation_key': None,
1651      'uri': 'xx-instance-id-xx://album/e8a0685e3f3ec6f251649af2b58b8617',
1652      'version': '',
1653      'year': None,
1654    }),
1655    'artists': list([
1656      dict({
1657        'date_added': None,
1658        'external_ids': list([
1659        ]),
1660        'favorite': False,
1661        'is_playable': True,
1662        'item_id': 'fake_artist_unknown',
1663        'media_type': 'artist',
1664        'metadata': dict({
1665          'chapters': None,
1666          'copyright': None,
1667          'description': None,
1668          'explicit': None,
1669          'genres': None,
1670          'grouping': None,
1671          'images': None,
1672          'label': None,
1673          'languages': None,
1674          'last_refresh': None,
1675          'links': None,
1676          'lrc_lyrics': None,
1677          'lyrics': None,
1678          'mood': None,
1679          'performers': None,
1680          'popularity': None,
1681          'preview': None,
1682          'release_date': None,
1683          'review': None,
1684          'style': None,
1685        }),
1686        'name': '[unknown]',
1687        'position': None,
1688        'provider': 'xx-instance-id-xx',
1689        'provider_mappings': list([
1690          dict({
1691            'audio_format': dict({
1692              'bit_depth': 16,
1693              'bit_rate': 0,
1694              'channels': 2,
1695              'codec_type': '?',
1696              'content_type': '?',
1697              'output_format_str': '?',
1698              'sample_rate': 44100,
1699            }),
1700            'available': True,
1701            'details': None,
1702            'in_library': None,
1703            'is_unique': None,
1704            'item_id': 'fake_artist_unknown',
1705            'provider_domain': 'opensubsonic',
1706            'provider_instance': 'xx-instance-id-xx',
1707            'url': None,
1708          }),
1709        ]),
1710        'sort_name': 'unknown]',
1711        'translation_key': None,
1712        'uri': 'xx-instance-id-xx://artist/fake_artist_unknown',
1713        'version': '',
1714      }),
1715    ]),
1716    'date_added': None,
1717    'disc_number': 0,
1718    'duration': 0,
1719    'external_ids': list([
1720      list([
1721        'musicbrainz_recordingid',
1722        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
1723      ]),
1724    ]),
1725    'favorite': True,
1726    'is_playable': True,
1727    'item_id': '082f435a363c32c57d5edb6a678a28d4',
1728    'last_played': 0,
1729    'media_type': 'track',
1730    'metadata': dict({
1731      'chapters': None,
1732      'copyright': None,
1733      'description': None,
1734      'explicit': True,
1735      'genres': list([
1736        'East coast',
1737        'Hip-Hop',
1738      ]),
1739      'grouping': None,
1740      'images': None,
1741      'label': None,
1742      'languages': None,
1743      'last_refresh': None,
1744      'links': None,
1745      'lrc_lyrics': None,
1746      'lyrics': None,
1747      'mood': 'slow',
1748      'performers': list([
1749        'Artist 3',
1750        'Artist 4',
1751        'Artist 5',
1752      ]),
1753      'popularity': None,
1754      'preview': None,
1755      'release_date': None,
1756      'review': None,
1757      'style': None,
1758    }),
1759    'name': '"polar expedition"',
1760    'position': None,
1761    'provider': 'xx-instance-id-xx',
1762    'provider_mappings': list([
1763      dict({
1764        'audio_format': dict({
1765          'bit_depth': 16,
1766          'bit_rate': 0,
1767          'channels': 2,
1768          'codec_type': '?',
1769          'content_type': '?',
1770          'output_format_str': '?',
1771          'sample_rate': 44100,
1772        }),
1773        'available': True,
1774        'details': None,
1775        'in_library': None,
1776        'is_unique': None,
1777        'item_id': '082f435a363c32c57d5edb6a678a28d4',
1778        'provider_domain': 'opensubsonic',
1779        'provider_instance': 'xx-instance-id-xx',
1780        'url': None,
1781      }),
1782    ]),
1783    'sort_name': 'Polar expedition',
1784    'track_number': 0,
1785    'translation_key': None,
1786    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
1787    'version': '',
1788  })
1789# ---
1790# name: test_parse_track[missing-items.track].1
1791  dict({
1792    'album': dict({
1793      'artist': 'pornophonique',
1794      'artistId': '97e0398acf63f9fb930d7d4ce209a52b',
1795      'artists': list([
1796        dict({
1797          'id': 'ar-1',
1798          'name': 'Artist 1',
1799        }),
1800        dict({
1801          'id': 'ar-2',
1802          'name': 'Artist 2',
1803        }),
1804      ]),
1805      'coverArt': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
1806      'created': '2023-03-10T02:19:35.784818075Z',
1807      'discTitles': list([
1808        dict({
1809          'disc': 0,
1810          'title': 'Disc 0 title',
1811        }),
1812        dict({
1813          'disc': 2,
1814          'title': 'Disc 1 title',
1815        }),
1816      ]),
1817      'displayArtist': 'Artist 1 feat. Artist 2',
1818      'duration': 1954,
1819      'explicitStatus': 'explicit',
1820      'genre': 'Hip-Hop',
1821      'genres': list([
1822        dict({
1823          'name': 'Hip-Hop',
1824        }),
1825        dict({
1826          'name': 'East coast',
1827        }),
1828      ]),
1829      'id': 'e8a0685e3f3ec6f251649af2b58b8617',
1830      'isCompilation': False,
1831      'moods': list([
1832        'slow',
1833        'cool',
1834      ]),
1835      'musicBrainzId': '189002e7-3285-4e2e-92a3-7f6c30d407a2',
1836      'name': 'Live at The Casbah - 2005-04-29',
1837      'originalReleaseDate': dict({
1838        'day': 10,
1839        'month': 3,
1840        'year': 2001,
1841      }),
1842      'playCount': 97,
1843      'played': '2023-03-28T00:45:13Z',
1844      'releaseDate': dict({
1845        'day': 10,
1846        'month': 3,
1847        'year': 2001,
1848      }),
1849      'releaseTypes': list([
1850        'Album',
1851        'Remixes',
1852      ]),
1853      'songCount': 8,
1854      'sortName': 'lagerfeuer (8-bit)',
1855      'starred': '2023-03-22T01:51:06Z',
1856      'userRating': 4,
1857      'version': 'Deluxe Edition',
1858      'year': 2007,
1859    }),
1860    'artists': list([
1861      dict({
1862        'date_added': None,
1863        'external_ids': list([
1864        ]),
1865        'favorite': False,
1866        'is_playable': True,
1867        'item_id': 'fake_artist_unknown',
1868        'media_type': 'artist',
1869        'metadata': dict({
1870          'chapters': None,
1871          'copyright': None,
1872          'description': None,
1873          'explicit': None,
1874          'genres': None,
1875          'grouping': None,
1876          'images': None,
1877          'label': None,
1878          'languages': None,
1879          'last_refresh': None,
1880          'links': None,
1881          'lrc_lyrics': None,
1882          'lyrics': None,
1883          'mood': None,
1884          'performers': None,
1885          'popularity': None,
1886          'preview': None,
1887          'release_date': None,
1888          'review': None,
1889          'style': None,
1890        }),
1891        'name': '[unknown]',
1892        'position': None,
1893        'provider': 'xx-instance-id-xx',
1894        'provider_mappings': list([
1895          dict({
1896            'audio_format': dict({
1897              'bit_depth': 16,
1898              'bit_rate': 0,
1899              'channels': 2,
1900              'codec_type': '?',
1901              'content_type': '?',
1902              'output_format_str': '?',
1903              'sample_rate': 44100,
1904            }),
1905            'available': True,
1906            'details': None,
1907            'in_library': None,
1908            'is_unique': None,
1909            'item_id': 'fake_artist_unknown',
1910            'provider_domain': 'opensubsonic',
1911            'provider_instance': 'xx-instance-id-xx',
1912            'url': None,
1913          }),
1914        ]),
1915        'sort_name': 'unknown]',
1916        'translation_key': None,
1917        'uri': 'xx-instance-id-xx://artist/fake_artist_unknown',
1918        'version': '',
1919      }),
1920    ]),
1921    'date_added': None,
1922    'disc_number': 0,
1923    'duration': 0,
1924    'external_ids': list([
1925      list([
1926        'musicbrainz_recordingid',
1927        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
1928      ]),
1929    ]),
1930    'favorite': True,
1931    'is_playable': True,
1932    'item_id': '082f435a363c32c57d5edb6a678a28d4',
1933    'last_played': 0,
1934    'media_type': 'track',
1935    'metadata': dict({
1936      'chapters': None,
1937      'copyright': None,
1938      'description': None,
1939      'explicit': True,
1940      'genres': list([
1941        'East coast',
1942        'Hip-Hop',
1943      ]),
1944      'grouping': None,
1945      'images': None,
1946      'label': None,
1947      'languages': None,
1948      'last_refresh': None,
1949      'links': None,
1950      'lrc_lyrics': None,
1951      'lyrics': None,
1952      'mood': 'slow',
1953      'performers': list([
1954        'Artist 3',
1955        'Artist 4',
1956        'Artist 5',
1957      ]),
1958      'popularity': None,
1959      'preview': None,
1960      'release_date': None,
1961      'review': None,
1962      'style': None,
1963    }),
1964    'name': '"polar expedition"',
1965    'position': None,
1966    'provider': 'xx-instance-id-xx',
1967    'provider_mappings': list([
1968      dict({
1969        'audio_format': dict({
1970          'bit_depth': 16,
1971          'bit_rate': 0,
1972          'channels': 2,
1973          'codec_type': '?',
1974          'content_type': '?',
1975          'output_format_str': '?',
1976          'sample_rate': 44100,
1977        }),
1978        'available': True,
1979        'details': None,
1980        'in_library': None,
1981        'is_unique': None,
1982        'item_id': '082f435a363c32c57d5edb6a678a28d4',
1983        'provider_domain': 'opensubsonic',
1984        'provider_instance': 'xx-instance-id-xx',
1985        'url': None,
1986      }),
1987    ]),
1988    'sort_name': 'Polar expedition',
1989    'track_number': 0,
1990    'translation_key': None,
1991    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
1992    'version': '',
1993  })
1994# ---
1995# name: test_parse_track[navi-various.track]
1996  dict({
1997    'album': dict({
1998      'available': True,
1999      'external_ids': list([
2000      ]),
2001      'image': None,
2002      'is_playable': True,
2003      'item_id': 'e8a0685e3f3ec6f251649af2b58b8617',
2004      'media_type': 'album',
2005      'name': 'Live at The Casbah - 2005-04-29',
2006      'provider': 'xx-instance-id-xx',
2007      'sort_name': 'live at the casbah - 2005-04-29',
2008      'translation_key': None,
2009      'uri': 'xx-instance-id-xx://album/e8a0685e3f3ec6f251649af2b58b8617',
2010      'version': '',
2011      'year': None,
2012    }),
2013    'artists': list([
2014      dict({
2015        'date_added': None,
2016        'external_ids': list([
2017        ]),
2018        'favorite': False,
2019        'is_playable': True,
2020        'item_id': 'MA-NAVIDROME-The New Deal',
2021        'media_type': 'artist',
2022        'metadata': dict({
2023          'chapters': None,
2024          'copyright': None,
2025          'description': None,
2026          'explicit': None,
2027          'genres': None,
2028          'grouping': None,
2029          'images': None,
2030          'label': None,
2031          'languages': None,
2032          'last_refresh': None,
2033          'links': None,
2034          'lrc_lyrics': None,
2035          'lyrics': None,
2036          'mood': None,
2037          'performers': None,
2038          'popularity': None,
2039          'preview': None,
2040          'release_date': None,
2041          'review': None,
2042          'style': None,
2043        }),
2044        'name': 'The New Deal',
2045        'position': None,
2046        'provider': 'opensubsonic',
2047        'provider_mappings': list([
2048          dict({
2049            'audio_format': dict({
2050              'bit_depth': 16,
2051              'bit_rate': 0,
2052              'channels': 2,
2053              'codec_type': '?',
2054              'content_type': '?',
2055              'output_format_str': '?',
2056              'sample_rate': 44100,
2057            }),
2058            'available': True,
2059            'details': None,
2060            'in_library': None,
2061            'is_unique': None,
2062            'item_id': 'MA-NAVIDROME-The New Deal',
2063            'provider_domain': 'opensubsonic',
2064            'provider_instance': 'xx-instance-id-xx',
2065            'url': None,
2066          }),
2067        ]),
2068        'sort_name': 'new deal, the',
2069        'translation_key': None,
2070        'uri': 'opensubsonic://artist/MA-NAVIDROME-The New Deal',
2071        'version': '',
2072      }),
2073    ]),
2074    'date_added': None,
2075    'disc_number': 0,
2076    'duration': 0,
2077    'external_ids': list([
2078      list([
2079        'musicbrainz_recordingid',
2080        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2081      ]),
2082    ]),
2083    'favorite': True,
2084    'is_playable': True,
2085    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2086    'last_played': 0,
2087    'media_type': 'track',
2088    'metadata': dict({
2089      'chapters': None,
2090      'copyright': None,
2091      'description': None,
2092      'explicit': True,
2093      'genres': list([
2094        'East coast',
2095        'Hip-Hop',
2096      ]),
2097      'grouping': None,
2098      'images': None,
2099      'label': None,
2100      'languages': None,
2101      'last_refresh': None,
2102      'links': None,
2103      'lrc_lyrics': None,
2104      'lyrics': None,
2105      'mood': 'slow',
2106      'performers': list([
2107        'Artist 3',
2108        'Artist 4',
2109        'Artist 5',
2110      ]),
2111      'popularity': None,
2112      'preview': None,
2113      'release_date': None,
2114      'review': None,
2115      'style': None,
2116    }),
2117    'name': '"polar expedition"',
2118    'position': None,
2119    'provider': 'xx-instance-id-xx',
2120    'provider_mappings': list([
2121      dict({
2122        'audio_format': dict({
2123          'bit_depth': 16,
2124          'bit_rate': 0,
2125          'channels': 2,
2126          'codec_type': '?',
2127          'content_type': '?',
2128          'output_format_str': '?',
2129          'sample_rate': 44100,
2130        }),
2131        'available': True,
2132        'details': None,
2133        'in_library': None,
2134        'is_unique': None,
2135        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2136        'provider_domain': 'opensubsonic',
2137        'provider_instance': 'xx-instance-id-xx',
2138        'url': None,
2139      }),
2140    ]),
2141    'sort_name': 'Polar expedition',
2142    'track_number': 0,
2143    'translation_key': None,
2144    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2145    'version': '',
2146  })
2147# ---
2148# name: test_parse_track[navi-various.track].1
2149  dict({
2150    'album': dict({
2151      'artist': 'pornophonique',
2152      'artistId': '97e0398acf63f9fb930d7d4ce209a52b',
2153      'artists': list([
2154        dict({
2155          'id': 'ar-1',
2156          'name': 'Artist 1',
2157        }),
2158        dict({
2159          'id': 'ar-2',
2160          'name': 'Artist 2',
2161        }),
2162      ]),
2163      'coverArt': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
2164      'created': '2023-03-10T02:19:35.784818075Z',
2165      'discTitles': list([
2166        dict({
2167          'disc': 0,
2168          'title': 'Disc 0 title',
2169        }),
2170        dict({
2171          'disc': 2,
2172          'title': 'Disc 1 title',
2173        }),
2174      ]),
2175      'displayArtist': 'Artist 1 feat. Artist 2',
2176      'duration': 1954,
2177      'explicitStatus': 'explicit',
2178      'genre': 'Hip-Hop',
2179      'genres': list([
2180        dict({
2181          'name': 'Hip-Hop',
2182        }),
2183        dict({
2184          'name': 'East coast',
2185        }),
2186      ]),
2187      'id': 'e8a0685e3f3ec6f251649af2b58b8617',
2188      'isCompilation': False,
2189      'moods': list([
2190        'slow',
2191        'cool',
2192      ]),
2193      'musicBrainzId': '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2194      'name': 'Live at The Casbah - 2005-04-29',
2195      'originalReleaseDate': dict({
2196        'day': 10,
2197        'month': 3,
2198        'year': 2001,
2199      }),
2200      'playCount': 97,
2201      'played': '2023-03-28T00:45:13Z',
2202      'releaseDate': dict({
2203        'day': 10,
2204        'month': 3,
2205        'year': 2001,
2206      }),
2207      'releaseTypes': list([
2208        'Album',
2209        'Remixes',
2210      ]),
2211      'songCount': 8,
2212      'sortName': 'lagerfeuer (8-bit)',
2213      'starred': '2023-03-22T01:51:06Z',
2214      'userRating': 4,
2215      'version': 'Deluxe Edition',
2216      'year': 2007,
2217    }),
2218    'artists': list([
2219      dict({
2220        'date_added': None,
2221        'external_ids': list([
2222        ]),
2223        'favorite': False,
2224        'is_playable': True,
2225        'item_id': 'MA-NAVIDROME-The New Deal',
2226        'media_type': 'artist',
2227        'metadata': dict({
2228          'chapters': None,
2229          'copyright': None,
2230          'description': None,
2231          'explicit': None,
2232          'genres': None,
2233          'grouping': None,
2234          'images': None,
2235          'label': None,
2236          'languages': None,
2237          'last_refresh': None,
2238          'links': None,
2239          'lrc_lyrics': None,
2240          'lyrics': None,
2241          'mood': None,
2242          'performers': None,
2243          'popularity': None,
2244          'preview': None,
2245          'release_date': None,
2246          'review': None,
2247          'style': None,
2248        }),
2249        'name': 'The New Deal',
2250        'position': None,
2251        'provider': 'opensubsonic',
2252        'provider_mappings': list([
2253          dict({
2254            'audio_format': dict({
2255              'bit_depth': 16,
2256              'bit_rate': 0,
2257              'channels': 2,
2258              'codec_type': '?',
2259              'content_type': '?',
2260              'output_format_str': '?',
2261              'sample_rate': 44100,
2262            }),
2263            'available': True,
2264            'details': None,
2265            'in_library': None,
2266            'is_unique': None,
2267            'item_id': 'MA-NAVIDROME-The New Deal',
2268            'provider_domain': 'opensubsonic',
2269            'provider_instance': 'xx-instance-id-xx',
2270            'url': None,
2271          }),
2272        ]),
2273        'sort_name': 'new deal, the',
2274        'translation_key': None,
2275        'uri': 'opensubsonic://artist/MA-NAVIDROME-The New Deal',
2276        'version': '',
2277      }),
2278    ]),
2279    'date_added': None,
2280    'disc_number': 0,
2281    'duration': 0,
2282    'external_ids': list([
2283      list([
2284        'musicbrainz_recordingid',
2285        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2286      ]),
2287    ]),
2288    'favorite': True,
2289    'is_playable': True,
2290    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2291    'last_played': 0,
2292    'media_type': 'track',
2293    'metadata': dict({
2294      'chapters': None,
2295      'copyright': None,
2296      'description': None,
2297      'explicit': True,
2298      'genres': list([
2299        'East coast',
2300        'Hip-Hop',
2301      ]),
2302      'grouping': None,
2303      'images': None,
2304      'label': None,
2305      'languages': None,
2306      'last_refresh': None,
2307      'links': None,
2308      'lrc_lyrics': None,
2309      'lyrics': None,
2310      'mood': 'slow',
2311      'performers': list([
2312        'Artist 3',
2313        'Artist 4',
2314        'Artist 5',
2315      ]),
2316      'popularity': None,
2317      'preview': None,
2318      'release_date': None,
2319      'review': None,
2320      'style': None,
2321    }),
2322    'name': '"polar expedition"',
2323    'position': None,
2324    'provider': 'xx-instance-id-xx',
2325    'provider_mappings': list([
2326      dict({
2327        'audio_format': dict({
2328          'bit_depth': 16,
2329          'bit_rate': 0,
2330          'channels': 2,
2331          'codec_type': '?',
2332          'content_type': '?',
2333          'output_format_str': '?',
2334          'sample_rate': 44100,
2335        }),
2336        'available': True,
2337        'details': None,
2338        'in_library': None,
2339        'is_unique': None,
2340        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2341        'provider_domain': 'opensubsonic',
2342        'provider_instance': 'xx-instance-id-xx',
2343        'url': None,
2344      }),
2345    ]),
2346    'sort_name': 'Polar expedition',
2347    'track_number': 0,
2348    'translation_key': None,
2349    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2350    'version': '',
2351  })
2352# ---
2353# name: test_parse_track[spec-child.track]
2354  dict({
2355    'album': dict({
2356      'available': True,
2357      'external_ids': list([
2358      ]),
2359      'image': None,
2360      'is_playable': True,
2361      'item_id': 'e8a0685e3f3ec6f251649af2b58b8617',
2362      'media_type': 'album',
2363      'name': 'Live at The Casbah - 2005-04-29',
2364      'provider': 'xx-instance-id-xx',
2365      'sort_name': 'live at the casbah - 2005-04-29',
2366      'translation_key': None,
2367      'uri': 'xx-instance-id-xx://album/e8a0685e3f3ec6f251649af2b58b8617',
2368      'version': '',
2369      'year': None,
2370    }),
2371    'artists': list([
2372      dict({
2373        'available': True,
2374        'external_ids': list([
2375        ]),
2376        'image': None,
2377        'is_playable': True,
2378        'item_id': '97e0398acf63f9fb930d7d4ce209a52b',
2379        'media_type': 'artist',
2380        'name': 'The New Deal',
2381        'provider': 'xx-instance-id-xx',
2382        'sort_name': 'new deal, the',
2383        'translation_key': None,
2384        'uri': 'xx-instance-id-xx://artist/97e0398acf63f9fb930d7d4ce209a52b',
2385        'version': '',
2386        'year': None,
2387      }),
2388      dict({
2389        'available': True,
2390        'external_ids': list([
2391        ]),
2392        'image': None,
2393        'is_playable': True,
2394        'item_id': 'ar-1',
2395        'media_type': 'artist',
2396        'name': 'Artist 1',
2397        'provider': 'xx-instance-id-xx',
2398        'sort_name': 'artist 1',
2399        'translation_key': None,
2400        'uri': 'xx-instance-id-xx://artist/ar-1',
2401        'version': '',
2402        'year': None,
2403      }),
2404      dict({
2405        'available': True,
2406        'external_ids': list([
2407        ]),
2408        'image': None,
2409        'is_playable': True,
2410        'item_id': 'ar-2',
2411        'media_type': 'artist',
2412        'name': 'Artist 2',
2413        'provider': 'xx-instance-id-xx',
2414        'sort_name': 'artist 2',
2415        'translation_key': None,
2416        'uri': 'xx-instance-id-xx://artist/ar-2',
2417        'version': '',
2418        'year': None,
2419      }),
2420    ]),
2421    'date_added': None,
2422    'disc_number': 1,
2423    'duration': 178,
2424    'external_ids': list([
2425      list([
2426        'musicbrainz_recordingid',
2427        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2428      ]),
2429    ]),
2430    'favorite': True,
2431    'is_playable': True,
2432    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2433    'last_played': 0,
2434    'media_type': 'track',
2435    'metadata': dict({
2436      'chapters': None,
2437      'copyright': None,
2438      'description': None,
2439      'explicit': True,
2440      'genres': list([
2441        'East coast',
2442        'Hip-Hop',
2443      ]),
2444      'grouping': None,
2445      'images': None,
2446      'label': None,
2447      'languages': None,
2448      'last_refresh': None,
2449      'links': None,
2450      'lrc_lyrics': None,
2451      'lyrics': None,
2452      'mood': 'slow',
2453      'performers': list([
2454        'Artist 3',
2455        'Artist 4',
2456        'Artist 5',
2457      ]),
2458      'popularity': None,
2459      'preview': None,
2460      'release_date': None,
2461      'review': None,
2462      'style': None,
2463    }),
2464    'name': '"polar expedition"',
2465    'position': None,
2466    'provider': 'xx-instance-id-xx',
2467    'provider_mappings': list([
2468      dict({
2469        'audio_format': dict({
2470          'bit_depth': 16,
2471          'bit_rate': 880,
2472          'channels': 2,
2473          'codec_type': '?',
2474          'content_type': 'flac',
2475          'output_format_str': 'flac',
2476          'sample_rate': 44100,
2477        }),
2478        'available': True,
2479        'details': None,
2480        'in_library': None,
2481        'is_unique': None,
2482        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2483        'provider_domain': 'opensubsonic',
2484        'provider_instance': 'xx-instance-id-xx',
2485        'url': None,
2486      }),
2487    ]),
2488    'sort_name': 'Polar expedition',
2489    'track_number': 4,
2490    'translation_key': None,
2491    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2492    'version': '',
2493  })
2494# ---
2495# name: test_parse_track[spec-child.track].1
2496  dict({
2497    'album': dict({
2498      'artist': 'pornophonique',
2499      'artistId': '97e0398acf63f9fb930d7d4ce209a52b',
2500      'artists': list([
2501        dict({
2502          'id': 'ar-1',
2503          'name': 'Artist 1',
2504        }),
2505        dict({
2506          'id': 'ar-2',
2507          'name': 'Artist 2',
2508        }),
2509      ]),
2510      'coverArt': 'al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8',
2511      'created': '2023-03-10T02:19:35.784818075Z',
2512      'discTitles': list([
2513        dict({
2514          'disc': 0,
2515          'title': 'Disc 0 title',
2516        }),
2517        dict({
2518          'disc': 2,
2519          'title': 'Disc 1 title',
2520        }),
2521      ]),
2522      'displayArtist': 'Artist 1 feat. Artist 2',
2523      'duration': 1954,
2524      'explicitStatus': 'explicit',
2525      'genre': 'Hip-Hop',
2526      'genres': list([
2527        dict({
2528          'name': 'Hip-Hop',
2529        }),
2530        dict({
2531          'name': 'East coast',
2532        }),
2533      ]),
2534      'id': 'e8a0685e3f3ec6f251649af2b58b8617',
2535      'isCompilation': False,
2536      'moods': list([
2537        'slow',
2538        'cool',
2539      ]),
2540      'musicBrainzId': '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2541      'name': 'Live at The Casbah - 2005-04-29',
2542      'originalReleaseDate': dict({
2543        'day': 10,
2544        'month': 3,
2545        'year': 2001,
2546      }),
2547      'playCount': 97,
2548      'played': '2023-03-28T00:45:13Z',
2549      'releaseDate': dict({
2550        'day': 10,
2551        'month': 3,
2552        'year': 2001,
2553      }),
2554      'releaseTypes': list([
2555        'Album',
2556        'Remixes',
2557      ]),
2558      'songCount': 8,
2559      'sortName': 'lagerfeuer (8-bit)',
2560      'starred': '2023-03-22T01:51:06Z',
2561      'userRating': 4,
2562      'version': 'Deluxe Edition',
2563      'year': 2007,
2564    }),
2565    'artists': list([
2566      dict({
2567        'available': True,
2568        'external_ids': list([
2569        ]),
2570        'image': None,
2571        'is_playable': True,
2572        'item_id': '97e0398acf63f9fb930d7d4ce209a52b',
2573        'media_type': 'artist',
2574        'name': 'The New Deal',
2575        'provider': 'xx-instance-id-xx',
2576        'sort_name': 'new deal, the',
2577        'translation_key': None,
2578        'uri': 'xx-instance-id-xx://artist/97e0398acf63f9fb930d7d4ce209a52b',
2579        'version': '',
2580        'year': None,
2581      }),
2582      dict({
2583        'available': True,
2584        'external_ids': list([
2585        ]),
2586        'image': None,
2587        'is_playable': True,
2588        'item_id': 'ar-1',
2589        'media_type': 'artist',
2590        'name': 'Artist 1',
2591        'provider': 'xx-instance-id-xx',
2592        'sort_name': 'artist 1',
2593        'translation_key': None,
2594        'uri': 'xx-instance-id-xx://artist/ar-1',
2595        'version': '',
2596        'year': None,
2597      }),
2598      dict({
2599        'available': True,
2600        'external_ids': list([
2601        ]),
2602        'image': None,
2603        'is_playable': True,
2604        'item_id': 'ar-2',
2605        'media_type': 'artist',
2606        'name': 'Artist 2',
2607        'provider': 'xx-instance-id-xx',
2608        'sort_name': 'artist 2',
2609        'translation_key': None,
2610        'uri': 'xx-instance-id-xx://artist/ar-2',
2611        'version': '',
2612        'year': None,
2613      }),
2614    ]),
2615    'date_added': None,
2616    'disc_number': 1,
2617    'duration': 178,
2618    'external_ids': list([
2619      list([
2620        'musicbrainz_recordingid',
2621        '189002e7-3285-4e2e-92a3-7f6c30d407a2',
2622      ]),
2623    ]),
2624    'favorite': True,
2625    'is_playable': True,
2626    'item_id': '082f435a363c32c57d5edb6a678a28d4',
2627    'last_played': 0,
2628    'media_type': 'track',
2629    'metadata': dict({
2630      'chapters': None,
2631      'copyright': None,
2632      'description': None,
2633      'explicit': True,
2634      'genres': list([
2635        'East coast',
2636        'Hip-Hop',
2637      ]),
2638      'grouping': None,
2639      'images': None,
2640      'label': None,
2641      'languages': None,
2642      'last_refresh': None,
2643      'links': None,
2644      'lrc_lyrics': None,
2645      'lyrics': None,
2646      'mood': 'slow',
2647      'performers': list([
2648        'Artist 3',
2649        'Artist 4',
2650        'Artist 5',
2651      ]),
2652      'popularity': None,
2653      'preview': None,
2654      'release_date': None,
2655      'review': None,
2656      'style': None,
2657    }),
2658    'name': '"polar expedition"',
2659    'position': None,
2660    'provider': 'xx-instance-id-xx',
2661    'provider_mappings': list([
2662      dict({
2663        'audio_format': dict({
2664          'bit_depth': 16,
2665          'bit_rate': 880,
2666          'channels': 2,
2667          'codec_type': '?',
2668          'content_type': 'flac',
2669          'output_format_str': 'flac',
2670          'sample_rate': 44100,
2671        }),
2672        'available': True,
2673        'details': None,
2674        'in_library': None,
2675        'is_unique': None,
2676        'item_id': '082f435a363c32c57d5edb6a678a28d4',
2677        'provider_domain': 'opensubsonic',
2678        'provider_instance': 'xx-instance-id-xx',
2679        'url': None,
2680      }),
2681    ]),
2682    'sort_name': 'Polar expedition',
2683    'track_number': 4,
2684    'translation_key': None,
2685    'uri': 'xx-instance-id-xx://track/082f435a363c32c57d5edb6a678a28d4',
2686    'version': '',
2687  })
2688# ---
2689