U
    _                     @   sn  d dl T d dlT d dlT d dlT d dlT g Zee ee dd eD Z	e
fddZe
eefddZe
fdd	Zd
d Ze
eefddZdd Zdd Zdd Ze	fddZdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Z d.d/ Z!d0d1 Z"d2d3 Z#d4d5 Z$d6d7 Z%d8d9 Z&d:d; Z'd<d= Z(d>d? Z)e*d@krje)  dAS )B    )*c                 C   s   g | ]}|t  qS  )gidxMapAssetId).0aRcdr   r   /var/www/api/CDVsrv.py
<listcomp>S   s     r   c                 C   s<   t | }t|\}}|tkr*t|tt}nt|d| }|S )Nz
   CDVsrv )	srvReqGetsrvReqValidate	giErrNone	srvRspGet	glsMapAllgiSrvRtnRcdQty	rspMsgErr)dReqdReqArgsiErrsErrdRspr   r   r   srvRunY   s    r   c                 C   s"   t | ||\}}t| dt|}|S )NSuccess)srvExecZ	rspMsgSet
gsRspMsgOk)r   ZlsMapAllZiSrvRtnRcdQtydDatasRptr   r   r   r   r   d   s    r   c              
   C   s   d}|rt  }n| tt}| tt}| td }|tt}|tt}t|dt	}t|dt
}	t|dt}
t|dt}td}d| d | d |	 d |
 d | }|||	|
|g}d	|t|t|	t|
t|i}td
|d	  gd |S )NFr   %d.%m.%Y %H:%M:%S
	sReqDate.........: 
	sReqSearchTerm...: 
	sReqSearchVideo..: 
	sReqCategory.....: 
	sReqDataType.....: sreqz	srvReqGet() Request:  )	srvReqSimgetgsReqSearchTerm	gListNullgsReqSearchVideogsReqSearchFiltergsReqSearchCategorygsReqSearchDataTypelistNthDefaultgsReqSearchTermDefaultgsReqSearchVideoDefaultgsReqCategoryDefaultgsReqDatatypeDefault	timestamplog)r   bTestSimr   ZlReqSearchTermZlReqSearchVideoZdReqSearchFilterZlReqCategoryZlReqDataTypesReqSearchTermsReqSearchVideosReqCategorysReqDataTypesReqDatesReq	lxReqArgsr   r   r   r	   r   s$    (r	   c                 C   s|   t }d}| t tkr&| t tkr&d}n.| t tkrD| t tkrDd}n| t tkrTd}|t krtt| }td| gd ||fS )Nr"            z	srvReqValidate...: ERROR )	r   r%   r,   r'   r-   r)   glsReqCategories	gsCDVErrslogErr)r   r   r   r   r   r   r
      s    r
   c           0   	   C   s|  i }g }t |D ]\}}t| t |t s.q| t tkr<t| t | t |\}}}	}
|
dkr|}t	|t
 }t| t |}t||t
< t	|t }t| t |\}}|}	t||t< t	|t }t| t |}t||t< t	|t }t| t |}t||t< t|||	}
||t |||	|
|g q| t tkrt| t | t |\}}}	}
|
dkr| t }t|}|t }t|}|}t|t|t }dd |D }t	|t
 }t||}t||t
< dtt|t|t    }t!|dd}t	|t }t"|}t	|t }t"|}t#||}t$|||\}}|}	t||t< t	|t } t%| }!t	|t }"t%|"}#t#|!|#}$t&|!|$|"\}%}&|&}t|%|t< t	|t }'t'|'}(t	|t })t'|)}*t#|(|*}+t(|+|)\},}-t|,|t< t)|||	}
||t |||	|
|g qqt*|dd d	d
}.t|.|krX|.d| }.t+|.}t,|.}/t-|/gd ||/fS )Nr   c                 S   s   g | ]}|t kr|qS r   glsStopWordsr   Xr   r   r   r      s      zsrvExec.<locals>.<listcomp>d                 Y@c                 S   s   | d S )Nr:   r   )xr   r   r   <lambda>      zsrvExec.<locals>.<lambda>T)keyreverser"   ).	enumeratematchCategoryr)   gidxMapCategoryr%   r,   seekTermr*   jsonloadsgidxMapTitleDatasimTxtTitleRecalcdumpsgidxMapImgTagsimTxtImageRecalcgidxMapTranscriptTagsimTxtTransTagRecalcgidxMapTranscriptDatasimTxtTransDataRecalcsimTxtAverageappendr   r'   r-   	seekVideomapFindAssetgidxMapTitlestrNormalizeForMatchstrIntersectssimVidTitleRecalc
numPercentlensplitnumRangevidHasImageTagKeyslistIntersectionsimVidImageRecalcvidHasTransTagKeyssimVidTransTagRecalcvidHasTransDataKeyssimVidTransDataRecalcsimVidAveragesortedmatchToDictmatchToSummaryRptr1   )0r   ZlsMapZ
iRtnRcdQtyr   lMatchidxr   	fSimTitle	fSimAudio	fSimImage	fSimTotalZaRcd2dTagsTitleRcd1dTagsTitleRcd2dTagsImageRcd1ZdTagsImageRcd2Z
fSimImgTotdTagsTransTagRcd1ZdTagsTransTagRcd2dTagsTransDataRcd1ZdTagsTransDataRcd2sReqAssetIdaReqRcdZsReqVidTitleZlsTitleWordsCommonZdTagsTitleEastZdRcdImgTagsWestlsImageKeysWestdRcdImgTagsEastZlsImgKeysEastlsImgKeysCommonZdRcdImgTagsEast2ZdRcdTransTagsWestZlsTransTagsWestdRcdTransTagsEastZlsTransTagsEastlsTranTagsCommonZdRcdTransTagsEast2ZfSimTransTagsTotZdRcdTransDataWestZlsTransDataWestdRcdTransDataEastZlsTransDataEastlsTranDataCommonZdRcdTransDataEast2Z_fSimTransDataTotZ
lMatchRankr   r   r   r   r      s    



r   c                 C   s   | t |fkS N)r.   )r5   ZsRcdCategoryr   r   r   rM     s    rM   c                 C   s  | t kr tdtd  gd tS t| }|g krHtdtd  gd tS |t |t kr\tS t|}d}|stt|krt|t	 
 |t	 
 }dd |D }|rtdt|t|t	    }d}|st|kr:t|t 
 |t 
 }tttdd |D }|r:t|t  }|d	kr:tdt||  }d}	|sNt|krtttt|t |t }|rtdt|t|t t|t    }	t|||	}
|||	|
g}|S )
Nz!		-----CDVsrv:seekVideo rejects:    r"   r   c                 S   s   g | ]}|t kr|qS r   r@   rB   r   r   r   r   ;  s      zseekVideo.<locals>.<listcomp>rD   c                 S   s   g | ]}|t kr|qS r   r@   rB   r   r   r   r   G  s      
   )r-   r?   r>   gliSimValNullr^   r   srvReqDataTypeRangegsReqSearchDataTypeTitlera   r_   lowernumHundrethrd   re   gsReqSearchDataTypeAudiogidxMapTextlistro   setgsReqSearchDataTypeImagerh   gidxMapImgNames
simAverage)r4   slReqSearchDataTypesr   r~   	bAllTypesrt   ZlsCommonru   iRcdWordQtyrv   rw   lfSimr   r   r   r]   "  s@     
(r]   c                 C   s   | t krtS t|}d}|s$t|krNt| |t rNtddt|t    }d}|s^t	|krt| |t
 rt|t
  }|dkrtddt|t
    }d}|st|krt| t|t }|dkrd}t|||}	||||	g}
|
S )Nr   rD      r   )r,   r   r   r   strMatchAnyCaser_   r   rd   re   r   r   r   simImageQtyrP   rQ   rU   r   )r3   r   r   r   rt   ru   r   rv   ZiQtyImgHitsrw   r   r   r   r   rO   Z  s*    rO   c                 C   s   | t kp| |kS r   )r-   )ZsAssetIdZlsAssetsr   r   r   srvAssetKnown}  s    r   c               
   C   sz   t t} t t}t t}t t}td}d| d |  d | d | d | }|| |||g}d|t| t|t|t	|i}|S )Nr   r   r   r   r   r    r!   )

listRandomglsReqSearchTermSamplesglsReqSearchVideoSamplesr=   glsReqDataTypesr0   r%   r'   r)   r*   )r3   r4   r5   r6   r7   r8   r9   r   r   r   r   r#     s    (r#   c                 C   s    | t tkpt| kpd| k}|S )NAll)strr&   r/   )r   r   r   r   r   r     s    r   c                 C   s"   t D ]}| |t kr|  S qg S r   )r   r   )r}   r   r   r   r   r^     s    
r^   c                 C   s<  d}d}d}d}d}g }t | D ]\}}|| }	|	t }
d|	t i}d|	t i}d|	t i}d	|	t i}d
|	t i}d|	t i}d|	t i}dt|| i}dt|| i}dt|| i}dt|| i}t	|	t
 }t	|	t }t	|	t }t	|	t }t|||||||||||||||g}|| q d|i}|S )Nr;   r         r:   sourcecategoryurlassetidpubdatetitletexttitlesimilarityaudiosimilarityimagesimilaritytotalsimilaritydata)rL   r_   gidxMapSourcerN   
gidxMapUrlr   gidxMapPubDater   numSimilarityjsonTextToDictrU   rW   rY   rR   	dictMerger\   )rr   	idxMapRcdidxSimTitleidxSimAudioidxSimImageidxSimTotalZ
ldDataRcdsidxMatchaMatchmapRcdsTitledTagsSourcedTagsCategorydTagsUrldTagsAssetIddTagsPubDatedTagsDocTitle	dTagsTextdTagsSimTitledTagsSimAudiodTagsSimImagedTagsSimTotal
dTagsImage
dTagsTextT
dTagsTextD
dTagsTitleZdDataRcdr   r   r   r   rp     s8    &rp   c                 C   s  d}t | s|d7 }ntd}d}d}d}d}d}t| D ]P\}}	|	| }
|
t }d	|
t i}d
|
t i}d|
t i}d|
t i}d|
t i}d|
t i}d|
t i}dt	|	| i}dt	|	| i}dt	|	| i}dt	|	| i}t
|
t }t
|
t }t
|
t }t
|
t }dt|d  d |	|  d t	|	|  d t	|	|  d t	|	|  d t	|	|  }|d| 7 }||t 7 }q8|t7 }|S )Na  
		______________________________________________________________________________________________________________________________________________________
						 ----------Similarity-----------
		    Index	Video            Title    Audio   Image    Total        Document
		______________________________________________________________________________________________________________________________________________________
z		 Matches:	 Noner;   r   r   r   r   r:   r   r   r   r   r   r   r   r   r   r   r   z				z	 z	  )rd   rL   r_   r   rN   r   r   r   r   r   r   rU   rW   rY   rR   r   gsNL)rr   r   r   ZidxVidTitler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZsLiner   r   r   rq     s@    \rq   c                 C   s   t d| | |  d }|S )NrD   i,  )r   )rt   ru   rv   rw   r   r   r   r     s    r   c                 C   s<   | | | }t |d }|dkr,|dk r,d}t|dd}|S Nr   r   g{Gz?rE   rF   r   rf   rt   ru   rv   rw   ZfSimAvgr   r   r   r[     s    r[   c                 C   s<   | | | }t |d }|dkr,|dk r,d}t|dd}|S r   r   r   r   r   r   rn     s    rn   c                 C   sl   |   } |}|d }| D ]J}| || d   krNt|| d< d|| d< qt|| d< d|| d< q|S N	titledataword
word_orderrD   word_similarity_scorer   )r   keysgiWordTagOrderFirstgiWordTagOrderLast)sSearchTermrx   ry   dTagsTitleDatasKeyr   r   r   rS   )  s    rS   c                 C   s   |   } |}|d }d}| D ]f}| rn| || d   krnt|| d< d|| d< t|| d }||7 }q t|| d< d|| d< q td|d	 }||fS )
N	imagetagsr   tag	tag_orderrD   tag_similarity_score	tag_timesۃחAr   )r   r   r   rd   r   min)r   rz   dTags2r   Z
fSimImgHitr   ZiSimImgHitOccurfSimImgTotVidr   r   r   rV   8  s    
rV   c                 C   s|   |   } |}|d }| D ]Z}| || d   kr^t|| d }t|| d< ||| d< qt|| d< d|| d< q|S )Ntranscripttagsr   r   r   r   r   r   r   rd   r   r   )r   r{   r   r   r   iFreqr   r   r   rX   L  s    rX   c                 C   s|   |   } |}|d }| D ]Z}| || d   kr^t|| d }t|| d< ||| d< qt|| d< d|| d< q|S )Ntranscriptdatar   
word_timesr   r   r   r   )r   r|   r   r   r   r   r   r   r   rZ   [  s    rZ   c                 C   sR   |   } |d }d}| D ]0}| r| || d   kr|t|| d 7 }q|S )Nr   r   r   r   )r   r   rd   )r   ZdTagsImageRcdr   Z
iQtyImagesr   r   r   r   r   j  s    r   c                 C   sd   |}|d }|  D ]J}|| d  | krFt|| d< d|| d< qt|| d< d|| d< q|S r   )r   r   r   r   )ZlsSearchTermrx   ry   r   r   r   r   r   rb   {  s    rb   c           	      C   s   |}|d }d}|  D ]^}|| d |kr^t|| d< t|| d }||| d< ||7 }qt|| d< d|| d< qtt|t| }||fS )Nr   r   r   r   r   r   r   r   rd   r   numPercentTrim)	r   r   r   r   r   	fHitTotalr   iHitQtyr   r   r   r   ri     s    
ri   c           	      C   s   |}|d }d}|  D ]^}|| d |kr^t|| d< t|| d }||| d< ||7 }qt|| d< d|| d< qtt|t| }||fS )Nr   r   r   r   r   r   r   )	ZlsTranTagsWestr   r   r   r   r   r   r   ZfSimTagTotVidr   r   r   rk     s    
rk   c                 C   s   |}|d }d}|  D ]^}|| d | kr^t|| d< t|| d }||| d< ||7 }qt|| d< d|| d< qtd|d }||fS )	Nr   r   r   r   r   r   r   r   )r   r   rd   r   r   )r   r   r   r   r   r   r   ZfSimDataTotVidr   r   r   rm     s    
rm   c                    s    fdd d   D S )Nc                    s   g | ]} d  | d qS )r   r   r   r   r   ZdRcdImageTagsr   r   r     s     z&vidHasImageTagKeys.<locals>.<listcomp>r   r   r   r   r   r   rg     s    rg   c                    s    fdd d   D S )Nc                    s   g | ]} d  | d qS )r   r   r   r   ZdRcdTransTagsr   r   r     s     z&vidHasTransTagKeys.<locals>.<listcomp>r   r   r   r   r   r   rj     s    rj   c                    s    fdd d   D S )Nc                    s   g | ]} d  | d qS )r   r   r   r   ZdRcdTransDatar   r   r     s     z'vidHasTransDataKeys.<locals>.<listcomp>r   r   r   r   r   r   rl     s    rl   c            
      C   s   i } dgi d}dgddgid}dgdd	gid}g g d	gdgd
d}dgddd	gid}dgdddgid}| ||||||g}t |D ]\}}	td| qd S )Nz0This is a term or phrase a user might search for)search_termsearch_filtersz72gy-LZ4UN0	data_typez
Image Data)search_videor   zWar and Peacer   zCNN Business)r   r   )r   r   r   zDuck BilledzCNN Flagshipzelection resultszZebra Categoryz%Platypus This category does not existz-----Test #)rL   print)
ZdReq1ZdReq2ZdReq3ZdReq4ZdReq5ZdReq6ZdReq7ZldReqrs   r   r   r   r   test  s    r   __main__N)+QCNNCfgQUtilZQCfgStopwordsCDVrspZVeresaiCNNAutoMapr   extendZglsTxtFlagshipZglsTxtBusinessZ	glsAssets	gDictNullr   r   r   r	   r
   r   rM   r]   rO   r   r#   r   r^   rp   rq   r   r[   rn   rS   rV   rX   rZ   r   rb   ri   rk   rm   rg   rj   rl   r   __name__r   r   r   r   <module>G   sP   

8#3/

