In [1]:
#_*_ coding:utf-8 _*_
import urllib.request
import json
import datetime
In [2]:
# return date as list format in yyyymmdd format from specified start date and end date
def datestartend(startdate, enddate):
start = datetime.datetime.strptime(startdate, '%Y%m%d')
end = datetime.datetime.strptime(enddate, '%Y%m%d')
daypassed = 0
this_date = start + datetime.timedelta(days=daypassed)
datelist = []
while end > this_date:
this_date = start + datetime.timedelta(days=daypassed)
datelist.append(this_date.strftime('%Y%m%d'))
daypassed = daypassed + 1
return datelist
In [8]:
# file create with header and utf-8 encoding
def boxoffice_header_create(filename):
f = open(filename, mode='w', encoding='utf-8')
header = "date\trnum\trank\trankInten\trankOldAndNew\t"
"movieCd\tmovieNm\topenDt\tsalesAmt\tsalesShare\tsalesInten\t"
"salesChange\tsalesAcc\taudiCnt\taudiInten\taudiChange\taudiAcc\t"
"scrnCnt\tshowCnt\n"
f.write(header)
f.close()
In [4]:
# need api key
def kofic_boxoffice_downloader(key, date, filename):
print(date + "started")
# url = ("http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=%s&targetDt=%s" % (key, date))
# 하루기준 10개 만 뽑을 수 있어서 상업영화여부와 한국영화여부를 넣어 하루 기준 40개를 뽑기로 했습니다.
# 지역 코드도 있으니 필요하면 시군구별 통계도 뽑을 수 있어요
urlA = (
"http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/"
"searchDailyBoxOfficeList.json?multiMovieYn=Y&repNationCd=K&"
"key=%s&targetDt=%s" % (
key, date))
urlB = (
"http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/"
"searchDailyBoxOfficeList.json?multiMovieYn=N&repNationCd=K&"
"key=%s&targetDt=%s" % (
key, date))
urlC = (
"http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/"
"searchDailyBoxOfficeList.json?multiMovieYn=Y&repNationCd=F&"
"key=%s&targetDt=%s" % (
key, date))
urlD = (
"http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/"
"searchDailyBoxOfficeList.json?multiMovieYn=N&repNationCd=F&"
"key=%s&targetDt=%s" % (
key, date))
urlList = [urlA, urlB, urlC, urlD]
for url in urlList:
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
http_code = response.getcode()
if http_code == 200:
response_body = response.read()
# print(response_body.decode('utf-8'))
boxOfficeResults = json.loads(response_body.decode('utf-8'))
# print(boxOfficeResults)
for dailyBoxOffice in boxOfficeResults['boxOfficeResult']['dailyBoxOfficeList']:
boxoffice_one_line = (
u"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" % (
date, dailyBoxOffice['rnum'], dailyBoxOffice['rank'], dailyBoxOffice['rankInten'],
dailyBoxOffice['rankOldAndNew'], dailyBoxOffice['movieCd'], dailyBoxOffice['movieNm'],
dailyBoxOffice['openDt'], dailyBoxOffice['salesAmt'], dailyBoxOffice['salesShare'],
dailyBoxOffice['salesInten'], dailyBoxOffice['salesChange'], dailyBoxOffice['salesAcc'],
dailyBoxOffice['audiCnt'], dailyBoxOffice['audiInten'], dailyBoxOffice['audiChange'],
dailyBoxOffice['audiAcc'], dailyBoxOffice['scrnCnt'], dailyBoxOffice['showCnt']))
f = open(filename, mode='a', encoding='utf-8')
f.write(boxoffice_one_line)
f.close()
else:
print("Error Code:" + http_code)
print(date + "ocmpleted")
In [ ]:
# main이죠
datestart = "20160324"
dateend = "20161231"
apikey = "x"
#boxoffice_header_create("boxoffice_%s_%s.txt" % (datestart, dateend))
#시작일 부터 끝나는 날 까지 다 모아서 적습니다.
for date in datestartend(datestart, dateend):
kofic_boxoffice_downloader(apikey, date, "boxoffice.txt")