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