
    fiI8              	          d Z ddlZddlZddlZddlmZ dedefdZ		 ddeded	edej
        fd
Zdedej
        fdZdedej
        fdZdded	edej
        fdZ	 dded	edej
        fdZdedej
        fdZ	 dded	edej
        fdZdedej
        fdZdded	edej
        fdZedk    r^ ed          Z ee            ed          Z ee            ed          Z ee            ed          Z ee           dS dS )u_   
Date: 2025/12/1 22:00
Desc: 百度股市通-经济数据
https://gushitong.baidu.com/calendar
    N)requestsheadersreturnc           	         	 t          j                    5 }|j                            |            |                    ddd          }|                                 |j                            d          }|j                            d          }t          ||g          st          d          d}t          j
        ||j                  }|s+t          j
        d	|j                  }|st          d
          |                                                    d          rd|                                z   n|                                }|                    |dd          }|                                 |j                            d          }	|j                            d          }
t          |	|
g          st          d          d| d| d|	 d|
 	 cddd           S # 1 swxY w Y   dS # t           j        j        $ r%}t!          dt#          |                     |d}~wt          j        $ r%}t          dt#          |                     |d}~ww xY w)u   
    安全获取百度股市通所需的Cookie
    :param headers: 基础请求头
    :return: 格式化的Cookie字符串
    :raises ValueError: 当无法获取必要Cookie时
    :raises ConnectionError: 网络请求失败时
    z$https://gushitong.baidu.com/calendar	chrome110
   )impersonatetimeoutBAIDUIDBAIDUID_BFESSz)Missing BAIDUID cookies in first responsez"https://hm\.baidu\.com/hm\.js\?\w+z//hm\.baidu\.com/hm\.js\?\w+z)Failed to extract hm.js URL from responsez//zhttps:	HMACCOUNTHMACCOUNT_BFESSz,Missing HMACCOUNT cookies in second responsezBAIDUID=z; BAIDUID_BFESS=z; HMACCOUNT=z; HMACCOUNT_BFESS=NzNetwork request failed: zRegex pattern error: )r   Sessionr   updategetraise_for_statuscookiesall
ValueErrorresearchtextgroup
startswith
exceptionsRequestExceptionConnectionErrorstrerror)r   sessionresp1baiduidbaiduid_bfess
hm_patternhm_matchhm_urlresp2
hmac_counthmac_count_bfesses               B/usr/local/lib/python3.11/dist-packages/akshare/news/news_baidu.py_get_baidu_cookier,      s   7B 0	7O""7+++ KK6'    E
 ""$$$ m''	22G!M--o>>M/00 N !LMMM ?JyUZ88H R9%DejQQ R$%PQQQ >>##..t44&8>>++++^^%%  KKKKLLE""$$$ **;77J$}001BCC
$4566 Q !OPPP67 6 6!.6 6'6 6 $46 6W0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	 0	d / J J JAQAABBI8 B B B9Q99::ABsG   G3 GG&G3 &G**G3 -G*.G3 3I H''I9 IIdatecatecookiec           
         d                     | dd         | dd         | dd         g          }||dd|dd}d	d
dddddddd	}|U	 t          |                                          }n2# t          $ r%}t	          dt          |                     |d}~ww xY w||d<   d}t          j                    }	|}
d}|                                }t          j	        |||d          }|
                                 |                                }d|v rNd|d         v rD|d         d         }|D ]3}|	                    d          |
k    r|	                    dd          } n4|dk    rt          j        |dz            nd}t          |          D ]}|dk    re|                                }t          |          |d<   t          j	        |||          }|
                                 |                                }d|v rrd|d         v rh|d         d         D ]Y}|	                    d          |
k    r>|	                    d           r) ||d                    }t          j        |	|gd!"          }	Z|	S )#u"  
    百度股市通日历数据基础函数（支持分页）
    :param date: 查询日期 (格式: YYYYMMDD)
    :param cate: 数据类别 ("economic_data" 或 "notify_suspend")
    :param process_func: 数据处理函数
    :param cookie: cookie
    :return: 处理后的DataFrame
    -N      0100pc)
start_dateend_datepnrnr.   finClientTypez#application/vnd.finance-web.v1+jsonzgzip, deflate, br, zstdzen,zh-CN;q=0.9,zh;q=0.8zno-cachezhttps://gushitong.baidu.comzu=1, izhttps://gushitong.baidu.com/zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36)	acceptzaccept-encodingzaccept-languagezcache-controloriginpragmapriorityrefererz
user-agentz Failed to obtain Baidu cookies: r/   z5https://finance.pae.baidu.com/sapi/v1/financecalendarr   r   )urlparamsr   r	   ResultcalendarInfor-   totald      r9   )rA   rB   r   listT)ignore_index)joinr,   copy	ExceptionRuntimeErrorr   pd	DataFramer   r   r   jsonmathceilrangeconcat)r-   r.   process_funcr/   formatted_datebase_paramsr   r*   rA   big_dftarget_datetotal_recordsrB   response	data_jsoncalendar_infoitemtotal_pagespageprocessed_dfs                       r+   _baidu_finance_calendarrb   R   s    XXtBQBxacDH=>>N %" K 844#/1) G ~	S&w||~~66FF 	S 	S 	SJ#a&&JJKKQRR	S GH
AC\^^F !KM F|[  H I 99X3F!F!F!(+N; " 	 	Dxx;.. $! 4 4 /
 5BA4E4E$)MC/0001K k"" R R!88 %%''Ft99F4L|FGLLLH%%''' I y  ^y7J%J%J!(+N; R R88F##{22txx7G7G2#/<V#=#=LY'=DQQQFMs   	!A+ +
B5 BB	data_listc                    | st          j                    S t          j        |           }ddddddddd	d
d
}|                    |d           g d}|D ]}||j        vrd||<   g }dD ] }||j        v r|                    |           !|r||         }dD ]*}||j        v rt          j        ||         d          ||<   +d|j        v r)t          j        |d         d          j        j        |d<   |S )u   处理经济数据   日期   时间   事件	   重要性   前值   公布   地区   预期   国家   统计周期)
r-   timetitlestar	formerValpubValregionindicateValcountry
timePeriodTcolumnsinplace)rj   rl   ri   rh   N)
re   rf   rm   rk   rg   rn   rj   rl   ri   rh   coerceerrors	rN   rO   renamery   append
to_numericto_datetimedtr-   )rc   temp_dfrename_dictrequired_colscolavailable_colss         r+   _process_economic_datar      sU    |~~l9%%G$ K NN;N555???M    go%%GCLN ' ' '/!!!!#&&& *.): H H'/!!=hGGGGCL7?""N78+<XNNNQVN    c                     | st          j                    S t          j        |           }ddddddddd	d
ddd}|                    |d           d|j        vrd|d<   |g d         }|S )u:   处理停复牌数据 - 根据实际JSON结构精确修正   股票代码   股票简称   交易所代码   停牌时间   停牌事项说明   市值   公告日期   公告时间   证券类型   市场类型   是否跳过   复牌时间)codenameexchangestartreasonmarketValuer-   ro   typemarketisSkipendTrx   r1   )r   r   r   r   r   r   r   r   r   r   r   r   )rN   rO   r   ry   rc   r   r   s      r+   _process_suspend_datar      s     |~~l9%%G%&   K NN;N555W_,,"%	
 	
 	
G  Nr   20251126c                 2    t          | dt          |          S )u   
    百度股市通-经济数据
    https://gushitong.baidu.com/calendar
    :param date: 查询日期 (格式: YYYYMMDD)
    :param cookie: cookie
    :return: 经济数据DataFrame
    economic_datar-   r.   rU   r/   )rb   r   r-   r/   s     r+   news_economic_baidur   	  s'     #+	   r   c                 2    t          | dt          |          S )u   
    百度股市通-交易提醒-停复牌
    https://gushitong.baidu.com/calendar
    :param date: 查询日期 (格式: YYYYMMDD)
    :param cookie: cookie
    :return: 停复牌数据DataFrame
    notify_suspendr   )rb   r   r   s     r+   news_trade_notify_suspend_baidur     s'     #*	   r   c                    | st          j                    S t          j        |           }ddddddddd	d
d
}|                    |d           d|j        vrd|d<   d
|j        vrd|d
<   d|j        vrd|d<   d	|j        vrd|d	<   |g d         }d|j        v r)t          j        |d         d          j        j        |d<   d|j        v r)t          j        |d         d          j        j        |d<   |S )u   处理分红派息数据r   r1   	   交易所r   	   除权日	   报告期   分红   送股   转增   实物)
r   r   r   r   diviDater-   diviCashshareDividetransferphysicalTrx   )	r   r   r   r   r   r   r   r   r   r{   r|   )rN   rO   r   ry   r   r   r-   r   s      r+   _process_dividend_datar   +  sK    |~~l9%%G  K NN;N555 w&&w&&w&&w&& 
	
 
	
 
	
G go%%!~gk.B8TTTW\go%%!~gk.B8TTTW\Nr   c                 2    t          | dt          |          S )u   
    百度股市通-交易提醒-分红派息
    https://gushitong.baidu.com/calendar
    :param date: 查询日期 (格式: YYYYMMDD)
    :param cookie: cookie
    :return: 交易提醒-分红派息DataFrame
    notify_divider   )rb   r   r   s     r+    news_trade_notify_dividend_baidur   c  s'     #+	   r   c           	      H   | st          j                    S t          j        |           }ddddddddd	}|                    |d
           d|j        vrd|d<   d|j        vrd|d<   d|j        vrd|j        v r|d         |d<   g }dD ] }||j        v r|                    |           !|r	||         }nt          j                    S d|j        v rt          j        |d         d          |d<   d|j        v r)t          j        |d         d          j        j        |d<   |S )u=   处理财报发行数据 - 根据实际JSON结构精确修正r   r   r      财报类型   发布时间r   u	   总市值   发布日期)r   r   r   
reportTypero   r   capitalizationr-   Trx   r1   )r   r   r   r   r   r   r   r{   r|   r~   )rc   r   r   r   r   s        r+   _process_report_datar   u  s    |~~ l9%%G $%	 	K NN;N555 W_,,"%W_,,"%w&&;'/+I+I#K0 N 
' 
' '/!!!!#&&& .) |~~ 7?""M'(*;HMMM(("$.N#H#
 #
 #

T 	 Nr   c                 2    t          | dt          |          S )u   
    百度股市通-财报发行
    https://gushitong.baidu.com/calendar
    :param date: 查询日期 (格式: YYYYMMDD)
    :param cookie: cookie
    :return: 财报发行DataFrame
    report_timer   )rb   r   r   s     r+   news_report_time_baidur     s&     #4HQW   r   __main__)r-   )N)r   N)__doc__rQ   r   pandasrN   	curl_cffir   dictr   r,   rO   rb   rH   r   r   r   r   r   r   r   r   __name__news_economic_baidu_dfprint"news_trade_notify_suspend_baidu_df#news_trade_notify_dividend_baidu_dfnews_report_time_baidu_df r   r+   <module>r      s     				          ?Bt ?B ?B ?B ?B ?BF 7;[ [
[[03[\[ [ [ [|-d -r| - - - -`&T &bl & & & &R c  r|    " +/ 
$'\   $5d 5r| 5 5 5 5r +/ 
$'\   $:D :R\ : : : :z
 
 
3 
", 
 
 
 
 z00jAAA	E
 !!!)H)H* * *& 
E
,---*J*J+ + +' 
E
-... 6 6J G G G	E
#$$$$$ r   