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