
    @};d@                     X    d dl Z d dlmZ d dlmZmZmZ g dZdZd Zd Z	 G d d	      Z
y)
    N)RB)GObjectGLibGio)coveralbumalbumartfrontz.folderfolder
   c                 b    t         j                  j                  |       d   j                         S )Nr   )ospathsplitextlower)f_names    >/usr/lib/x86_64-linux-gnu/rhythmbox/plugins/artsearch/local.py	file_rootr   $   s%    
&!!$**--    c                 B    d}| |   ||   k(  r|dz   }| |   ||   k(  r|S )Nr       )abls      r   shared_prefix_lengthr   '   s5    tqt|c! 	tqt|	r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)LocalSearchc                      y )Nr   )selfs    r   __init__zLocalSearch.__init__.   s    r   c                    | j                   j                         }g }t        j                  j	                  d| j
                        }|j                  d| j                  d          t        | j                   j                               gt        z   D ]l  }|D ]e  }t        |      |k(  s|j                  |      j                         }| j                  j                  |t        j                  j                   |       g n | j
                  j#                         }|D ]  }t        |      j#                         }	| j                  D ]  }
|
j#                         }
|	j%                  |
      dk7  s(|	j%                  |      dk7  s=t        j                  j	                  d|      }|j                  d|
       |j                  |      j                         }t'        d|z          | j                  j                  |t        j                  j                   |         d}d }|D ]0  }t)        || j                   j                               }||kD  s-|}|}2 |b|j                  |      j                         }t'        d|z          | j                  j                  |t        j                  j                   |       | j+                  | j,                         y )Nr   artistr   zfound album+artist match    zfound prefix match )file
get_parentr   ExtDBKeycreate_storager   	add_fieldartistsr   get_basenameIMAGE_NAMESresolve_relative_pathget_uristore	store_uriExtDBSourceTypeUSERr   findprintr   callbackcallback_args)r    resultsparentorderedkeynamer   urir   f_rootr#   nkey	match_lenmatchpls                  r   finishedzLocalSearch.finished1   sU   99!&'
""7DJJ7#--$,,q/* $))00234{B =d =v&T!''/779S	ZZ#r1166<== **


% 	>fv$$&6 >v\\^F{{Fr!fkk5&9R&?KK&&w6T	^^Hf%''/779S
&,-	ZZ$ 2 2 7 7=>	> )
% fVTYY%;%;%=>29nIE	 		%	%e	,	4	4	63		$%::R//44c:--""#r   c                 p    	 |j                  |       y # t        $ r}t        d|z         Y d }~y d }~ww xY w)Nz"couldn't close file enumerator: %s)close_finish	Exceptionr5   )r    fileenumresultr8   es        r   _close_enum_cbzLocalSearch._close_enum_cb]   s6    3 	 3	-	1223s    	505c                 >   	 |j                  |      }|t        |      dk(  rUt        dt        |      z         |j                  t        j
                  d | j                  d        | j                  |       y |D ]n  }|j                  d      }d}|j                  d      r|j                  d      }|;|j                  d      sM|sP|j                  |j                                p |j                  t        t        j
                  d | j                   |       y # t"        $ rv}t        d|z         dd l}	 |	j&                  |	j)                           | j                  |       |j                  t        j
                  d | j                  d        Y d }~y d }~ww xY w)Nr   zokay, done; got %d fileszstandard::content-typeTzaccess::can-readzimage/okay, probably done: %s)next_files_finishlenr5   close_asyncr   PRIORITY_DEFAULTrJ   rC   get_attribute_stringhas_attributeget_attribute_boolean
startswithappendget_namenext_files_asyncITEMS_PER_NOTIFICATION_enum_dir_cbrF   sys
excepthookexc_info)
r    rG   rH   r8   filesfctreadablerI   rZ   s
             r   rY   zLocalSearch._enum_dir_cbd   s\   P%%f-5ms5zQ	
$s7|
34..d6I6I4PMM'
 "q	
		 8	9BH)*''(:;X	~"--1h^^AJJL!" 3T5J5JDRVRcRcelm	 P	"Q	&'3>>3<<>"==--tT5H5H$OOPs2   A5D 8<D 5D D 
AD 	F&A,FFc                 ~   	 |j                  |      }|j                  t        t        j                  d | j
                  g        y # t        $ rn}t        d|z         t        |t        j                        s!dd l
} |j                  |j                           | j                  | j                         Y d }~y d }~ww xY w)NrL   r   )enumerate_children_finishrW   rX   r   rP   rY   rF   r5   
isinstanceGErrorrZ   r[   r\   r6   r7   )r    r9   rH   data	enumfilesrI   rZ   s          r   _enum_children_cbzLocalSearch._enum_children_cb   s    %//794d6K6KTSWSdSdfhi	 %	"Q	&'
Q
$CNNCLLN#==##$$%s   AA 	B<A$B77B<c                    |j                  d      }|t        d        ||       y t        j                  |      | _        |j                  d      | _        | j                  t        d        ||       y |j                  d      | _        || _	        || _
        || _        t        d| j                  j                         z         | j                  j                         }|j                  dddd | j                  d       }y )	Nlocationz'not searching, we don't have a locationr   z%not searching, we don't have an albumr#   zsearching for local art for %sz6standard::content-type,access::can-read,standard::namer   )get_infor5   r   file_new_for_urir&   	get_fieldr   get_field_valuesr+   r0   r6   r7   r/   r'   enumerate_children_asyncrg   )	r    r;   	last_timer0   r6   argsri   r9   rf   s	            r   searchzLocalSearch.search   s     \\*%(	23D>	""8,$)}}W%$*	ZZ	01D>	%%h/$,$*$-$(DII,=,=,?@A99!&--.fhiklnrtx  uK  uK  MQ  R)r   N)	__name__
__module____qualname__r!   rC   rJ   rY   rg   rq   r   r   r   r   r   -   s#    *$X3P6	%Rr   r   )r   gi.repositoryr   r   r   r   r-   rX   r   r   r   r   r   r   <module>rv      s6   8 
  , ,J .
vR vRr   