
    @};d                     l    d dl mc mZ d dlZd dlZd dlmZmZ dZ	dZ
dZdZdZdZd	Zd
Z G d de      Zy)    N)RBGLibz3https://musicbrainz.org/ws/2/release/%s?inc=artistszhttp://musicbrainz.org/release/z.htmlz,https://coverartarchive.org/release/%s/frontzartist:"%s" AND release:"%s"z6https://musicbrainz.org/ws/2/release/?query=%s&limit=1z$89ad4ac3-39f7-470e-963a-56509c546377zChttps://images-na.ssl-images-amazon.com/images/P/%s.01.LZZZZZZZ.jpgc                   *    e Zd Zd Zd Zd Zd Zd Zy)MusicBrainzSearchc                     |\  }}}}}|d   }|dd  }|| j                  |||||       y |j                  |t        j                  j                  t
        j                  j                  |              ||  y )Nr      )try_image_urls	store_rawr   ExtDBSourceTypeSEARCHr   Bytesnew_take)	selfdataargsstorekeystoreurlscallbackcbargsurls	            D/usr/lib/x86_64-linux-gnu/rhythmbox/plugins/artsearch/musicbrainz.pyget_image_cbzMusicBrainzSearch.get_image_cb4   sw    .2+8UD(FQ#	ab$	\xh?	//(B..55tzz7J7J47PQ
F    c           	          t        |      dk(  rt        d        ||  y t        dt        |      |d   fz         t        j                         }|j	                  |d   | j
                  |||||f       y )Nr   zno more image urls to tryz%d urls to try, trying %s)lenprintrbLoaderget_urlr   )r   r   r   r   r   r   loaders          r   r	   z MusicBrainzSearch.try_image_urls?   sk    Y!^	$%T?	#s4y$q'&::;99;&..a$++htXt-TUr   c                 ^   |\  }}}}|t        d        ||  y 	 t        j                  |      }|j                  d      }|d   j                  d   j
                  j                  }	t        j                  j                  d|j                  d            }
|j                  d      }t        |      dkD  rP|d   j                  d   j
                  j                  }|t        k7  r!|
j                  d|j                  d             g }|j                  t        |	z         |j                  d      }t        |      dkD  r1|d   j
                  j                  }|j                  t         |z         | j#                  |
||||       y # t$        $ r}t        d|z          ||  Y d }~y d }~ww xY w)	Nz,musicbrainz release request returned nothingreleaser   idalbumartistasinz*exception parsing musicbrainz response: %s)r   domparseStringgetElementsByTagName
attributes
firstChildr   r   ExtDBKeycreate_storage	get_fieldr   MUSICBRAINZ_VARIOUS_ARTISTS	add_fieldappendCOVERARTARCHIVE_IMAGE_URLAMAZON_IMAGE_URLr	   	Exception)r   r   r   keyr   r   r   parsedrelmbidr   artist_tags	artist_idr   	asin_tagsr'   es                    r   get_release_cbz MusicBrainzSearch.get_release_cbJ   s   #' 3x	\	78V	 OOD!6 
	$	$Y	/3
a&

D
!
,
,
1
14kk((#--2HI8 ,,X6;	+A))$/::??I//#--"9:
4 ;;(4/0 **629	)nqQ<""''DKK 4'( xh=	 	5	9:Vs   E)F 	F,F''F,c                 |   |j                  d      }|j                  d      }|r|st        d        ||  y t        |j                         |j                         fz  }t        t
        j                  j                  |d      fz  }t        j                         }	|	j                  || j                  ||||f       y )Nr%   r&   z#artist or album information missing:)safe)r/   r   MUSICBRAINZ_SEARCH_QUERYlowerMUSICBRAINZ_SEARCH_URLurllibparsequoter   r   r    r>   )
r   r6   r   r   r   r%   r&   queryr   r!   s
             r   try_search_artist_albumz)MusicBrainzSearch.try_search_artist_albums   s    
--
 %=="&	f	./T?	
"fllnekkm%D
D%&,,"4"4U"4"E!GG#99;&..d))C$+GHr   c                    |j                         }|j                  d      }| t        d       | j                  ||||       y |j	                  t
              r|t        t
              d  }|j                  t              r|d t        t                }t        d|z         t        |z  }t        j                         }|j                  || j                  ||||f       y )Nzmusicbrainz-albumidz(no musicbrainz release ID for this trackzstripped release ID: %s)copyget_infor   rI   
startswithMUSICBRAINZ_RELEASE_PREFIXr   endswithMUSICBRAINZ_RELEASE_SUFFIXMUSICBRAINZ_RELEASE_URLr   r   r    r>   )	r   r6   	last_timer   r   r   album_idr   r!   s	            r   searchzMusicBrainzSearch.search   s    
#\\/0(	34UHd;	34s5678812878898!H,-8,#99;&..d))C$+GHr   N)__name__
__module____qualname__r   r	   r>   rI   rT    r   r   r   r   2   s    	V'RIIr   r   )xml.dom.minidomr(   minidomurllib.parserE   r   gi.repositoryr   r   rQ   rN   rP   r3   rB   rD   r0   r4   objectr   rX   r   r   <module>r^      sb   6    	 " P > $  K = Q  E  Y bI bIr   