Module: Tushare::Internet::BoxOffice

Extended by:
BoxOffice, Util
Included in:
BoxOffice
Defined in:
lib/tushare/internet/box_office.rb

Overview

电影票房

Instance Method Summary collapse

Methods included from Util

_code_to_symbol, _write_console, _write_head, check_quarter, check_year, fetch_ftp_file, holiday?, trade_cal

Instance Method Details

#day_boxoffice(date = nil) ⇒ Object

获取单日电影票房数据 数据来源:EBOT艺恩票房智库 Parameters


   date:日期,默认为上一日
return
-------
   DataFrame
         AvgPrice      平均票价
         AvpPeoPle     场均人次
         BoxOffice     单日票房(万)
         BoxOffice_Up  环比变化 %
         IRank         排名
         MovieDay      上映天数
         MovieName     影片名
         SumBoxOffice  累计票房(万)
         WomIndex      口碑指数


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/tushare/internet/box_office.rb', line 55

def day_boxoffice(date = nil)
  date = if date.nil?
           0
         else
           Date.today - Date.parse(date) + 1
         end
  url = format(BOXOFFICE_DAY, P_TYPE['http'], DOMAINS['mbox'], BOX, date,
               _random)
  resp = HTTParty.get url
  return nil if resp.body.length < 15
  json = JSON.parse resp
  result = []
  json['data1'].each do |object|
    %w(MovieImg BoxOffice1 MovieID Director IRank_pro).each do |key|
      object.delete key
    end
    result << object
  end
  result
end

#day_cinema(date = nil) ⇒ Object

获取影院单日票房排行数据 数据来源:EBOT艺恩票房智库 Parameters


   date:日期,默认为上一日
return
-------
   DataFrame
         Attendance         上座率
         AvgPeople          场均人次
         CinemaName         影院名称
         RowNum             排名
         TodayAudienceCount 当日观众人数
         TodayBox           当日票房
         TodayShowCount     当日场次
         price              场均票价(元)


128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/tushare/internet/box_office.rb', line 128

def day_cinema(date = nil)
  date = Date.today.prev_day.strftime('%F') if date.nil?
  _write_head
  result = []
  1.upto(11) do |page|
    url = format(BOXOFFICE_CBD, P_TYPE['http'], DOMAINS['mbox'], BOX,
                 page, date)
    resp = HTTParty.get url
    next if resp.body.length < 15
    json = JSON.parse resp.body
    json['data1'].each do |object|
      object.delete 'CinemaID'
      result << object
    end
  end
  result
end

#month_boxoffice(date = nil) ⇒ Object

获取单月电影票房数据 数据来源:EBOT艺恩票房智库 Parameters


   date:日期,默认为上一月,格式YYYY-MM
return
-------
   DataFrame
         Irank         排名
         MovieName     电影名称
         WomIndex      口碑指数
         avgboxoffice  平均票价
         avgshowcount  场均人次
         box_pro       月度占比
         boxoffice     单月票房()
         days          月内天数
         releaseTime   上映日期

Raises:



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/tushare/internet/box_office.rb', line 93

def month_boxoffice(date = nil)
  date = Date.today.prev_month.strftime('%Y-%m') if date.nil?
  raise BOX_INPUT_ERR_MSG if date.length > 8
  date += '-01'
  url = format(BOXOFFICE_MONTH, P_TYPE['http'], DOMAINS['mbox'], BOX,
               date)
  resp = HTTParty.get url
  return nil if resp.body.length < 15
  json = JSON.parse resp
  result = []
  json['data1'].each do |object|
    %w(defaultImage EnMovieID).each do |key|
      object.delete key
    end
    result << object
  end
  result
end

#realtime_boxofficeObject

获取实时电影票房数据 数据来源:EBOT艺恩票房智库

return
-------
   DataFrame
         BoxOffice     实时票房(万)
         Irank         排名
         MovieName     影片名
         boxPer        票房占比 %
         movieDay      上映天数
         sumBoxOffice  累计票房(万)
         time          数据获取时间


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/tushare/internet/box_office.rb', line 22

def realtime_boxoffice
  url = format(MOVIE_BOX, P_TYPE['http'], DOMAINS['mbox'], BOX, _random)
  resp = HTTParty.get url
  return nil if resp.body.length < 15
  json = JSON.parse resp
  result = []
  now = Time.now
  json['data2'].each do |object|
    object.delete 'MovieImg'
    object.delete 'mId'
    object['time'] = now
    result << object
  end
  result
end