예제 #1
0
파일: boxoffice.py 프로젝트: 1FENQI/tushare
def day_cinema(date=None, retry_count=3, pause=0.001):
    """
        获取影院单日票房排行数据
        数据来源:EBOT艺恩票房智库
        Parameters
        ------
            date:日期,默认为上一日
            retry_count : int, 默认 3
                      如遇网络等问题重复执行的次数
            pause : int, 默认 0
                     重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
         return
         -------
            DataFrame 
                  Attendance         上座率
                  AvgPeople          场均人次
                  CinemaName         影院名称  
                  RowNum             排名
                  TodayAudienceCount 当日观众人数
                  TodayBox           当日票房
                  TodayShowCount     当日场次
                  price              场均票价(元)
    """
    if date is None:
        date = du.day_last_week(-1)
    data = pd.DataFrame()
    ct._write_head()
    for x in range(1, 11):
        df = _day_cinema(date, x, retry_count,
                                       pause)
        if df is not None:
            data = pd.concat([data, df])
    data = data.drop_duplicates()
    return data.reset_index(drop=True)
예제 #2
0
def day_cinema(date=None, retry_count=3, pause=0.001):
    """
        获取影院单日票房排行数据
        数据来源:EBOT艺恩票房智库
        Parameters
        ------
            date:日期,默认为上一日
            retry_count : int, 默认 3
                      如遇网络等问题重复执行的次数
            pause : int, 默认 0
                     重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
         return
         -------
            DataFrame 
                  Attendance         上座率
                  AvgPeople          场均人次
                  CinemaName         影院名称  
                  RowNum             排名
                  TodayAudienceCount 当日观众人数
                  TodayBox           当日票房
                  TodayShowCount     当日场次
                  price              场均票价(元)
    """
    if date is None:
        date = du.day_last_week(-1)
    data = pd.DataFrame()
    ct._write_head()
    for x in range(1, 11):
        df = _day_cinema(date, x, retry_count, pause)
        if df is not None:
            data = pd.concat([data, df])
    data = data.drop_duplicates()
    return data.reset_index(drop=True)
예제 #3
0
def month_boxoffice(date=None, retry_count=3, pause=0.001):
    """
    获取单月电影票房数据
    数据来源:EBOT艺恩票房智库
    Parameters
    ------
        date:日期,默认为上一月,格式YYYY-MM
        retry_count : int, 默认 3
                  如遇网络等问题重复执行的次数
        pause : int, 默认 0
                 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
     return
     -------
        DataFrame 
              Irank         排名
              MovieName     电影名称
              WomIndex      口碑指数
              avgboxoffice  平均票价
              avgshowcount  场均人次
              box_pro       月度占比
              boxoffice     单月票房(万)     
              days          月内天数
              releaseTime   上映日期
    """
    if date is None:
        date = du.day_last_week(-30)[0:7]
    elif len(date) > 8:
        print(ct.BOX_INPUT_ERR_MSG)
        return
    date += '-01'
    for _ in range(retry_count):
        time.sleep(pause)
        try:
            request = Request(
                ct.BOXOFFICE_MONTH %
                (ct.P_TYPE['http'], ct.DOMAINS['mbox'], ct.BOX, date))
            lines = urlopen(request, timeout=10).read()
            if len(lines) < 15:  #no data
                return None
        except Exception as e:
            print(e)
        else:
            js = json.loads(lines.decode('utf-8') if ct.PY3 else lines)
            df = pd.DataFrame(js['data1'])
            df = df.drop(['defaultImage', 'EnMovieID'], axis=1)
            return df
예제 #4
0
파일: reference.py 프로젝트: i7az/tushare
def sz_margins(start=None, end=None, retry_count=3, pause=0.001):
    """
    获取深市融资融券数据列表
    Parameters
    --------
    start:string
                  开始日期 format:YYYY-MM-DD 默认为上一周的今天
    end:string
                  结束日期 format:YYYY-MM-DD 默认为今日
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    opDate:信用交易日期(index)
    rzmre: 融资买入额(元)
    rzye:融资余额(元)
    rqmcl: 融券卖出量
    rqyl: 融券余量
    rqye: 融券余量(元)
    rzrqye:融资融券余额(元)
    """
    data = pd.DataFrame()
    if start is None and end is None:
        end = du.today()
        start = du.day_last_week()
    if start is None or end is None:
        ct._write_msg(rv.MAR_SZ_HZ_MSG2)
        return None
    try:
        date_range = pd.date_range(start=start, end=end, freq='B')
        if len(date_range) > 261:
            ct._write_msg(rv.MAR_SZ_HZ_MSG)
        else:
            ct._write_head()
            for date in date_range:
                data = data.append(_sz_hz(str(date.date()), retry_count,
                                          pause))
    except:
        ct._write_msg(ct.DATA_INPUT_ERROR_MSG)
    else:
        return data
예제 #5
0
파일: boxoffice.py 프로젝트: 1FENQI/tushare
def month_boxoffice(date=None, retry_count=3, pause=0.001):
    """
    获取单月电影票房数据
    数据来源:EBOT艺恩票房智库
    Parameters
    ------
        date:日期,默认为上一月,格式YYYY-MM
        retry_count : int, 默认 3
                  如遇网络等问题重复执行的次数
        pause : int, 默认 0
                 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
     return
     -------
        DataFrame 
              Irank         排名
              MovieName     电影名称
              WomIndex      口碑指数
              avgboxoffice  平均票价
              avgshowcount  场均人次
              box_pro       月度占比
              boxoffice     单月票房(万)     
              days          月内天数
              releaseTime   上映日期
    """
    if date is None:
        date = du.day_last_week(-30)[0:7] 
    elif len(date)>8:
        print(ct.BOX_INPUT_ERR_MSG)
        return
    date += '-01'
    for _ in range(retry_count):
        time.sleep(pause)
        try:
            request = Request(ct.BOXOFFICE_MONTH%(ct.P_TYPE['http'], ct.DOMAINS['mbox'],
                              ct.BOX, date))
            lines = urlopen(request, timeout = 10).read()
            if len(lines) < 15: #no data
                return None
        except Exception as e:
            print(e)
        else:
            js = json.loads(lines.decode('utf-8') if ct.PY3 else lines)
            df = pd.DataFrame(js['data1'])
            df = df.drop(['defaultImage', 'EnMovieID'], axis=1)
            return df
예제 #6
0
def sz_margins(start=None, end=None, retry_count=3, pause=0.001):
    """
    获取深市融资融券数据列表
    Parameters
    --------
    start:string
                  开始日期 format:YYYY-MM-DD 默认为上一周的今天
    end:string
                  结束日期 format:YYYY-MM-DD 默认为今日
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    opDate:信用交易日期(index)
    rzmre: 融资买入额(元)
    rzye:融资余额(元)
    rqmcl: 融券卖出量
    rqyl: 融券余量
    rqye: 融券余量(元)
    rzrqye:融资融券余额(元)
    """
    data = pd.DataFrame()
    if start is None and end is None:
        end = du.today()
        start = du.day_last_week()
    if start is None or end is None:
        ct._write_msg(rv.MAR_SZ_HZ_MSG2)
        return None
    try:
        date_range = pd.date_range(start=start, end=end, freq='B')
        if len(date_range)>261:
            ct._write_msg(rv.MAR_SZ_HZ_MSG)
        else:
            ct._write_head()
            for date in date_range:
                data = data.append(_sz_hz(str(date.date()), retry_count, pause) )
    except:
        ct._write_msg(ct.DATA_INPUT_ERROR_MSG)
    else:
        return data
예제 #7
0
Date: 2018/1/17 16:45
"""
import os
import sys
import tushare as ts
from code.pub.common import DATA_PATH, PATH_SEP
from tushare.fund import cons as ct
from tushare.util import dateu as du

reload(sys)
sys.setdefaultencoding('utf-8')

today = du.today()
profit_data_file = DATA_PATH + PATH_SEP + 'profit_data' + today + '.csv'
# 删除一周前同一天文件,如果天天运行,则只保留一周数据
del_file = DATA_PATH + PATH_SEP + 'profit_data' + du.day_last_week() + '.csv'
if os.path.exists(del_file):
    os.remove(del_file)

if not os.path.exists(profit_data_file):
    df = ts.profit_data(year=today[:4])
    if df.loc[0, 'code'] == '000nan':
        df = ts.profit_data(year=int(today[:4]) - 1)
    df.to_csv(profit_data_file,
              sep=',',
              header=True,
              index=False,
              encoding='GBK')

if __name__ == '__main__':
    pass