o
    xZŽjŸ§  ã                
   @   sz  d Z ddlZddlZddlZddlZddlZddlZzddlZdZW n e	y-   dZY nw ej
 ej
 e¡¡Zej
 ed¡Zej
 ed¡Zej
 ed¡Zej
 ed¡Zej
 ed	¡Zd
ddddœdddddœdddddœdddddœdddddœdddddœgZg d¢Zg d¢Zg d¢Zg d¢Zdd „ Zd!d"d#d$d%œZd&d"d'd$d%œZd(d)„ Zd*d+„ Zd,d"d-d.œZda da!d/d0„ Z"d1d2„ Z#dgd4d5„Z$d6d7„ Z%dhd9d:„Z&d;d<d-d.œZ'da(d=d>„ Z)dhd?d@„Z*dAdB„ Z+dCdD„ Z,dhdEdF„Z-d;d<d-d.œZ.da/dGdH„ Z0didJdK„Z1dLdM„ Z2dNdO„ Z3dPdQ„ Z4didRdS„Z5dTdU„ Z6didVdW„Z7dXdY„ Z8dZd[„ Z9d\d]„ Z:did^d_„Z;d`da„ Z<dbdc„ Z=ddde„ Z>e?dfk�r;e=ƒ  dS dS )ju½  
å¤§VåŠ¨æ€�ç›‘æµ‹ â€” æŠ“å�–å¾®å�š/é›ªç�ƒå¤§Væœ€æ–°åŠ¨æ€�å¹¶è¿›è¡Œæƒ…ç»ªåˆ†æž�
ç›‘æµ‹å¯¹è±¡: å¾®å�š52198 / å”�å�²ä¸»ä»»å�¸é©¬è¿� / ç‹‚é¾™å��å…«æ®µ / é›ªç�ƒÂ·è´¨å�˜ä¹‹è·¯
æ•°æ�®è¾“å‡º: data/weibo_dav_data.json

é…�ç½®æ–¹å¼�ï¼š
  æ–¹å¼�1ï¼šå°†å¾®å�šCookieä¿�å­˜åˆ° data/weibo_cookie.txtï¼ˆä»Žæµ�è§ˆå™¨å¼€å�‘è€…å·¥å…·å¤�åˆ¶ï¼‰
        æ”¯æŒ� weibo.com(PCç‰ˆ) å’Œ m.weibo.cn(ç§»åŠ¨ç‰ˆ) ä¸¤ç§�Cookie
        é›ªç�ƒæ— éœ€Cookieï¼Œè‡ªåŠ¨èŽ·å�–åŒ¿å��tokenï¼ˆè‹¥è¢«WAFæ‹¦æˆªå�¯ä¿�å­˜ data/xueqiu_cookie.txtï¼‰
  æ–¹å¼�2ï¼šè®¾ç½®çŽ¯å¢ƒå�˜é‡� WEIBO_COOKIE
  æ–¹å¼�3ï¼šç›´æŽ¥åœ¨ä¸‹æ–¹ DAV_LIST ä¸­å¡«å…¥å·²çŸ¥çš„ uidï¼ˆè·³è¿‡æ�œç´¢æ­¥éª¤ï¼‰
  æ— Cookieæ—¶æ¨¡å�—æ˜¾ç¤ºé…�ç½®æŒ‡å¼•ï¼Œé…�ç½®å�Žå�³å�¯è‡ªåŠ¨æŠ“å�–ã€‚
é    NTFÚdatazweibo_dav_data.jsonzweibo_cookie.txtzxueqiu_cookie.txtzweread_cookie.txtu   å¾®å�š52198Zwu2198Z
1216826604Úweibo)ÚnameÚ
search_keyÚuidÚsourceu   å”�å�²ä¸»ä»»å�¸é©¬è¿�Z
2014433131u   ç‹‚é¾™å��å…«æ®µZ
5828706619u   è´¨å�˜ä¹‹è·¯Z
7625353561Úxueqiuu   çˆ±åœ¨å†°å·�zMP_WXS_MzU2NzEwMDc1MA==Úwechatu   æ™¯å³°çœ‹ç›˜zMP_WXS_MzIxNjA4NjAyMA==)$u   çœ‹æ¶¨õ   ç‰›å¸‚õ   åŠ ä»“õ   æŠ„åº•õ   æ»¡ä»“u   æš´æ¶¨u   å¤§æ¶¨u   æœºä¼šæ�¥äº†u   åˆ©å¥½u   çª�ç ´u   å��è½¬u   åº•éƒ¨õ   ä¸»å�‡õ   é¾™å¤´õ   æ‰“æ�¿õ   è¿žæ�¿õ   æ¶¨å�œõ   ä¹°å…¥u   å¤šå¤´u   å¼ºåŠ¿u   ä¼�ç¨³õ   å��å¼¹u   å›žå�‡u   æ‹‰å�‡u   å¢žé‡�èµ„é‡‘u   å…¥åœºõ   å»ºä»“õ   ä½Žå�¸u   åŸ‹ä¼�u   çœ‹å¥½u   å�‘ä¸Šu   å�šå¤šu   é£Žå�£u   å�¯åŠ¨u   æ–°é«˜õ   æ”¾é‡�)!u   çœ‹è·Œõ   ç†Šå¸‚õ   å‡�ä»“õ   æ¸…ä»“õ   ç©ºä»“u   æš´è·Œu   å¤§è·Œu   é£Žé™©u   åˆ©ç©ºu   ç ´ä½�u   è·³æ°´õ   å‰²è‚‰u   é—ªå´©õ   è·Œå�œõ   å�–å‡ºu   ç©ºå¤´u   å¼±åŠ¿u   å›žè�½õ   ç¼©é‡�u   ç¦»åœºõ   æ­¢æ�Ÿu   è§„é�¿u   çœ‹ç©ºu   å�‘ä¸‹u	   åŽ‹åŠ›ä½�u   å¥—ç‰¢u   æ��æ…Œu   å�šç©ºu   ç ´å�‘u   æ–°ä½Žu   æ�€è·Œu   è¸©è¸�u   é€¼ç©º)u   ä¸�u   åˆ«u   å‹¿u   èŽ«u   æ²¡u   æœªu   é�ž)‰u   å¤§ç›˜u   æŒ‡æ•°u   æ²ªæŒ‡u   æ·±æˆ�u	   åˆ›ä¸šæ�¿u	   ç§‘åˆ›æ�¿u   åŒ—è¯�u   Aè‚¡u   aå¸‚u   æ¸¯è‚¡u   æ�’ç”Ÿu   ç¾Žè‚¡u   çº³æŒ‡u   é�“æŒ‡u   æ ‡æ™®u   æ—¥ç»�u   å¯Œæ—¶u   ç¾Žå€ºu   è‚¡ç¥¨u   ä¸ªè‚¡u   æ�¿å�—u   é¢˜æ��u   æ¦‚å¿µr   r   r   r   r   u   ç‚¸æ�¿u   å°�æ�¿u	   é¾™è™Žæ¦œu   æ–°è‚¡u   æ¬¡æ–°u   å¦–è‚¡u   ç‰›è‚¡u   ç¿»å€�u   æŒ�ä»“u   ä»“ä½�r   r   r   r   r   r   r   u   å�Šä»“r    u   æ­¢ç›ˆr   r   r   u   é«˜æŠ›r   u   è¡¥ä»“u   çŸ­çº¿u   ä¸­çº¿u   é•¿çº¿u   æ³¢æ®µu   ç½‘æ ¼u   å®šæŠ•u   äº¤æ˜“u   èƒœçŽ‡u   èµ”çŽ‡u   è¡Œæƒ…r
   r   r   u   å›žè°ƒu   è°ƒæ•´u   éœ‡è�¡u   å�•è¾¹r   r   u	   æˆ�äº¤é‡�u	   æˆ�äº¤é¢�u   ä¸‡äº¿u   ä¸¤å¸‚u   èµ„é‡‘u   ä¸»åŠ›u   æ¸¸èµ„u   åŒ—å�‘èµ„é‡‘u   å¤–èµ„u   èž�èµ„u   æ� æ�†u	   æµ�åŠ¨æ€§u   åŸºé‡‘ZETFu   æœºæž„u   ç§�å‹Ÿu   å…¬å‹Ÿu   åˆ¸å•†u   é“¶è¡Œu   ä¿�é™©u   é»„é‡‘u   åŽŸæ²¹u   é€šèƒ€u   é€šç¼©u   åˆ©çŽ‡u   æ±‡çŽ‡u   é™�æ�¯õ   åŠ æ�¯u   å¤®è¡Œu	   ç¾Žè�”å‚¨r!   ZGDPZCPIZPMIu	   è¯�ç›‘ä¼šu   è´¢æ”¿u   è´§å¸�u   ç‚’è‚¡u   è‚¡å¸‚u   è‚¡æ°‘u   æ•£æˆ·u   è‚‰ç­¾u   ä¸­ç­¾u   æ‰“æ–°u   å¤�ç›˜u   ç›˜é�¢u   å¼€ç›˜u   æ”¶ç›˜u   å�ˆç›˜u   æ—©ç›˜u   å°¾ç›˜u   ç«žä»·u	   åŸºæœ¬é�¢u	   æŠ€æœ¯é�¢u   Kçº¿u   å�‡çº¿u   æ”¯æ’‘u   åŽ‹åŠ›u   è¶‹åŠ¿r   u   é˜´çº¿u   é˜³çº¿u   è¡¥è·Œu   è¡¥æ¶¨c                    s   ˆ sg S ‡ fdd„t D ƒS )ua   ç»Ÿè®¡å¾®å�šæ–‡æœ¬å‘½ä¸­çš„å¸‚åœºå…³é”®è¯�ï¼Œè¿”å›žå‘½ä¸­è¯�åˆ—è¡¨ï¼ˆæ— å‘½ä¸­=ä¸Žå¸‚åœºæ— å…³ï¼‰c                    s   g | ]}|ˆ v r|‘qS © r"   )Ú.0Úkw©Útextr"   úfetch_weibo_dav.pyÚ
<listcomp>X   s    z$market_relevance.<locals>.<listcomp>)Ú	MARKET_KWr%   r"   r%   r'   Úmarket_relevanceT   s   r*   z‡Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1ú!application/json, text/plain, */*zhttps://m.weibo.cn/ZXMLHttpRequest)ú
User-AgentÚAcceptÚRefererzX-Requested-WithzuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36zhttps://weibo.com/c                 C   sR   t  dd| ¡} |  dd¡ dd¡} |  dd¡ d	d
¡} |  dd¡ dd¡} |  ¡ S )u   æ¸…ç�†HTMLæ ‡ç­¾å’Œç‰¹æ®Šå­—ç¬¦ú<[^>]+>Ú ú&nbsp;ú ú&amp;ú&z&lt;ú<z&gt;ú>z&#39;ú'z&quot;ú")ÚreÚsubÚreplaceÚstripr%   r"   r"   r'   Ú
clean_htmll   s
   r=   c                 C   s”  | s	ddg g dœS g g }}t D ]1}|  |¡}|dkrA| td|d ƒ }|tv r0| || ¡ n| |¡ |  ||d ¡}|dksqtD ]1}|  |¡}|dkru| td|d ƒ }|tv rd| || ¡ n| |¡ |  ||d ¡}|dksOqDt|ƒ}t|ƒ}|| }|dkr‹d\}	}
n%||kr›td||d  ƒ}	d}
n||kr¬td| |d  ƒ}	d	}
nd\}	}
t|	d
ƒ|
t	t
|ƒƒdd… t	t
|ƒƒdd… dœS )u-   åŸºäºŽå…³é”®è¯� + å�¦å®šå‰�ç¼€çš„æƒ…ç»ªåˆ†æž�r   Úneutral)ÚscoreÚlabelÚbull_kwÚbear_kwé   )r   r>   g      ð?Úbullishg      ð¿Úbearishé   Né   )Ú
BULLISH_KWÚfindÚmaxÚNEGATE_PREFIXÚappendÚ
BEARISH_KWÚlenÚminÚroundÚlistÚset)r&   Z	bull_hitsZ	bear_hitsr$   ÚidxÚprefixÚbull_nÚbear_nÚtotalr?   r@   r"   r"   r'   Úanalyze_sentimentt   sP   


ú€

ú€
ürX   z+WeRead/5.3.4 (iPhone; iOS 14.1; Scale/2.00)úzh-CN,zh;q=0.9©r,   r-   zAccept-Languagec               
   C   s.  d\} }t j t¡r“zlttdd� ¡  ¡ }| d¡D ]/}| ¡ }d|v rI| dd¡\}}| ¡ | ¡  d¡}}| ¡ dv rA|} q| ¡ d	v rI|}q| sYt	 
d
|¡}|rY| d¡} |smt	 
d|¡}|rr| d¡}W | |fS W | |fS W | |fS  ty’ } ztd |¡ƒ W Y d}~| |fS d}~ww | |fS )u�   ä»Ž weread_cookie.txt åŠ è½½å¾®ä¿¡è¯»ä¹¦ skey å’Œ vid
    æ–‡ä»¶æ ¼å¼�: æ¯�è¡Œä¸€ä¸ª key=value, æˆ–ç›´æŽ¥ç²˜è´´å®Œæ•´ Cookie (è‡ªåŠ¨è§£æž� skey å’Œ vid)
    )NNúutf-8©ÚencodingÚ
ú=rC   ú;)ÚskeyZwr_skey)ÚvidZwr_vidz(?:^|;\s*)wr_skey=([^;]+)z(?:^|;\s*)wr_vid=([^;]+)u$     å¾®ä¿¡è¯»ä¹¦å‡­è¯�è§£æž�å¤±è´¥: {}N)ÚosÚpathÚexistsÚWEREAD_COOKIE_FILEÚopenÚreadr<   ÚsplitÚlowerr9   ÚsearchÚgroupÚ	ExceptionÚprintÚformat)ra   rb   ÚcontentÚlineÚkÚvÚmÚer"   r"   r'   Úload_weread_credentials®   sB   €
úüþ€þrv   c                  C   sb   t dur
trt S dS tƒ \} }| r|sdadS t ¡ }|j t¡ |j | |ddœ¡ |a da|S )u*   èŽ·å�–å¾®ä¿¡è¯»ä¹¦ä¼šè¯�ï¼ˆå¸¦è®¤è¯�å¤´ï¼‰NFzwr_logined=1)ra   rb   ZCookiesT)Ú_weread_sessionÚ_weread_availablerv   ÚrequestsÚSessionÚheadersÚupdateÚWEREAD_HEADERS)ra   rb   Úsr"   r"   r'   Úweread_sessionÌ   s   
r   rG   c              
   C   s”  t ƒ }|sg S z§ttt ¡ ƒƒ}d | |d |¡}|j|dd�}| ¡ }d|vr8td t|ƒdd… ¡ƒ g W S g }| dg ¡D ]k}| d	i ¡}	|	 d
d¡}
|	 dd¡pY|	 dd¡}|si|	 d¡rid |	 d¡¡}|	 dd¡pt|	 dd¡}|r|dkr|d }|	 dd¡pŽ|	 dd¡dd… }|
r¡| |
||r›t|ƒnd|dœ¡ t	|ƒ|kr« |W S q@|W S  t
yÉ } ztd |¡ƒ g W  Y d}~S d}~ww )ud   é€šè¿‡å¾®ä¿¡è¯»ä¹¦APIèŽ·å�–å…¬ä¼—å�·æ–‡ç« åˆ—è¡¨
    è¿”å›žåˆ—è¡¨: [{title, url, ts, abstract}]
    zLhttps://i.weread.qq.com/book/articles?bookId={}&count={}&offset=0&synckey={}rF   é   ©ÚtimeoutZreviewsu!     å¾®ä¿¡è¯»ä¹¦APIè¿”å›žå¼‚å¸¸: {}NéÈ   ÚreviewÚtitler0   ZmpUrlÚurlZreviewIdz%https://weread.qq.com/web/reviewer/{}Z
createTimer   Útimeç   ¢”mBéè  Úabstractrp   )r…   r†   ÚtsrŠ   u*     å¾®ä¿¡è¯»ä¹¦èŽ·å�–æ–‡ç« åˆ—è¡¨å¤±è´¥: {})r   ÚstrÚintr‡   ro   ÚgetÚjsonrn   rL   rN   rm   )Úbook_idÚcountr~   Zsynckeyr†   Úrr   ÚarticlesÚitemr„   r…   Úarticle_urlr‹   rŠ   ru   r"   r"   r'   Úweread_get_articlesÜ   sR   
ÿ üþ€þr–   c              
   C   sÂ  zÆddddœ}t j| |dd�}|j}t d|¡pt d|¡}t d	|¡p)t d
|¡}t d|¡p;t d|¡p;t d|¡}t d|tj¡}d}|rmt dd| d¡¡}| dd¡ dd¡ dd¡ dd¡}t dd|¡ 	¡ }|rv| d¡ 	¡ nd}	|r�| d¡ 	¡ nd}
d}|r¿| d¡}| 
¡ r›t|ƒdkr›t|ƒ}n$| 
¡ s¿dD ]}zttj |dd… |¡ ¡ ƒ}W  n	 ty¾   Y q¡w |	|
||dœW S  tyà } ztd |¡ƒ W Y d}~dS d}~ww ) uf   ç›´æŽ¥æŠ“å�–å¾®ä¿¡å…¬ä¼—å�·æ–‡ç« æ­£æ–‡ï¼ˆä¸�ç»�è¿‡æ�œç‹—ï¼‰
    è¿”å›ž {title, author, text, ts}
    zBMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36ú?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8rY   rZ   é   ©r{   r‚   úvar msg_title = '([^']*)'ú<h1[^>]*>([^<]+)</h1>ú&var nickname = htmlDecode\("([^"]+)"\)ú7id="js_name"[^>]*>\s*(?:<[^>]*>)*\s*([^<\s][^<]*?)\s*</zvar ct = '(\d+)'úvar createTime = '([^']+)'ú*publish_time["\']?\s*[:=]\s*["\']?(\d{10})úT<div class="rich_media_content[^"]*"[^>]*>(.*?)</div>\s*(?:<script|<div id="js_tags)r0   r/   r2   rC   r1   r3   r4   ú&ldquo;r8   ú&rdquo;ú\s+Nç    eÍÍA©ú%Y-%m-%d %H:%Mú%Y-%m-%dé   ©r…   Úauthorr&   r‹   u$     å¾®ä¿¡æ–‡ç« ç›´æŽ¥æŠ“å�–å¤±è´¥: {})ry   rŽ   r&   r9   rk   ÚSr:   rl   r;   r<   Úisdigitr�   ÚdatetimeÚstrptimeÚ	timestamprm   rn   ro   )r†   r{   r’   ÚhtmlÚm_titleÚm_authorÚm_timerp   r&   r…   rª   r‹   rs   Úfmtru   r"   r"   r'   Úfetch_wechat_article_direct  sV   ý
ÿ
ÿ
þ$

ÿ€þrµ   é   c                 C   sÔ  g d}}| r|   d¡stdƒ ||fS t| |ƒ}|s#tdƒ ||fS td t|ƒ¡ƒ |D ]ª}t|ƒ|kr8 n¡d}|d rOd|d v rOt d	¡ t|d ƒ}|rV| d
¡sg|d || dd¡| dd¡dœ}|d d |d
 dd…  }t|ƒdk r|q.t	|ƒ}	|	s‡|d7 }q.t
|ƒ}
|d p”| dd¡}| |dd… |r§tj |¡ d¡nd|ddd|
d |
d |
d |
d |	dd… | d|¡dœ¡ td |d dd… | d|¡¡ƒ q.|jdd „ d!d"� |d|… |fS )#ua   å¾®ä¿¡å…¬ä¼—å�·ä¸»æµ�ç¨‹ï¼ˆå¾®ä¿¡è¯»ä¹¦ç‰ˆï¼‰ï¼šèŽ·å�–æ–‡ç« åˆ—è¡¨ â†’ æŠ“æ­£æ–‡ â†’ è¿‡æ»¤åˆ†æž�r   ÚMP_WXS_u%     å¾®ä¿¡è¯»ä¹¦ bookId æ— æ•ˆï¼Œè·³è¿‡u      å¾®ä¿¡è¯»ä¹¦æœªèŽ·å�–åˆ°æ–‡ç« u$     å¾®ä¿¡è¯»ä¹¦èŽ·å�–åˆ° {} ç¯‡æ–‡ç« Nr†   zmp.weixin.qq.comrF   r&   r…   rŠ   r0   r‹   r©   õ   ï¼šé°  é   rC   éÜ  ú%m-%d %H:%Mr@   r?   rA   rB   r¶   rª   ©r&   r‡   r‹   ÚrepostsÚcommentsÚ	attitudesÚ	sentimentÚsentiment_scorerA   rB   Ú	market_kwrª   õ     æŠ“åˆ°æ–‡ç« : {} [{}]é#   c                 S   ó   |   dd¡S ©Nr‹   r   ©rŽ   ©Úpr"   r"   r'   Ú<lambda>e  ó    z/wechat_fetch_posts_via_weread.<locals>.<lambda>T©ÚkeyÚreverse)Ú
startswithrn   r–   ro   rN   r‡   Úsleeprµ   rŽ   r*   rX   rL   r­   ÚfromtimestampÚstrftimeÚsort)r�   r   r‘   ÚpostsÚfilteredr“   ÚartÚdetailÚ	full_textÚmk_hitsÚsentr‹   r"   r"   r'   Úwechat_fetch_posts_via_weread2  s`   




ü


ô&rÜ   zuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36r—   c               
   C   sr   t durt S t ¡ } | j t¡ z| jddd� W | a | S  ty8 } ztd 	|¡ƒ W Y d}~| a | S d}~ww )u<   èŽ·å�–æ�œç‹—ä¼šè¯�ï¼ˆå¸¦Cookieï¼Œé™�ä½Žå��çˆ¬æ‹¦æˆªæ¦‚çŽ‡ï¼‰Nz2https://weixin.sogou.com/weixin?type=2&query=stocké   r�   u!     æ�œç‹—åˆ�å§‹åŒ–ä¼šè¯�å¤±è´¥: {})
Ú_sogou_sessionry   rz   r{   r|   ÚSOGOU_HEADERSrŽ   rm   rn   ro   )r~   ru   r"   r"   r'   Úsogou_get_sessions  s   ý€ýrà   c              
   C   s˜  z¯t ƒ }|jdd| dœddidd�}|j}d| ¡ v sd	|v r&td
ƒ g W S t d|¡dd… }g }|D ]x}t d|¡}t d|tj¡}	t d|¡}
t d|¡}|rT|	sUq4t 	dd|	 
d¡¡ ¡ }|
rj|
 
d¡ ¡ nd}d}|r“| 
d¡}| ¡ r~t|ƒ}nztj |d¡ ¡ }W n	 ty’   Y nw | || 
d¡||dœ¡ t|ƒ|d kr¬ |W S q4|W S  tyË } ztd | |¡ƒ g W  Y d}~S d}~ww )uT   æ�œç‹—å¾®ä¿¡æ–‡ç« æ�œç´¢ï¼šè¿”å›žæ–‡ç« åˆ—è¡¨ï¼ˆå�«æ ‡é¢˜/é“¾æŽ¥/è´¦å�·/æ—¶é—´æˆ³ï¼‰zhttps://weixin.sogou.com/weixinrF   )ÚtypeÚqueryr.   zhttps://weixin.sogou.com/r€   ©Úparamsr{   r‚   ZseccodeZ
antispideru&     æ�œç‹—è§¦å�‘éªŒè¯�ç �ï¼Œè·³è¿‡æœ¬è½®z<li id="sogou_vrrC   Nzhref="(/link\?url=[^"]+)"z<h3>\s*<a[^>]*>(.*?)</a>zaccount_name_\d+"[^>]*>([^<]+)<z/timeConvert\("?(20\d{2}-\d{2}-\d{2}|\d{9,10})"?r/   r0   r§   )r…   ÚlinkÚaccountr‹   é   u     æ�œç‹—æ�œç´¢[{}]å¤±è´¥: {})rà   rŽ   r&   rj   rn   r9   ri   rk   r«   r:   rl   r<   r¬   r�   r­   r®   r¯   rm   rL   rN   ro   )râ   Úneedr~   r’   r°   ZblocksÚresultsÚblockZm_urlr±   Z	m_accountr³   r…   ræ   r‹   rs   ru   r"   r"   r'   Úsogou_search_articles�  sV   ý

ÿþ€þrë   c                 C   sr   z.t ƒ }d|  dd¡ }|j|dd |¡idd�}t d|j¡}|s%W d	S d	 |¡ d
d	¡W S  ty8   Y d	S w )uI   è·Ÿéš�æ�œç‹—/linkè·³è½¬èŽ·å�–å¾®ä¿¡æ–‡ç« çœŸå®žURLï¼ˆJSæ‹¼æŽ¥é‡�å®šå�‘ï¼‰zhttps://weixin.sogou.comr3   r4   r.   z/https://weixin.sogou.com/weixin?type=2&query={}r€   r™   zurl \+= '([^']*)';r0   ú@)	rà   r;   rŽ   ro   r9   Úfindallr&   Újoinrm   )Z	link_pathZreferer_queryr~   r†   r’   Úpartsr"   r"   r'   Úsogou_follow_link«  s   ÿÿrð   c              
   C   s°  z½t ƒ }|j| ddidd�}|j}t d|¡pt d|¡}t d|¡p(t d|¡}t d	|¡p4t d
|¡}t d|tj¡}d}|rft dd| d¡¡}| dd¡ dd¡ dd¡ dd¡}t dd|¡ 	¡ }|ro| d¡ 	¡ nd}	|rz| d¡ 	¡ nd}
d}|r¶| d¡}| 
¡ r”t|ƒdkr”t|ƒ}n"| 
¡ s¶dD ]}ztj |dd… |¡ ¡ }W  n	 tyµ   Y qšw |	|
||dœW S  ty× } ztd |¡ƒ W Y d}~dS d}~ww )u>   æŠ“å�–å¾®ä¿¡æ–‡ç« é¡µæ­£æ–‡ï¼Œè¿”å›ž {title, author, text, ts}r.   zhttps://mp.weixin.qq.com/r˜   r™   rš   r›   rœ   r�   rž   rŸ   r    r0   r/   r2   rC   r1   r3   r4   r¡   r8   r¢   r£   Nr¤   r¥   r¨   r©   u     å¾®ä¿¡æ–‡ç« æŠ“å�–å¤±è´¥: {})rà   rŽ   r&   r9   rk   r«   r:   rl   r;   r<   r¬   r�   r­   r®   r¯   rm   rn   ro   )r†   r~   r’   r°   r±   r²   r³   rp   r&   r…   rª   r‹   rs   r´   ru   r"   r"   r'   Úfetch_wechat_article¹  sL   
ÿ
ÿ$

ÿ€þrñ   c                 C   s¸  g d}}t | |d�}|stdƒ ||fS td t|ƒ¡ƒ |D ]ª}t|ƒ|kr* n¡|d d |d  }| |vrA|  dd	¡|vrAq t d
¡ t|d | ƒ}|sPq t d¡ t|ƒ}|r_|d s`q |d d |d dd…  }	t	|	ƒ}
|
sy|d7 }q t
|	ƒ}|d p†|d p†d}| |	dd… |r™tj |¡ d¡nd	|ddd|d |d |d |d |
dd… |d p¶|d dœ¡ td |d dd… |d ¡ƒ q |jdd„ d d!� |d|… |fS )"ul   å¾®ä¿¡å…¬ä¼—å�·ä¸»æµ�ç¨‹ï¼šæ�œç‹—æ�œç´¢ â†’ è·³è½¬ â†’ æŠ“æ­£æ–‡ â†’ è¿‡æ»¤åˆ†æž�ã€‚è¿”å›ž (posts, filtered)r   )rè   u     æ�œç‹—æ— ç´¢å¼•ç»“æžœu     æ�œç‹—ç´¢å¼•åˆ° {} ç¯‡æ–‡ç« ræ   ú|r…   u   çœ‹ç›˜r0   rç   rå   ç      ø?r&   r¸   Nr¹   rC   r‹   r»   r¼   r@   r?   rA   rB   r¶   rª   r½   rÄ   rº   c                 S   rÆ   rÇ   rÈ   rÉ   r"   r"   r'   rË     rÌ   z$wechat_fetch_posts.<locals>.<lambda>TrÍ   )rë   rn   ro   rN   r;   r‡   rÑ   rð   rñ   r*   rX   rL   r­   rÒ   rÓ   rÔ   )râ   r‘   rÕ   rÖ   r“   r×   Zcombor•   rØ   rÙ   rÚ   rÛ   r‹   r"   r"   r'   Úwechat_fetch_postsÞ  sX   




ô"rô   c               
   C   sÂ   t durt S t ¡ } | j t¡ tj t	¡r8t
t	dƒ�}| ¡  ¡ }W d  ƒ n1 s,w   Y  |r8|| jd< z| jddd� W | a | S  ty` } ztd |¡ƒ W Y d}~| a | S d}~ww )u]   èŽ·å�–é›ªç�ƒä¼šè¯�ï¼ˆå…ˆè®¿é—®è¡Œæƒ…é¡µæ‹¿åŒ¿å��tokenï¼ŒRefererç”¨/hqå�¯ç»•è¿‡WAFæ‹¦æˆªAPIï¼‰Nr’   ÚCookieúhttps://xueqiu.com/hqrÝ   r�   u!     é›ªç�ƒåˆ�å§‹åŒ–ä¼šè¯�å¤±è´¥: {})Ú_xq_sessionry   rz   r{   r|   Ú
XQ_HEADERSrc   rd   re   ÚXQ_COOKIE_FILErg   rh   r<   rŽ   rm   rn   ro   )r~   ÚfÚcookieru   r"   r"   r'   Úxq_get_session  s(   ÿ
ý€ýrü   é
   c                 C   s  | sg dfS g d}}zàt ƒ }tddƒD ]Å}t|ƒ|kr n¼|jd| |dddœddd	œd
d�}|jdkr>td |j¡ƒ  nœ| ¡ }| dg ¡}|sL nŽ|D ]…}	t|	 d¡pWdƒ}
t|	 d¡pe|	 d¡pedƒ}|
ro|
d | n|}|ryt|ƒdk rzqNt	|ƒ}|s…|d7 }qN|	 dd¡}|dkr“|d n|}t
|ƒ}| |dd… |r«tj |¡ d¡nd||	 dd¡|	 dd¡p¹d|	 dd¡|d |d |d |d  |dd… d!œ¡ qNt d"¡ q|jd#d$„ d%d&� |d|… |fW S  t�y	 } ztd' | |¡ƒ W Y d}~||fS d}~ww )(uW   èŽ·å�–é›ªç�ƒç”¨æˆ·æ—¶é—´çº¿ï¼Œè¿‡æ»¤ä¸Žå¸‚åœºæ— å…³çš„å†…å®¹ã€‚è¿”å›ž (posts, filtered)r   rC   r¶   z.https://xueqiu.com/statuses/user_timeline.jsoné   )Zuser_idÚpager‘   rá   rö   r+   )r.   r-   rÝ   rã   rƒ   u     é›ªç�ƒAPIçŠ¶æ€�ç �: {}Ústatusesr…   r0   Údescriptionr&   r¸   Ú
created_atrˆ   r‰   Nr»   r¼   Zretweet_countZreply_countZ
like_countr@   r?   rA   rB   ©r&   r‡   r‹   r¾   r¿   rÀ   rÁ   rÂ   rA   rB   rÃ   ró   c                 S   rÆ   rÇ   rÈ   rÉ   r"   r"   r'   rË   `  rÌ   z xq_fetch_posts.<locals>.<lambda>TrÍ   u(     é›ªç�ƒèŽ·å�–ç”¨æˆ·[{}]å¸–å­�å¤±è´¥: {})rü   ÚrangerN   rŽ   Ústatus_codern   ro   r�   r=   r*   rX   rL   r­   rÒ   rÓ   r‡   rÑ   rÔ   rm   )r   r‘   rÕ   rÖ   r~   rÿ   r’   r   r   r”   r…   Úbodyr&   rÚ   Zts_msr‹   rÛ   ru   r"   r"   r'   Úxq_fetch_posts.  sp   
ÿü





õ€þr  c              
   C   s¦   z3d  | ¡}tj||dd�}|jdkr2| ¡ }| di ¡ di ¡}|r2t| d| ¡ƒ| dd	¡fW S W n tyL } ztd
  |¡ƒ W Y d}~nd}~ww t| ƒd	fS )u    é€šè¿‡PCç‰ˆAPIèŽ·å�–ç”¨æˆ·ä¿¡æ�¯z*https://weibo.com/ajax/profile/info?uid={}rÝ   r™   rƒ   r   ÚuserÚidÚscreen_namer0   u#     PCç‰ˆèŽ·å�–ç”¨æˆ·ä¿¡æ�¯å¤±è´¥: {}N©ro   ry   rŽ   r  r�   rŒ   rm   rn   )r   r{   r†   r’   r   r  ru   r"   r"   r'   Úpc_get_user_infoh  s   

€€ÿr  c              
   C   s¬   z;d  | ¡}tj||dd�}|jdkr6| ¡ }| di ¡ dg ¡}|r9|d }t| dd	¡ƒ| d
d	¡fW S W dS W dS  tyU } ztd  |¡ƒ W Y d}~dS d}~ww )u   é€šè¿‡PCç‰ˆAPIæ�œç´¢ç”¨æˆ·z8https://weibo.com/ajax/profile/searchProfile?q={}&page=1rÝ   r™   rƒ   r   Úusersr   r	  r0   r
  u     PCç‰ˆæ�œç´¢ç”¨æˆ·å¤±è´¥: {}N©r0   r0   r  )r   r{   r†   r’   r   r  r  ru   r"   r"   r'   Úpc_search_userv  s$   

ûûþ€þr  c                 C   sd   | sdS zt j  | d¡}| ¡ W S  ty1   zt j  | d¡}| ¡ W  Y S  ty0   Y Y dS w w )u'   è§£æž�å¾®å�šæ—¶é—´å­—ç¬¦ä¸²ä¸ºæ—¶é—´æˆ³r   z%a %b %d %H:%M:%S %z %Yr¦   )r­   r®   r¯   rm   )ÚtZdtr"   r"   r'   Úparse_weibo_time…  s   
ÿür  c                 C   s,  | sg dfS g d}}zít ddƒD ]Õ}t|ƒ|kr nÌd}| |ddœ}tj|||dd�}|jdkr3 n´| ¡ }	|	 d	i ¡ d
g ¡}
|
sE n¢|
D ]™}t|tƒsOqG| dd¡pZ| dd¡}t|ƒ}|rgt|ƒdk rhqG| d¡}|r‰t| dd¡p{| dd¡ƒ}|r‰|d|dd…  7 }t	|ƒ}|s”|d7 }qG| dd¡}| dd¡}| dd¡}| dd¡}t
|ƒ}t|ƒ}| |dd… |rÆtj |¡ d¡n||||||d |d |d |d |dd… dœ¡ qGt d¡ q|jdd„ d d!� |d|… |fW S  t�y } ztd" |¡ƒ W Y d}~||fS d}~ww )#u°   é€šè¿‡PCç‰ˆAPIèŽ·å�–ç”¨æˆ·å¾®å�šå¸–å­� (mymblogæŽ¥å�£)ï¼Œè¿‡æ»¤ä¸Žå¸‚åœºæ— å…³çš„å†…å®¹ã€‚
    è¿”å›ž (posts, filtered_count)ï¼šç›¸å…³å¾®å�šåˆ—è¡¨ + è¢«è¿‡æ»¤çš„æ— å…³å¾®å�šæ•°r   rC   r¶   z'https://weibo.com/ajax/statuses/mymblog)r   rÿ   ZfeaturerÝ   rã   rƒ   r   rQ   Ztext_rawr0   r&   Úretweeted_statusõ
    [è½¬å�‘] Néd   r  Úreposts_countÚcomments_countÚattitudes_countr»   r¼   r@   r?   rA   rB   r  ró   c                 S   rÆ   rÇ   rÈ   rÉ   r"   r"   r'   rË   Ë  rÌ   z pc_fetch_posts.<locals>.<lambda>TrÍ   u     PCç‰ˆèŽ·å�–å¾®å�šå¤±è´¥: {})r  rN   ry   rŽ   r  r�   Ú
isinstanceÚdictr=   r*   rX   r  rL   r­   rÒ   rÓ   r‡   rÑ   rÔ   rm   rn   ro   )r   r{   r‘   rÕ   rÖ   rÿ   r†   rä   r’   r   r   r”   Úraw_textr&   ÚrepostÚrepost_textrÚ   r  r¾   r¿   rÀ   rÛ   r‹   ru   r"   r"   r'   Úpc_fetch_posts“  sv   






õ€þr  c              
   C   sD  z†d}d  | ¡ddœ}tj|||dd�}|jdkr�| ¡ }| di ¡ d	g ¡}|D ]Z}| d
¡dkr\| dg ¡D ]#}| d¡}	|	r[|	 d¡r[t|	 dd¡ƒ}
t|	d ƒ|
f    W S q8| d
¡dkr€| d¡}	|	r€|	 d¡r€t|	d ƒt|	 dd¡ƒf  W S q)W dS W dS  ty¡ } ztd  | |¡ƒ W Y d}~dS d}~ww )u+   é€šè¿‡ m.weibo.cn æ�œç´¢ç”¨æˆ·ï¼Œè¿”å›ž uidú)https://m.weibo.cn/api/container/getIndexz100103type=3&q={}Z	searchall)ÚcontaineridZ	page_typerÝ   rã   rƒ   r   ÚcardsÚ	card_typeé   Z
card_groupr  r	  r
  r0   rý   u%     ç§»åŠ¨ç‰ˆæ�œç´¢ç”¨æˆ·[{}]å¤±è´¥: {}Nr  )	ro   ry   rŽ   r  r�   r=   rŒ   rm   rn   )r   r{   r†   rä   r’   r   r   Úcardr”   r  Úunameru   r"   r"   r'   Úmobile_search_userÓ  s>   þ

€
"€óóþ€þr%  c                 C   sÐ  | sg dfS g d}}z¿d}dd  | ¡i}tj|||dd�}|jdkrÆ| ¡ }| di ¡ d	g ¡}	|	D ]�}
|
 d
¡dkr=q3|
 di ¡}| dd¡}t|ƒ}|rUt|ƒdk rVq3| d¡}|rqt| dd¡ƒ}|rq|d|dd…  7 }t|ƒ}|s||d7 }q3| dd¡}| dd¡}| dd¡}| dd¡}t|ƒ}| 	|dd… |||||d |d |d |d |dd… dœ
¡ t|ƒ|krÀ nq3||fW S W ||fS  t
yç } ztd  | |¡ƒ W Y d}~||fS d}~ww ) uf   èŽ·å�–ç”¨æˆ·æœ€æ–°å¾®å�šå¸–å­� (ç§»åŠ¨ç‰ˆ)ï¼Œè¿‡æ»¤ä¸Žå¸‚åœºæ— å…³çš„å†…å®¹ã€‚è¿”å›ž (posts, filtered)r   r  r  z107603{}rÝ   rã   rƒ   r   r   r!  é	   Úmblogr&   r0   r¶   r  r  Nr  rC   r  r  r  r  r»   r@   r?   rA   rB   )
r&   r‡   r¾   r¿   rÀ   rÁ   rÂ   rA   rB   rÃ   u+     ç§»åŠ¨ç‰ˆèŽ·å�–ç”¨æˆ·[{}]å¾®å�šå¤±è´¥: {})ro   ry   rŽ   r  r�   r=   rN   r*   rX   rL   rm   rn   )r   r{   r‘   rÕ   rÖ   r†   rä   r’   r   r   r#  r'  r  r&   r  r  rÚ   r  r¾   r¿   rÀ   rÛ   ru   r"   r"   r'   Úmobile_fetch_postsî  sn   




öÿ
Ø+þ€þr(  c                  C   sZ   t j dd¡} | s+t j t¡r+ttdƒ�}| ¡  ¡ } W d  ƒ | S 1 s&w   Y  | S )u*   ä»Žæ–‡ä»¶æˆ–çŽ¯å¢ƒå�˜é‡�åŠ è½½å¾®å�šCookieZWEIBO_COOKIEr0   r’   N)	rc   ÚenvironrŽ   rd   re   ÚCOOKIE_FILErg   rh   r<   )rû   rú   r"   r"   r'   Úload_cookie&  s   
ÿþr+  c                    s&   ˆ sdS g d¢}t ‡ fdd„|D ƒƒS )uI   åˆ¤æ–­Cookieæ˜¯PCç‰ˆè¿˜æ˜¯ç§»åŠ¨ç‰ˆ (PCç‰ˆå�« SUBP æˆ– SSOLoginState ç­‰)F)ZSUBPZSCFZSSOLoginStateZ	_s_tentryZUORc                 3   s   � | ]}|ˆ v V  qd S )Nr"   )r#   rr   ©rû   r"   r'   Ú	<genexpr>3  ó   € zis_pc_cookie.<locals>.<genexpr>)Úany)rû   Zpc_indicatorsr"   r,  r'   Úis_pc_cookie.  s   r0  c                 C   sZ   |r(t |ƒrttƒ}||d< t| |ƒ\}}|r||fS ttƒ}||d< t| |ƒS t| tƒS )u*   æ�œç´¢ç”¨æˆ·ï¼Œè‡ªåŠ¨é€‰æ‹©PC/ç§»åŠ¨ç‰ˆAPIrõ   )r0  r  Ú
PC_HEADERSr  ÚMOBILE_HEADERSr%  )r   rû   r{   r   r
  r"   r"   r'   Úsearch_user5  s   

r3  c                 C   sh   |r.t |ƒr ttƒ}||d< t| ||ƒ\}}|r||fS tdƒ ttƒ}||d< t| ||ƒS t| t|ƒS )u€   èŽ·å�–ç”¨æˆ·å¾®å�šå¸–å­�ï¼ˆå·²è¿‡æ»¤ä¸Žå¸‚åœºæ— å…³å†…å®¹ï¼‰ï¼Œè‡ªåŠ¨é€‰æ‹©PC/ç§»åŠ¨ç‰ˆAPIã€‚
    è¿”å›ž (posts, filtered_count)rõ   u%     PCç‰ˆæ— ç»“æžœï¼Œå°�è¯•ç§»åŠ¨ç‰ˆ...)r0  r  r1  r  rn   r2  r(  )r   rû   r‘   r{   rÕ   rÖ   r"   r"   r'   Úfetch_postsE  s   r4  c                 C   s2   |rt |ƒrttƒ}||d< t| |ƒS t| ƒdfS )u/   èŽ·å�–ç”¨æˆ·ä¿¡æ�¯ï¼ˆç”¨äºŽè¡¥å……screen_nameï¼‰rõ   r0   )r0  r  r1  r  rŒ   )r   rû   r{   r"   r"   r'   Úget_user_infoX  s
   
r5  c                  C   sX  t stdƒ tdƒ d S tjtdd� tƒ } | rt| ƒnd}| r,td |r'dnd¡ƒ ntd	ƒ td
ƒ td d 	dd„ t
D ƒ¡¡ƒ g }t
D �]:}| dd¡}td |d dddœ |d¡¡ƒ | dd¡}|d }|dkr†t|dƒ\}}td t|ƒ|¡ƒ t d¡ n˜|dkrÄ|r“| d¡r“|nd}	g d}}|	r©tƒ r©t|	|d d ƒ\}}|s´t|d! d"ƒ\}}td# t|ƒ|¡ƒ t d"¡ nZ|sät|d! | ƒ\}}|rÚtd$ ||¡ƒ ntd%ƒ t d"¡ ntd& |¡ƒ |rÿt|| ƒ\}
}|rÿ|}td' |¡ƒ g d}}|�rt|| dƒ\}}td( t|ƒ|¡ƒ t d"¡ |�r]d)d*„ |D ƒ}t|ƒt|ƒ }td+d„ |D ƒƒ}td,d„ |D ƒƒ}t|ƒ| | }|d-k�rRd.}n|d/k �rZd0}nd1}nd2\}}}}d1}| |d ||||d d… |t|dƒ|||t|ƒ|d3œ¡ qGtd4d„ |D ƒƒ}td5d„ |D ƒƒ}td6d„ |D ƒƒ}d7d*„ |D ƒ}|�rµtd8d„ |D ƒƒt|ƒ nd}|d-k�r¿d.}n
|d/k �rÇd0}nd1}t|ƒdktj ¡  d9¡||t|dƒ|||td:d„ |D ƒƒtd;d„ |D ƒƒd<œ
}ttd=d>d?��}tj ||ddd@� W d   ƒ n	1 �sw   Y  tdA t¡ƒ tdB ||¡ƒ tdC |||¡ƒ d S )DNu.   requests åº“æœªå®‰è£…ï¼Œè·³è¿‡å¤§VåŠ¨æ€�æŠ“å�–u   requestsåº“æœªå®‰è£…T©Úexist_okFu7   === å¤§VåŠ¨æ€�æƒ…ç»ªç›‘æµ‹ (å·²é…�ç½®Cookie, {}ç‰ˆ) ===ÚPCu   ç§»åŠ¨uB   === å¤§VåŠ¨æ€�æƒ…ç»ªç›‘æµ‹ (æ— Cookie - å¾®å�šAPIå�¯èƒ½å�—é™�) ===uL   æ��ç¤º: å°†å¾®å�šCookieä¿�å­˜åˆ° data/weibo_cookie.txt å�¯å�¯ç”¨å®Œæ•´æŠ“å�–u   ç›‘æµ‹å¯¹è±¡: {}z, c                 s   ó   � | ]}|d  V  qdS )r   Nr"   ©r#   Údr"   r"   r'   r-  n  r.  zmain.<locals>.<genexpr>r   r   u   
å¤„ç�†: {} [{}] ...r   u   é›ªç�ƒu   å¾®ä¿¡)r   r	   u   å¾®å�šr   r0   r   rý   u=     ä¿�ç•™ {} æ�¡å¸‚åœºç›¸å…³å¸–å­� (è¿‡æ»¤ {} æ�¡æ— å…³å†…å®¹)rF   r	   r·   r   rG   r   rç   u=     ä¿�ç•™ {} æ�¡å¸‚åœºç›¸å…³æ–‡ç«  (è¿‡æ»¤ {} æ�¡æ— å…³å†…å®¹)u     æ‰¾åˆ°ç”¨æˆ·: {} (uid={})u     æœªæ‰¾åˆ°ç”¨æˆ·ï¼Œè·³è¿‡u     ä½¿ç”¨é¢„è®¾UID: {}u     ç”¨æˆ·å��: {}u=     ä¿�ç•™ {} æ�¡å¸‚åœºç›¸å…³å¾®å�š (è¿‡æ»¤ {} æ�¡æ— å…³å†…å®¹)c                 S   s   g | ]}|d  ‘qS )rÂ   r"   )r#   rÊ   r"   r"   r'   r(   Ÿ  s    zmain.<locals>.<listcomp>c                 s   s   � | ]	}|d krdV  qdS )ç333333Ã?rC   Nr"   ©r#   r~   r"   r"   r'   r-  ¡  ó   € c                 s   s   � | ]	}|d k rdV  qdS )ç333333Ã¿rC   Nr"   r=  r"   r"   r'   r-  ¢  r>  r<  rD   r?  rE   r>   )r   r   r   r   )r   r
  r   r   rÕ   Úoverallr?   Ú
bull_countÚ
bear_countÚneutral_countÚ
post_countÚfiltered_countc                 s   r9  )rA  Nr"   ©r#   r’   r"   r"   r'   r-  ½  r.  c                 s   r9  )rB  Nr"   rF  r"   r"   r'   r-  ¾  r.  c                 s   r9  )rC  Nr"   rF  r"   r"   r'   r-  ¿  r.  c                 S   s   g | ]
}|d  dkr|‘qS )rD  r   r"   rF  r"   r"   r'   r(   À  s    c                 s   r9  )r?   Nr"   rF  r"   r"   r'   r-  Á  r.  ú%Y-%m-%d %H:%M:%Sc                 s   r9  )rD  Nr"   rF  r"   r"   r'   r-  Ó  r.  c                 s   s   � | ]	}|  d d¡V  qdS )rE  r   NrÈ   rF  r"   r"   r'   r-  Ô  r>  )
ÚokÚ
fetch_timeÚdavsÚoverall_sentimentÚoverall_scoreÚ
total_bullÚ
total_bearÚtotal_neutralÚtotal_postsZtotal_filteredÚwr[   r\   ©Zensure_asciiÚindentu&   
=== å¤§Væƒ…ç»ªæ•°æ�®å·²ä¿�å­˜: {} ===u   æ€»ä½“æƒ…ç»ª: {} (score={})u$   çœ‹å¤š: {} | çœ‹ç©º: {} | ä¸­æ€§: {})!ÚHAS_REQUESTSrn   Ú_save_emptyrc   ÚmakedirsÚWORK_DIRr+  r0  ro   rî   ÚDAV_LISTrŽ   r  rN   r‡   rÑ   rÐ   r   rÜ   rô   r3  r5  r4  ÚsumrL   rP   r­   ÚnowrÓ   rg   ÚOUTPUT_FILEr�   Údump)rû   Zuse_pcré   Zdavr   r   r
  rÕ   Z
filtered_nr�   Ú_ZsnameZscoresZ	avg_scorerU   rV   Z	neutral_nr@  rM  rN  rO  ZvalidrL  rK  Úoutputrú   r"   r"   r'   Úmain`  sÌ   
"







ô$


öÿr_  c                 C   s�   t jtdd� dtj ¡  d¡| dd„ tD ƒddddddd	œ
}ttd
dd��}t	j
||ddd� W d  ƒ n1 s:w   Y  td t¡ƒ dS )u   ä¿�å­˜ç©ºæ•°æ�®ç»“æž„Tr6  FrG  c                 S   s&   g | ]}|d  g dddddddœ‘qS )r   r>   r   )r   rÕ   r@  r?   rA  rB  rC  rD  r"   r:  r"   r"   r'   r(   å  s
    þ
ÿz_save_empty.<locals>.<listcomp>r>   r   )
rH  rI  ÚerrorrJ  rK  rL  rM  rN  rO  rP  rQ  r[   r\   rF   rR  Nu"   å¤§Væƒ…ç»ªæ•°æ�®(ç©º)å·²ä¿�å­˜: {})rc   rV  rW  r­   rZ  rÓ   rX  rg   r[  r�   r\  rn   ro   )Úreasonr^  rú   r"   r"   r'   rU  Þ  s   þ÷ÿrU  Ú__main__)rG   )r¶   )rý   )@Ú__doc__r�   rc   r‡   r9   r­   Úsysry   rT  ÚImportErrorrd   ÚdirnameÚabspathÚ__file__ZBASE_DIRrî   rW  r[  r*  rù   rf   rX  rH   rM   rK   r)   r*   r2  r1  r=   rX   r}   rw   rx   rv   r   r–   rµ   rÜ   rß   rÞ   rà   rë   rð   rñ   rô   rø   r÷   rü   r  r  r  r  r  r%  r(  r+  r0  r3  r4  r5  r_  rU  Ú__name__r"   r"   r"   r'   Ú<module>   s¤   0ÿú
û
û2ý
+
+9ü
*
%4ü
:
@
8
~

ÿ