o
    i                     @   s   d Z ddlZddlmZ ddlmZ z
ddl	m
Z
mZ W n ey-   ddlm
Z
mZ Y nw ddlZddlZddd	Zdd
dZdddZdddZdddZdddZdS )uc   
电影票房 
Created on 2015/12/24
@author: Jimmy Liu
@group : waditu
@contact: jimmysoa@sina.cn
    N)cons)dateu)urlopenRequest   MbP?c                 C   s   t | D ]k}t| z'ttjtjd tjd tjt	 f }t
|dd }t|dk r1W  dS W n tyH } z
t| W Y d}~qd}~ww ttjrS|dn|}t|d }|jd	d
gdd}t |d< |  S dS )u  
    获取实时电影票房数据
    数据来源：EBOT艺恩票房智库
    Parameters
    ------
        retry_count : int, 默认 3
                  如遇网络等问题重复执行的次数
        pause : int, 默认 0
                 重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
     return
     -------
        DataFrame 
              BoxOffice     实时票房（万） 
              Irank         排名
              MovieName     影片名 
              boxPer        票房占比 （%）
              movieDay      上映天数
              sumBoxOffice  累计票房（万） 
              time          数据获取时间
    httpmbox
   timeout   Nutf-8data2MovieImgmId   axistime)ranger   sleepr   ct	MOVIE_BOXP_TYPEDOMAINSBOX_randomr   readlen	ExceptionprintjsonloadsPY3decodepd	DataFramedropduget_now)retry_countpause_requestlinesejsdf r3   M/opt/alphahud/venv/lib/python3.10/site-packages/tushare/internet/boxoffice.pyrealtime_boxoffice   s(   
r5   c           	      C   s   t |D ]y}t| z;| du rd} nttt | d } ttj	tj
d tjd tj| t f }t|dd }t|dk rEW  dS W n ty\ } z
t| W Y d}~qd}~ww ttjrg|d	n|}t|d
 }|jg ddd}|  S dS )u1  
    获取单日电影票房数据
    数据来源：EBOT艺恩票房智库
    Parameters
    ------
        date:日期，默认为上一日
        retry_count : int, 默认 3
                  如遇网络等问题重复执行的次数
        pause : int, 默认 0
                 重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
     return
     -------
        DataFrame 
              AvgPrice      平均票价
              AvpPeoPle     场均人次
              BoxOffice     单日票房（万）
              BoxOffice_Up  环比变化 （%）
              IRank         排名
              MovieDay      上映天数
              MovieName     影片名 
              SumBoxOffice  累计票房（万） 
              WomIndex      口碑指数 
    Nr   r   r   r	   r
   r   r   r   data1)r   
BoxOffice1MovieIDDirector	IRank_pror   )r   r   r   intr)   diff_daytodayr   r   BOXOFFICE_DAYr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   	dater+   r,   r-   r.   r/   r0   r1   r2   r3   r3   r4   day_boxoffice:   s,   

rA   c           	      C   s  | du rt ddd } nt| dkrttj dS | d7 } t|D ]d}t| z&t	tj
tjd tjd tj| f }t|d	d
 }t|dk rOW  dS W n tyf } z
t| W Y d}~q#d}~ww ttjrq|dn|}t|d }|jddgdd}|  S dS )u1  
    获取单月电影票房数据
    数据来源：EBOT艺恩票房智库
    Parameters
    ------
        date:日期，默认为上一月，格式YYYY-MM
        retry_count : int, 默认 3
                  如遇网络等问题重复执行的次数
        pause : int, 默认 0
                 重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
     return
     -------
        DataFrame 
              Irank         排名
              MovieName     电影名称
              WomIndex      口碑指数
              avgboxoffice  平均票价
              avgshowcount  场均人次
              box_pro       月度占比
              boxoffice     单月票房(万)     
              days          月内天数
              releaseTime   上映日期
    Nir         z-01r   r	   r
   r   r   r   r6   defaultImage	EnMovieIDr   r   )r)   day_last_weekr   r!   r   BOX_INPUT_ERR_MSGr   r   r   r   BOXOFFICE_MONTHr   r   r   r   r   r    r"   r#   r$   r%   r&   r'   r(   r?   r3   r3   r4   month_boxofficeh   s2   

rI   c                 C   sj   | du r	t d} t }t  tddD ]}t| |||}|dur*t||g}q|	 }|j
ddS )uz  
        获取影院单日票房排行数据
        数据来源：EBOT艺恩票房智库
        Parameters
        ------
            date:日期，默认为上一日
            retry_count : int, 默认 3
                      如遇网络等问题重复执行的次数
            pause : int, 默认 0
                     重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
         return
         -------
            DataFrame 
                  Attendance         上座率
                  AvgPeople          场均人次
                  CinemaName         影院名称  
                  RowNum             排名
                  TodayAudienceCount 当日观众人数
                  TodayBox           当日票房
                  TodayShowCount     当日场次
                  price              场均票价（元）
    Nr      T)r(   )r)   rF   r&   r'   r   _write_headr   _day_cinemaconcatdrop_duplicatesreset_index)r@   r+   r,   dataxr2   r3   r3   r4   
day_cinema   s   
rS   r   c           
      C   s   t   t|D ]d}t| z'tt jt jd t jd t j	|| f }t
|dd }t|dk r5W  d S W n tyL } z
t| W Y d }~qd }~ww tt jrW|dn|}t|d }	|	jdgd	d
}	|	  S d S )Nr   r	   r
   r   r   r   r6   CinemaIDr   r   )r   _write_consoler   r   r   r   BOXOFFICE_CBDr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   )
r@   pNor+   r,   r-   r.   r/   r0   r1   r2   r3   r3   r4   rM      s(   
rM      c                 C   s2   ddl m} d| d  }d|  d }t|||S )Nr   )randintr
   r   )randomrY   str)nrY   startendr3   r3   r4   r      s   r   )r   r   )Nr   r   )Nr   r   r   )rX   )__doc__pandasr&   tushare.stockr   r   tushare.utilr   r)   urllib.requestr   r   ImportErrorurllib2r   r"   r5   rA   rI   rS   rM   r   r3   r3   r3   r4   <module>   s"   

'
.
/
$