movie.py 14.9 KB
from igraph import *
import pymongo

conn = pymongo.MongoClient("localhost")
db = conn.test
MOVIE = db.movie
cur = MOVIE.find()
audience = {}
for c in cur:
	audience[c["name"]] = c["audience"]

data = {
    "명량": "최민식,류승룡,조진웅,김명곤,진구,이정현,권율,노민우,이승준,박보검,김원해,이해영,장준녕,김길동,김강일,강태영,김민석,박노식,최덕문,조복래,문영동,이주실,주석태,고경표,김태훈,한이진,신유람",
    "극한직업": "류승룡,이하늬,이동휘,공명,진선규,홍은진,양현민,장진희,오정세,이중옥,송영규,신하균,김의성,김종수,허준석",
    "신과함께-죄와 벌": "하정우,차태현,주지훈,김향기,마동석,김동욱,도경수,오달수,임원희,장광,정해균,김수안,정지훈,예수정,이준혁",
    "국제시장": " 황정민,김윤진,오달수,정진영,장영남,라미란,김슬기,정영기,맹세창,박재우,김재철",
    "베테랑": "황정민,유아인,유해진,오달수,장윤주,김시후,오대환,정웅인,정만식,송영창,진경,유인영,박소담,이동휘,배성우,천호진",
    "도둑들": "김윤석,김혜수,이정재,전지현,김해숙,오달수,김수현,최덕문,최진호,예수정",
    "7번방의 선물": "류승룡,박신혜,갈소원,오달수,박원상,김정태,정만식,김기천,조덕현,조재윤,박길수",
    "암살": "전지현,이정재,하정우,오달수,조진웅,이경영,최덕문,김의성,박병은,김홍파,진경,김인우,심희섭,허지원,허정도,정인겸",
    "광해, 왕이 된 남자": "이병헌,류승룡,한효주,장광,김인권,심은경,김명곤,박지아,이양희,전국향",
    "신과함께-인과 연": "하정우,주지훈,김향기,마동석,김동욱,도경수,이준혁,정지훈,조한철,장광",
    "택시운전사": "송강호,류준열,유해진,박혁권,최귀화,이정은,차순배,이봉련,류성현,허정도",
    "부산행": "공유,정유미,마동석,김수안,최우식,안소희,김의성,예수정,박명신",
    "변호인": "송강호,김영애,오달수,곽도원,임시완,송영창,정원중,조민기,이항나,이성민,차광수,한기중,심희섭,김동현,조완기,차은재",
    "해운대": "설경구,하지원,박중훈,엄정화,이민기,강대규,김원영,김유빈,신정원,성유경,박재홍,나승현,김재경,장원준,임동우,김정곤,정종원,이지애,최재섭,장명갑,지대한,천보근,강예원,김희미",
    "괴물": "송강호,변희봉,박해일,배두나,고아성,오달수,박노식,고수희,윤제문,김뢰하,이재응,이왕우",
    "왕의 남자": "감우성,이준기,유해진,정진영,강성연,이동수,김주홍,장항선,정석용",
    "기생충": "송강호,이선균,조여정,최우식,박소담,이정은,장혜진,박명훈,현승민,정현준",
    "검사외전": "황정민,강동원,이성민,박성웅,김응수,신소율,주진모,김원해,김홍파,김병옥,박종환,전배수,박지환,손종학,김종수,한재영,이석준,이선주,민무제",
    "엑시트": "조정석,윤아,설도희,최재영,고두심,김환영,변건우,황지현,황효은,박인환,김지영,강기영,배유람,유수빈,정민성,박성일,신세휘,김강훈,김병순,김종구,이봉련",
    "설국열차": "송강호,고아성",
    "관상": "송강호,이정재,백윤식,조정석,이종석,김혜수,이도엽,김의성",
    "해적: 바다로 간 산적": "김남길,손예진,신정근,유해진,이경영,오달수,김태우,박철민,김원해,조달환,조희봉,정성화,최진리,이이경,권성영,김재학,김한준,안내상,이대연",
    "수상한 그녀": "심은경,나문희,박인환,성동일,이진욱,김현숙,황정민,김슬기,박형우,진영,김동희,한지은,정인기,이장유,하연주,박혜진",
    "백두산": "이병헌,하정우,마동석,전혜진,배수지,이상원,옥자연,한수현,강신철,이경영,조한철,최광일,김시아,임형국,박주환,남성준,서현우,김민식,박지홍,김준원,남문철,박성근",
    "과속스캔들": "차태현,박보영,왕석현,임지규,황우슬혜,정원중,김기방",
    "국가대표": "하정우,성동일,김지석,김동욱,최재환,이재응,이은성,방수연,심영,이한위,이혜숙,김지영,쥬니,황하나",
    "공조": "현빈,유해진,김주혁,장영남,이해영,윤아,이동휘,박형수,공정환,엄효섭,신현빈",
    "히말라야": "황정민,정우,조성하,김인권,라미란,김원해,이해영,전배수,유선",
    "밀정": "송강호,공유,한지민,엄태구,신성록,서영주,정유안,이수광,고준,최유화,허성태,김동영,곽자형,조영규",
    "최종병기 활": "박해일,류승룡,김무열,문채원,이한위,김구택,이경영,박기웅,이승준,이재구,박노식,이다윗,전민서,문영동",
    "써니": "유호정,심은경,강소라,고수희,홍진희,김민영,김선경,김보미,이연경,남보라,민효린,조민수,박진주,박영서,김예원,천우희,정원중,김영옥,김시후,김혜옥",
    "1987": "김윤석,하정우,유해진,김태리,이희준,박희순,서현우,박지환,이화룡,이창훈,김수진,박경혜,현봉식,김승훈,김경덕",
    "베를린": "하정우,한석규,류승범,전지현,이경영,최무성,곽도원,김서형,백승익,배정남",
    "마스터": "이병헌,강동원,김우빈,엄지원,오달수,박해수,진경,김정우,우도환,배정남,조현철,정원중,주석태",
    "터널": "하정우,배두나,오달수,김종수,조현철",
    "내부자들": "이병헌,조승우,백윤식,이경영,김홍파,배성우,조재윤,김대명,조우진,이엘,정만식,김병옥,김의성,박진우,남일우",
    "인천상륙작전": "이정재,이범수,진세연,정준호,박철민,김병옥,이창세,박정원,김희진,진용욱,성혁",
    "럭키": "유해진,이준,조윤희,임지연,전혜빈,이동휘,고준,차엽,이성욱,정희태,김민상",
    "은밀하게 위대하게": "김수현,박기웅,이현우,손현주,신정근,박혜숙,김성균,고창석,장광,홍경인,이채영,박은빈,최우식,이연경,조영진",
    "범죄도시": "마동석,윤계상,조재윤,최귀화,김성규,유지연,진선규,허동원,박지환,허성태,홍기준,하준",
    "곡성": "곽도원,황정민,천우희,김환희,허진,장소연,김도윤,손강국,전배수,박성연",
    "화려한 휴가": "김상경,안성기,이요원,이준기,박철민,김하림,김철기,이정국,손병호,이얼,엄효섭,권태원",
    "좋은 놈, 나쁜 놈, 이상한 놈": "송강호,이병헌,정우성,엄지원,오달수,김광일,손병호,이청아,김선영,성정훈,송승현,신상우,조화성,박광복,송영창,윤영우,정성우,양명헌,윤제문,류승수",
    "늑대소년": "송중기,박보영,장영남,유연석,김향기,장서이,이영란,유승목,서동수,남정희",
    "군함도": "황정민,소지섭,송중기,이정현,김수안,이경영,장성범,백승철,윤경호,김인우",
    "웰컴 투 동막골": "신하균,정재영,강혜정,리민,류덕환,임하룡,강남석,손재영,이다운,서재경,유승목,심원철",
    "사도": "송강호,유아인,문근영,전혜진,김해숙,박원상,진지희,박소담,서예지,김민규,이대연,최덕문,정석용,최민철,조승연,박명신",
    "아저씨": "원빈,김새론,김희원,김성오,김호연,김효서,조영아,이상하,남경읍,송영창,이종필,김태훈",
    "미녀는 괴로워": "김아중,주진모,김현숙,조아영,이보라,박노식,이한위",
    "전우치": "강동원,임수정,김윤석,유해진,김시권,주진모,선우선,강동균,정혜란,손선영,송진영,김혜지,신수현,박용범,박민규,조운,김현식,박지희,안성진,노남석,한연호,김고은,김규연,고준영,박남희,윤대원,이석원,이성두,정영훈,정우철,박연수,오준석,정지인,이우희,이대로,송영창,김서현,김상호,이용녀,공정환,권태원,김기천",
    "연평해전": "김무열,진구,이현우,이완,천민희,이한종,송재호,박정학,이철민,장의수,한이진",
    "타짜": "조승우,김혜수,백윤식,유해진,이수경,김응수,김상호,김윤석,주진모,김정난,조상건,서동수,백도빈,김민경,오정세,장원영,권태원",
    "청년경찰": "박서준,강하늘,성동일,박하선,고준,이호정",
    "숨바꼭질": "손현주,문정희,전미선,김수안,김원해,노수산나,정준원,성유빈,정민성",
    "덕혜옹주": "손예진,박해일,윤제문,라미란,정상훈,박수영,김소현,박주미,안내상,김재욱,금새록,김승훈",
    "더 테러 라이브": "하정우,이경영,전혜진,이다윗,김홍파,김대명,최진호,김소진,강진아,강신철,한성천",
    "감시자들": "설경구,정우성,한효주,진경,이준호,손민석,김대진,이태형,강신하,이동휘,이화정,김진곤,김지훈,신성일,변요한,정우근,장원형,박지연,김병옥",
    "검은 사제들": "김윤석,강동원,박소담,김병옥,김의성,이호재,남일우,손종학,조수향,민진웅",
    "안시성": "조인성,남주혁,박성웅,김동진,배성우,엄태구,설현,박병은,오대환,성동일,정은채,유오성,정지훈,김욱,장광",
    "의형제": "송강호,강동원,전국환,박혁권,윤희석,최정우,정인기,설진욱,강명희,차엽,권범택",
    "더 킹": "조인성,정우성,배성우,류준열,김의성,이석호,김민재,정성모,정은채,김소진,황승언,이주연,박정민,김규선,남명렬,오대환,정원중,정인기,이열음",
    "완득이": "김윤석,유아인,조병찬,조세현,강별,박효주,김영재,김상호,박수영,김동영",
    "완벽한 타인": "유해진,조진웅,이서진,염정아,김지수,송하윤,윤경호,지우",
    # "타워": "",
    # "투사부일체": "",
    # "독전": "",
    # "추격자": "",
    # "공작": "",
    # "바람과 함께 사라지다": "",
    # "님아, 그 강을 건너지 마오": "",
    # "봉오동 전투": "",
    # "조선명탐정 : 각시투구꽃의 비밀": "",
    # "군도: 민란의 시대": "",
    # "남산의 부장들": "",
    # "범죄와의 전쟁: 나쁜놈들 전성시대": "",
    # "신세계": "",
    # "도가니": "",
    # "내 아내의 모든 것": "",
    # "판도라": "",
    # "나쁜 녀석들: 더 무비": "",
    # "가문의 위기(가문의 영광2)": "",
    # "연가시": "",
    # "강철비": "",
    # "강철중: 공공의 적 1-1": "",
    # "아가씨": "",
    # "말아톤": "",
    # "용의자": "",
    # "건축학개론": "",
    "댄싱퀸": "황정민,엄정화,정성화,오나라,박정민,박사랑,안은정,라미란,이대연,이한위,최우리,권병길,서동원",
    # "7급 공무원": "",
    # "우리 생애 최고의 순간": "",
    # "꾼": "",
    # "타짜-신의 손": "",
    # "박수건달": "",
    # "조선명탐정 : 사라진 놉의 딸": "",
    # "역린": "",
    # "남한산성": "",
    # "암수살인": "",
    # "국가부도의 날": "", #100위
    # "쌍화점": "",
    # "신기전": "",
    # "82년생 김지영": "",
    # "귀향": "",
    # "신의 한 수": "",
    # "태풍": "",
    # "부러진 화살": "",
    # "끝까지 간다": "",
    # "스파이": "",
    # "그것만이 내 세상": "",
    # "돈": "",
    # "악인전": "",
    # "이끼": "",
    # "한반도": "",
    # "포화속으로": "",
    # "시동": "",
    # "아이 캔 스피크": "",
    # "마녀": "",
    # "탐정: 리턴즈": "",
    # "공공의 적 2": "",
    # "퀵": "",
    # "친절한 금자씨": "",
    # "감기": "",
    # "스물": "",
    # "거북이 달린다": "",
    # "헬로우 고스트": "",
    # "하모니": "",
    # "오싹한 연애": "",
    # "방자전": "",
    # "형": "",
    # "마더": "",
    # "그놈 목소리": "",
    # "친구 2": "",
    # "식객": "",
    # "26년": "",
    # "고지전": "",
    # "워낭소리": "",
    # "프리즌": "",
    # "가장 보통의 연애": "",
    # "말모이": "",
    # "극비수사": "",
    # "표적": "",
    # "너의 결혼식": "",
    # "내가 살인범이다": "",
    # "부당거래": "",
    # "소원": "",
    # "너는 내 운명": "",
    # "시라노; 연애조작단": "",
    # "곤지암": "",
    # "살인자의 기억법": "",
    # "마파도": "",
    # "후궁 : 제왕의 첩": "",
    # "탐정 : 더 비기닝": "",
    # "지금 만나러 갑니다": "",
    # "가문의 부활 - 가문의 영광3": "",
    # "위험한 상견례": "",
    # "아수라": "",
    # "보안관": "",
    # "기술자들": "",
    # "굿모닝 프레지던트": "",
    # "태극기 휘날리며": "",
    # "라스트 갓파더": "",
    # "1번가의 기적": "",
    # "증인": "",
    # "목격자": "",
    # "조작된 도시": "",
    # "블랙머니": "",
    # "반창꼬": "",
    # "우리들의 행복한 시간": "",
    # "조선명탐정: 흡혈괴마의 비밀": "",
    # "화차": "",
    # "이웃사람": "",
    # "재심": "",
    # "히트맨": "",
    # "사바하": "",
    # "화이: 괴물을 삼킨 아이": "",
    # "의뢰인": "",
    # "가문의 영광4 - 가문의 수난": "",
    # "블라인드": "",
    # "박열": "",
    # "미인도": "",
    # "음란서생": "",
    # "내 생애 가장 아름다운 일주일": "",
    # "하녀": "",
    # "황해": "",
    # "7광구": "",
    # "타짜: 원 아이드 잭": "",
    # "박쥐": "",
    # "마당을 나온 암탉": "",
    # "악의 연대기": "",
    # "강남 1970": "",
    # "신의 한 수: 귀수편": "",
    # "마이 웨이": "",
    # "나의 사랑 나의 신부": "",
    # "바르게 살자": "",
    # "내 사랑 내 곁에": "",
    # "초능력자": "",
    # "굿바이 싱글": "",
    # "몽타주": "",
    # "명당": "",
    }

g = Graph()
names = []
vertex_weight = []
vertex_color = []
edge_weight = []

for movie in data:
	g.add_vertices(1)
	names.append(movie)
	vertex_color.append("red")

	actors = data[movie].split(",")
	newActors = []
	for actor in actors:
		if(actor not in names):
			newActors.append(actor)
	names += newActors
	g.add_vertices(len(newActors))
	vertex_color += ["blue"] * len(newActors)

	edges = []
	s = names.index(movie)
	for actor in actors:
		e = names.index(actor)
		edges.append((s, e))
	g.add_edges(edges)

	vertex_weight.append(audience[movie])
	vertex_weight += [1] * len(newActors)
	edge_weight += [audience[movie]] * len(actors)
g.vs["name"] = names
g.vs["label"] = g.vs["name"]
g.vs["color"] = vertex_color
g.es["weight"] = edge_weight
bn = g.betweenness(weights=edge_weight)
names1, names2 = g.vs["name"][:], g.vs["name"][:]

print(sorted(names1, key=lambda n: bn[names2.index(n)], reverse=True)[:10])
print(sorted(bn, reverse=True)[:10])
bn_norm = [int((float(i)/max(bn)) * 40) + 10 for i in bn]

out = plot(g,
	bbox = (1600, 1600),
	vertex_size = 20,
    vertex_label_size = 12,
    vertex_label_dist = 1,
    vertex_label_angle = 2,
    autocurve = True,
    layout = g.layout("fr")
    )
out.save("test.png")