
    1?hH
                     @    d dl Z d dlmZmZ d dlZg dZ G d d      Zy)    N)ListTuple)Jacoustic
aggressiveanthemicatmosphericbouncychilldarkdreamy
electronic	emotionalepicexperimental
futuristicgroovy	heartfelt
infectiousmelodicmellowpowerfulpsychedelicromanticsmooth
syncopated	upliftingafrobeatanimeballadzbedroom pop	bluegrassblues	classicalcountrycumbiadancezdelta blues
electropopdiscozdrum and bassedmemofolkfunkzfuture bassgospelgrungegrimezhip hophouseindiezj-popjazzzk-popz
kids musicmetalznew jack swingznew waveoperapunkragarapreggae	reggaetonrockrumbasalsasamba	sertanejosoulsynthpopswing	synthwavetechnotrapz	uk garagec                   P    e Zd ZddZd Zdedeeeef      fdZ	dedee   fdZ
y)	RedisTagManagerc                 @    t        j                  |||d      | _        y )NT)hostportdbdecode_responses)redisRedisredis_client)selfrG   rH   rI   s       //Users/zoeshleifer/deejay-suno/redis_manager.py__init__zRedisTagManager.__init__S   s    !KKDR$
    c                 4   i }d}	 | j                   j                  |dd      \  }}|D ]P  }	 t        | j                   j                  |      xs d      }||t	        |t
              r|j                         n|<   R |dk(  r	 |S # t        t        f$ r Y mw xY w)Nr   *i  )cursormatchcount)	rM   scanintget
isinstancebytesdecode
ValueError	TypeError)rN   tagsrT   keyskeyvotess         rO   get_all_tagszRedisTagManager.get_all_tagsW   s    ,,11sRV1WLFD 1 1 5 5c : ?a@ELQDC)?SI  {  #I. s   ABBBnreturnc                     | j                         }t        |j                         d d      }t        |      |k  r|S t        |      dk(  rt	        j
                  t        |      S |d| S )z(Get the top N tags sorted by vote count.c                     | d   S )N    )xs    rO   <lambda>z.RedisTagManager.get_top_tags.<locals>.<lambda>i   s    1rQ   T)ra   reverser   N)rc   sorteditemslenrandomsampleRAND_TAG_LIST)rN   rd   r_   sorted_tagss       rO   get_top_tagszRedisTagManager.get_top_tagse   sa      "TZZ\~tL{a{q ==222ArQ   c                     | j                  |      }|D cg c]  }|d   	 }}| j                  j                          |S c c}w )z-Get top N tags and clear the entire database.r   )rt   rM   flushdb)rN   rd   top_tagstag	tag_namess        rO   get_and_reset_tagsz"RedisTagManager.get_and_reset_tagso   sG    $$Q''/0xSVx	0!!# 1s   A N)	localhosti  r   )__name__
__module____qualname__rP   rc   rX   r   r   strrt   rz   ri   rQ   rO   rE   rE   R   sC    
	c 	d5c?&; 	C DI rQ   rE   )rK   typingr   r   rp   rr   rE   ri   rQ   rO   <module>r      s!      KZ" "rQ   