├── README.md ├── assets ├── MovieKGQA1.png ├── MovieKGQA2.png ├── MovieKGQA3.png └── MovieKGQA_workflow_graph.png ├── backend ├── README.md ├── flask │ ├── app.py │ ├── core │ │ ├── __init__.py │ │ ├── classifier.py │ │ ├── database.py │ │ ├── parser.py │ │ └── qa.py │ ├── data │ │ ├── train.json │ │ └── userdict.txt │ └── test │ │ ├── test.py │ │ └── userdict.txt └── spider │ ├── database_1000 │ ├── actor.csv │ ├── actor_movie.csv │ ├── genre.csv │ ├── movie.csv │ ├── movie_genre.csv │ └── userdict_1000.txt │ ├── database_250 │ ├── actor.csv │ ├── actor_movie.csv │ ├── genre.csv │ ├── movie.csv │ ├── movie_genre.csv │ └── userdict_250.txt │ ├── generate_userdict.py │ ├── import_data_cql.txt │ ├── main_1000.py │ ├── main_250.py │ └── process_data.py └── frontend ├── README.md ├── app.js ├── app.json ├── app.wxss ├── img ├── bot.png ├── chatbot.svg ├── graphdatabase.svg ├── knowledge_graph.svg ├── send.svg ├── stop.svg ├── user.png └── voice.png ├── package-lock.json ├── package.json ├── pages ├── chat │ ├── chat.js │ ├── chat.json │ ├── chat.wxml │ └── chat.wxss └── index │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── project.config.json ├── project.private.config.json └── utils ├── asr.min.js └── util.js /README.md: -------------------------------------------------------------------------------- 1 | # MovieKGQA 2 | ## Introduction 3 | 4 | 基于知识图谱和neo4j图数据库的电影知识问答系统 5 |
6 | image-20231212102658908    7 | image-20231212102738360    8 | image-20231212103113278 9 |
10 | 11 | 12 | ## Workflow 13 | 14 | ### DataBase 15 | 16 | 爬取豆瓣TOP1000电影信息数据 17 | 18 | ### Frontend 19 | 20 | 1. 获取用户输入的信息 (语音输入 / 文本输入) 21 | 2. 向电影知识问答后端服务器发送请求 22 | 3. 获取返回结果 (成功 -> 4 / 失败 -> 5) 23 | 4. 如果返回结果包含image信息,则显示图片和文字,否则只显示文字 24 | 5. 请求基于gpt的AI模型服务器,并显示返回结果 25 | 26 | ### Backend 27 | 28 | ​ [准备工作] 训练 TF-IDF 向量算法和朴素贝叶斯分类器,用于预测用户文本所属的问题类别 29 | 30 | 1. 接受前端请求,获取用户输入信息 31 | 2. 使用分词库解析用户输入的文本词性,提取关键词 32 | 3. 根据贝叶斯分类器,分类出用户文本的问题类型 33 | 4. 结合关键词与问题类别,在 Neo4j 中查询问题的答案 34 | 5. 返回查询结果 (若问题类型为 演员信息 / 电影介绍,则附加图片url) 35 | 36 | ### WorkFlow Graph 37 | 38 | ![workflow graph](https://i.imgs.ovh/2023/12/29/0IEuW.png) 39 | 40 | ## Frame 41 | 42 | ### DataBase 43 | 44 | [![Neo4j](https://img.shields.io/badge/neo4j-test?style=for-the-badge&logo=neo4j&logoColor=white&color=blue)](https://neo4j.com/) 45 | 46 | ### Frontend 47 | 48 | [![wechat mini programs](https://img.shields.io/badge/wechat%20mini%20programs-test?style=for-the-badge&logo=wechat&logoColor=white&color=%2320B2AA)](https://developers.weixin.qq.com/) 49 | 50 | ### Backend 51 | 52 | [![Python](https://img.shields.io/badge/python-3776ab?style=for-the-badge&logo=python&logoColor=ffd343)](https://www.python.org/)[![Flask](https://img.shields.io/badge/flask-3e4349?style=for-the-badge&logo=flask&logoColor=ffffff)](https://flask.palletsprojects.com/)[![Scikit-learn](https://img.shields.io/badge/sklearn-test?style=for-the-badge&logo=scikit-learn&logoColor=white&color=orange)](https://scikit-learn.org/stable/index.html)[![Jieba](https://img.shields.io/badge/jieba-3776ab?style=for-the-badge&logo=python&logoColor=ffd343)](https://github.com/fxsjy/jieba) 53 | 54 | ## Reference 55 | 56 | ### Frontend 57 | 58 | [微信小程序:微信聊天机器人](https://github.com/JzheTang/wechat_robot_app) 59 | 60 | ### BackEnd 61 | 62 | [基于知识图谱的电影知识问答系统](https://github.com/mrcaidev/kgqa) 63 | 64 | [电影知识库问答机器人](https://github.com/futurehear/chatbot) 65 | -------------------------------------------------------------------------------- /assets/MovieKGQA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SwimmingLiu/MovieKGQA/ba77aed8c4e1d71d54ffa37185ebc9da32f54a3e/assets/MovieKGQA1.png -------------------------------------------------------------------------------- /assets/MovieKGQA2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SwimmingLiu/MovieKGQA/ba77aed8c4e1d71d54ffa37185ebc9da32f54a3e/assets/MovieKGQA2.png -------------------------------------------------------------------------------- /assets/MovieKGQA3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SwimmingLiu/MovieKGQA/ba77aed8c4e1d71d54ffa37185ebc9da32f54a3e/assets/MovieKGQA3.png -------------------------------------------------------------------------------- /assets/MovieKGQA_workflow_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SwimmingLiu/MovieKGQA/ba77aed8c4e1d71d54ffa37185ebc9da32f54a3e/assets/MovieKGQA_workflow_graph.png -------------------------------------------------------------------------------- /backend/README.md: -------------------------------------------------------------------------------- 1 | - **flask** 2 | - ***core*** 3 | - *classifier 问题分类,句子=>jieba分词,再按空格为间隔拼接在一起,转为TF-IDF向量=>喂入分类模型* 4 | - *database 连接Neo4j* 5 | - *parser 对句子进行词性标注(这里使用userdict作为自定义词性),拿到查询的key* 6 | - *qa 汇合上述三个模块实现知识问答* 7 | - ***data*** 8 | - *train.json 训练分类模型的数据* 9 | - *userdict 词性标注的文件* 10 | - ***test*** 11 | - *词性标注和TF-IDF测试* 12 | - **spider** 13 | 14 | - *generate_userdict.py 生成用户字典,作用:导入jieba进行词性标注,进而提取关键词* 15 | - *main_x.py 爬虫代码,生成movie.csv和actor.csv文件* 16 | - *process_data.py 根据爬虫结果,生成需要的文件,可将其导入至Neo4j* 17 | - *database_x 包含最终的结果文件和导入Neo4j的CQL语句* 18 | 19 | ​- 完结撒花! 20 | 21 | -------------------------------------------------------------------------------- /backend/flask/app.py: -------------------------------------------------------------------------------- 1 | from atexit import register 2 | 3 | from core import QA 4 | from flask import Flask, abort, jsonify, request 5 | from flask_cors import CORS 6 | 7 | 8 | qa = QA() 9 | register(qa.close) 10 | 11 | app = Flask(__name__) 12 | CORS(app) 13 | 14 | 15 | @app.route("/q/", methods=['GET', 'POST']) 16 | def get_answer(question): 17 | 18 | if not question: 19 | abort(jsonify({"error": "问题不能为空"}), 400) 20 | 21 | return {"answer": qa.answer(question)} 22 | 23 | 24 | @app.route("/q", methods=['POST']) 25 | def get_ans(): 26 | # data format = {q: "question"} 27 | if request.headers['Content-Type'] == 'application/json': 28 | data = request.json 29 | # 在这里处理接收到的JSON数据 30 | question = data.get('q') 31 | else: 32 | data = request.form 33 | # 在这里处理接收到的表单数据 34 | question = data.get('q') 35 | 36 | if not question: 37 | abort(jsonify({"error": "问题不能为空"}), 400) 38 | 39 | return {"answer": qa.answer(question)} 40 | 41 | 42 | if __name__ == '__main__': 43 | app.run(port=8888) # 指定端口号为 8000 44 | -------------------------------------------------------------------------------- /backend/flask/core/__init__.py: -------------------------------------------------------------------------------- 1 | from .qa import QA 2 | 3 | __all__ = ["QA"] 4 | -------------------------------------------------------------------------------- /backend/flask/core/classifier.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | import jieba 5 | from sklearn.feature_extraction.text import TfidfVectorizer 6 | from sklearn.naive_bayes import MultinomialNB 7 | 8 | # print(os.getcwd()) 9 | # TRAIN_DATASET_PATH = os.path.join("../data", "train.json") # 单个文件run的目录和从app.py run 的目录不一样 10 | TRAIN_DATASET_PATH = os.path.join("data", "train.json") 11 | 12 | jieba.setLogLevel("ERROR") 13 | 14 | 15 | # 在进行文本分类任务时,使用jieba对文本进行分词可以将复杂的句子拆分成独立的词汇,从而更好地表示句子的含义和特征 16 | # 提高分类准确率 cut 是分词 17 | def normalize(sentence: str): 18 | return " ".join(jieba.cut(sentence)) 19 | 20 | 21 | class BaseClassifier: 22 | """ 23 | 底层分类器。 24 | 25 | 使用 TF-IDF 向量化文本,然后使用朴素贝叶斯预测标签。 26 | """ 27 | 28 | def __init__(self): 29 | self._vectorizer = TfidfVectorizer() 30 | self._classifier = MultinomialNB(alpha=0.01) 31 | 32 | def _train(self, x: list, y: list): 33 | X = self._vectorizer.fit_transform(x).toarray() 34 | self._classifier.fit(X, y) 35 | 36 | def _predict(self, x: list): 37 | X = self._vectorizer.transform(x).toarray() 38 | return self._classifier.predict(X) 39 | 40 | 41 | class Classifier(BaseClassifier): 42 | """ 43 | 问题分类器。 44 | 45 | 根据问题中出现的关键词,将问题归于某一已知类别下。 46 | """ 47 | 48 | def __init__(self): 49 | BaseClassifier.__init__(self) 50 | # question: 'nm简介' ... label: 'introduce_by_movie ... 51 | questions, labels = Classifier._read_train_dataset() 52 | self._train(questions, labels) 53 | 54 | def classify(self, sentence: str): 55 | question = normalize(sentence) 56 | # question = sentence 57 | y = self._predict([question]) 58 | return y[0] 59 | 60 | @staticmethod 61 | def _read_train_dataset(): 62 | with open(TRAIN_DATASET_PATH, "r", encoding="utf-8") as fr: 63 | train_dataset: dict[str, list[str]] = json.load(fr) 64 | 65 | questions = [] 66 | labels = [] 67 | for label, sentences in train_dataset.items(): 68 | questions.extend([normalize(sentence) for sentence in sentences]) 69 | # questions.extend([sentence for sentence in sentences]) 70 | labels.extend([label for _ in sentences]) 71 | 72 | return questions, labels 73 | 74 | 75 | if __name__ == "__main__": 76 | classifier = Classifier() 77 | 78 | while True: 79 | sentence = input("请输入问题:").strip() 80 | label = classifier.classify(sentence) 81 | print(f"问题分类:{label}") 82 | -------------------------------------------------------------------------------- /backend/flask/core/database.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from neo4j import GraphDatabase 4 | 5 | 6 | class Database: 7 | """ 8 | Neo4j 数据库访问层。 9 | 10 | 管理数据库连接的生命周期,并提供查询接口。 11 | """ 12 | 13 | def __init__(self): 14 | uri = 'bolt://localhost:7687/neo4j' 15 | user = 'neo4j' 16 | password = 'wl070919' 17 | 18 | try: 19 | self._driver = GraphDatabase.driver(uri, auth=(user, password)) 20 | self._session = self._driver.session() 21 | except Exception as e: 22 | raise Exception("数据库连接失败") from e 23 | 24 | def close(self): 25 | try: 26 | self._session.close() 27 | self._driver.close() 28 | except Exception as e: 29 | raise Exception("数据库断开失败") from e 30 | 31 | def find_one(self, query: str, **parameters): 32 | result = self._session.run(query, parameters).single() 33 | return result.value() if result else None 34 | 35 | def find_many(self, query: str, **parameters): 36 | return self._session.run(query, parameters).value() 37 | 38 | def find_movie_img(self, query: str, **parameters): 39 | result = self._session.run(query, parameters) 40 | # 提取结果 41 | introduction = None 42 | image = None 43 | for record in result: 44 | introduction = record['m.introduction'] 45 | image = record['m.image'] 46 | return {'introduction': introduction, 47 | 'image': image} 48 | 49 | def find_actor_img(self, query: str, **parameters): 50 | result = self._session.run(query, parameters) 51 | # 提取结果 52 | biography = None 53 | image = None 54 | for record in result: 55 | biography = record['a.biography'] 56 | image = record['a.image'] 57 | 58 | if biography is not None: 59 | return {'introduction': biography, 60 | 'image': image} 61 | else: 62 | return None 63 | 64 | 65 | if __name__ == "__main__": 66 | # import dotenv 67 | # 68 | # dotenv.load_dotenv() 69 | 70 | database = Database() 71 | genres = database.find_actor_img( 72 | """ 73 | MATCH (a:Actor) 74 | WHERE a.name = $actor_name 75 | RETURN a.biography, a.image 76 | Limit 1 77 | """, 78 | actor_name="葛优", 79 | ) 80 | 81 | database.close() 82 | 83 | print(genres) 84 | -------------------------------------------------------------------------------- /backend/flask/core/parser.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import jieba 4 | import jieba.posseg as jp 5 | 6 | # print(os.getcwd()) 7 | # USERDICT_PATH = os.path.join("..\\data", "userdict.txt") 8 | USERDICT_PATH = 'data\\userdict.txt' 9 | 10 | jieba.setLogLevel("ERROR") 11 | jieba.load_userdict(USERDICT_PATH) 12 | 13 | 14 | # 成龙 是 谁 ? =》 关于演员的介绍 问题分类 15 | # 拿到key ‘成龙’ !词性! 16 | 17 | class Parser: 18 | """ 19 | 语句解析器。 20 | 21 | 从语句中解析出演员、电影和类型。 22 | """ 23 | 24 | def __init__(self, sentence: str): 25 | self._pairs = jp.lcut(sentence) 26 | 27 | print(self._pairs) 28 | 29 | def _get_words_by_flag(self, flag: str): 30 | return [pair.word for pair in self._pairs if pair.flag == flag] 31 | 32 | @property 33 | def actors(self): 34 | return self._get_words_by_flag("nr") 35 | 36 | @property 37 | def movies(self): 38 | return self._get_words_by_flag("nm") 39 | 40 | @property 41 | def genres(self): 42 | return self._get_words_by_flag("ng") 43 | 44 | 45 | if __name__ == "__main__": 46 | while True: 47 | sentence = input("请输入语句:").strip() 48 | parser = Parser(sentence) # pair 先用jieba库进行分词操作 49 | print(f"解析成分:演员={parser.actors},电影={parser.movies},类型={parser.genres}") 50 | -------------------------------------------------------------------------------- /backend/flask/core/qa.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from backend.core.classifier import Classifier 4 | from backend.core.database import Database 5 | from backend.core.parser import Parser 6 | 7 | 8 | class QA: 9 | _BAD_QUESTION_MESSAGE = "抱歉,我无法理解这个问题。请换个问题试试吧!" 10 | _NOT_FOUND_MESSAGE = "没有找到答案。请换个问题试试吧!" 11 | 12 | def __init__(self): 13 | self._classifer = Classifier() 14 | self._database = Database() 15 | 16 | def close(self): 17 | self._database.close() 18 | 19 | def answer(self, sentence: str): 20 | sentence = sentence.replace("·", '').replace(" ", '') 21 | print(f"问题:{sentence}") 22 | 23 | label = self._classifer.classify(sentence) 24 | print(f"类别:{label}") 25 | 26 | parser = Parser(sentence) 27 | 28 | movies = parser.movies 29 | actors = parser.actors 30 | genres = parser.genres 31 | print(f"解析成分:电影={movies},演员={actors},类型={genres}") 32 | 33 | try: 34 | if label == "introduction_by_movie": 35 | return self._get_introduction_by_movie(movies[0]) 36 | elif label == "rating_by_movie": 37 | return self._get_rating_by_movie(movies[0]) 38 | elif label == "release_date_by_movie": 39 | return self._get_release_date_by_movie(movies[0]) 40 | elif label == "actors_by_movie": 41 | return self._get_actors_by_movie(movies[0]) 42 | elif label == "genres_by_movie": 43 | return self._get_genres_by_movie(movies[0]) 44 | elif label == "birthday_by_actor": 45 | return self._get_birthday_by_actor(actors[0]) 46 | elif label == "birthplace_by_actor": 47 | return self._get_birthplace_by_actor(actors[0]) 48 | elif label == "biography_by_actor": 49 | return self._get_biography_by_actor(actors[0]) 50 | elif label == "movies_by_actor": 51 | return self._get_movies_by_actor(actors[0]) 52 | elif label == "movie_num_by_actor": 53 | return self._get_movie_num_by_actor(actors[0]) 54 | elif label == "actors_by_genre": 55 | return self._get_actors_by_genre(genres[0]) 56 | elif label == "movies_by_actor_and_genre": 57 | return self._get_movies_by_actor_and_genre(actors[0], genres[0]) 58 | elif label == 'genres_by_actor': 59 | return self._get_genres_by_actor(actors[0]) 60 | else: 61 | return QA._BAD_QUESTION_MESSAGE 62 | except IndexError: 63 | return QA._BAD_QUESTION_MESSAGE 64 | 65 | def _get_introduction_by_movie(self, movie_name: str): 66 | result = self._database.find_movie_img( 67 | """ 68 | MATCH (m:Movie) 69 | WHERE m.name = $movie_name 70 | RETURN m.introduction, m.image 71 | Limit 1 72 | """, 73 | movie_name=movie_name, 74 | ) 75 | return result or QA._NOT_FOUND_MESSAGE 76 | 77 | def _get_rating_by_movie(self, movie_name: str): 78 | result = self._database.find_one( 79 | """ 80 | MATCH (m:Movie) 81 | WHERE m.name = $movie_name 82 | RETURN m.rating 83 | """, 84 | movie_name=movie_name, 85 | ) 86 | return round(result, 1) if result else QA._NOT_FOUND_MESSAGE 87 | 88 | def _get_release_date_by_movie(self, movie_name: str): 89 | result = self._database.find_one( 90 | """ 91 | MATCH (m:Movie) 92 | WHERE m.name = $movie_name 93 | RETURN m.release_date 94 | """, 95 | movie_name=movie_name, 96 | ) 97 | # print(result, type(result)) 98 | if result and type(result) == str: 99 | return result 100 | elif result and type(result) == datetime: 101 | result.strftime("%Y/%m/%d") 102 | else: 103 | return QA._NOT_FOUND_MESSAGE 104 | 105 | def _get_actors_by_movie(self, movie_name: str): 106 | results = self._database.find_many( 107 | """ 108 | MATCH (a:Actor)-[STARS_IN]->(m:Movie) 109 | WHERE m.name = $movie_name 110 | RETURN a.name 111 | """, 112 | movie_name=movie_name, 113 | ) 114 | return "、".join(results) if results else QA._NOT_FOUND_MESSAGE 115 | 116 | def _get_genres_by_movie(self, movie_name: str): 117 | results = self._database.find_many( 118 | """ 119 | MATCH (m:Movie)-[BELONGS_TO]->(g:Genre) 120 | WHERE m.name = $movie_name 121 | RETURN g.name 122 | """, 123 | movie_name=movie_name, 124 | ) 125 | return "、".join(results) if results else QA._NOT_FOUND_MESSAGE 126 | 127 | def _get_birthday_by_actor(self, actor_name: str): 128 | result = self._database.find_one( 129 | """ 130 | MATCH (a:Actor) 131 | WHERE a.name = $actor_name 132 | RETURN a.birthday 133 | """, 134 | actor_name=actor_name, 135 | ) 136 | return result or QA._NOT_FOUND_MESSAGE 137 | 138 | def _get_birthplace_by_actor(self, actor_name: str): 139 | result = self._database.find_one( 140 | """ 141 | MATCH (a:Actor) 142 | WHERE a.name = $actor_name 143 | RETURN a.birthplace 144 | """, 145 | actor_name=actor_name, 146 | ) 147 | return result or QA._NOT_FOUND_MESSAGE 148 | 149 | def _get_biography_by_actor(self, actor_name: str): 150 | isalpha = all(ord(c) < 128 for c in actor_name) 151 | if isalpha: 152 | result = self._database.find_actor_img( 153 | """ 154 | MATCH (a:Actor) 155 | WHERE a.english_name = $actor_name 156 | RETURN a.biography, a.image 157 | Limit 1 158 | """, 159 | actor_name=actor_name, 160 | ) 161 | else: 162 | result = self._database.find_actor_img( 163 | """ 164 | MATCH (a:Actor) 165 | WHERE a.name = $actor_name 166 | RETURN a.biography, a.image 167 | Limit 1 168 | """, 169 | actor_name=actor_name, 170 | ) 171 | 172 | if result: 173 | return result 174 | else: 175 | return QA._NOT_FOUND_MESSAGE 176 | 177 | def _get_movies_by_actor(self, actor_name: str): 178 | results = self._database.find_many( 179 | """ 180 | MATCH (a:Actor)-[STARS_IN]->(m:Movie) 181 | WHERE a.name = $actor_name 182 | RETURN m.name 183 | """, 184 | actor_name=actor_name, 185 | ) 186 | return "、".join(results) if results else QA._NOT_FOUND_MESSAGE 187 | 188 | def _get_movie_num_by_actor(self, actor_name: str): 189 | result = self._database.find_one( 190 | """ 191 | MATCH (a:Actor)-[STARS_IN]->(m:Movie) 192 | WHERE a.name = $actor_name 193 | RETURN COUNT(m) 194 | """, 195 | actor_name=actor_name, 196 | ) 197 | return result or QA._NOT_FOUND_MESSAGE 198 | 199 | def _get_genres_by_actor(self, actor_name: str): 200 | results = self._database.find_many( 201 | """ 202 | MATCH (a:Actor)-[STARS_IN]->(Movie)-[BELONGS_TO]->(g:Genre) 203 | WHERE a.name = $actor_name 204 | RETURN DISTINCT g.name 205 | """, 206 | actor_name=actor_name, 207 | ) 208 | print('###', results) 209 | return "、".join(results) if results else QA._NOT_FOUND_MESSAGE 210 | 211 | def _get_movies_by_actor_and_genre(self, actor_name: str, genre_name: str): 212 | results = self._database.find_many( 213 | """ 214 | MATCH (a:Actor)-[STARS_IN]->(m:Movie)-[BELONGS_TO]->(g:Genre) 215 | WHERE a.name = $actor_name AND g.name = $genre_name 216 | RETURN m.name, m.image 217 | """, 218 | actor_name=actor_name, 219 | genre_name=genre_name, 220 | ) 221 | return "、".join(results) if results else QA._NOT_FOUND_MESSAGE 222 | 223 | 224 | if __name__ == "__main__": 225 | # import dotenv 226 | 227 | # dotenv.load_dotenv() 228 | 229 | qa = QA() 230 | while True: 231 | sentence = input("请输入问题:") 232 | print(qa.answer(sentence)) 233 | -------------------------------------------------------------------------------- /backend/flask/data/train.json: -------------------------------------------------------------------------------- 1 | { 2 | "introduction_by_movie": [ 3 | "nm简介", 4 | "nm剧情简介", 5 | "nm的内容是什么", 6 | "nm讲了什么", 7 | "nm讲了什么故事", 8 | "nm演了什么", 9 | "nm的故事梗概是什么", 10 | "nm的剧情简介是什么", 11 | "nm的内容简介是什么", 12 | "nm的剧情介绍是什么", 13 | "nm的情节是什么", 14 | "nm的主要情节是什么" 15 | ], 16 | "rating_by_movie": [ 17 | "nm的评分是多少", 18 | "nm得了多少分", 19 | "nm的评分有多少", 20 | "nm的评分", 21 | "nm得分是多少", 22 | "nm的分数是", 23 | "nm电影分数是多少", 24 | "nm电影评分", 25 | "nm评分", 26 | "nm的分数是多少", 27 | "nm这部电影的评分是多少" 28 | ], 29 | "release_date_by_movie": [ 30 | "nm上映时间", 31 | "nm定档时间", 32 | "nm的上映时间是什么时候", 33 | "nm的首映时间是什么时候", 34 | "nm什么时候上映", 35 | "nm什么时候首映", 36 | "最早什么时候能看到nm", 37 | "nm什么时候在影院上线", 38 | "什么时候可以在影院看到nm", 39 | "nm什么时候在影院放映", 40 | "nm什么时候首播" 41 | ], 42 | "actors_by_movie": [ 43 | "nm演员表", 44 | "nm的演员", 45 | "nm里都有哪些演员", 46 | "nm是谁演的", 47 | "谁演了nm", 48 | "nm有哪些演员出演", 49 | "nm是由哪些人演的", 50 | "nm中参演的演员都有哪些", 51 | "nm中哪些人演过", 52 | "nm这部电影的演员都有哪些", 53 | "nm这部电影中哪些人演过" 54 | ], 55 | "genres_by_movie": [ 56 | "nm电影类型", 57 | "nm电影类别", 58 | "nm的电影类型是什么", 59 | "nm的电影类别是什么", 60 | "nm属于什么类的电影", 61 | "nm属于哪种类型的电影", 62 | "nm的风格是什么", 63 | "nm是什么风格的电影", 64 | "nm的格调是什么", 65 | "nm是什么格调的电影", 66 | "nm是什么类型的电影", 67 | "nm的类型是什么", 68 | "nm是什么类型的" 69 | ], 70 | "birthday_by_actor": [ 71 | "nr的出生日期", 72 | "nr的生日", 73 | "nr生日多少", 74 | "nr的出生是什么时候", 75 | "nr的出生是多少", 76 | "nr生日是什么时候", 77 | "nr生日什么时候", 78 | "nr什么时候过生日", 79 | "nr出生日期是什么时候", 80 | "nr什么时候出生的", 81 | "nr出生于哪一天", 82 | "nr的出生日期是哪一天", 83 | "nr哪一天出生的" 84 | ], 85 | "birthplace_by_actor": [ 86 | "nr的出生地", 87 | "nr的家乡", 88 | "nr的籍贯", 89 | "nr来自哪里", 90 | "nr是哪里人", 91 | "nr老家在哪", 92 | "nr的家乡是哪里", 93 | "nr的籍贯是哪里", 94 | "nr是哪个省的", 95 | "nr在哪里出生" 96 | ], 97 | "biography_by_actor": [ 98 | "nr", 99 | "nr", 100 | "nr", 101 | "nr", 102 | "nr", 103 | "演员nr", 104 | "nr人物介绍", 105 | "nr人物信息", 106 | "介绍一下nr", 107 | "nr是", 108 | "nr是谁", 109 | "nr的介绍", 110 | "nr的简介", 111 | "谁是nr", 112 | "nr的详细信息", 113 | "nr的信息" 114 | ], 115 | "movies_by_actor": [ 116 | "nr的作品有哪些", 117 | "nr演过什么", 118 | "nr演了什么电影", 119 | "nr演了什么作品", 120 | "nr代表作", 121 | "nr出演了什么电影", 122 | "nr演过什么电影", 123 | "nr拍过什么电影", 124 | "nr拍过哪些电影", 125 | "nr演过哪些电影", 126 | "nr过去演过哪些电影", 127 | "nr以前演过哪些电影", 128 | "nr演过的电影有什么", 129 | "nr有哪些电影" 130 | ], 131 | "movie_num_by_actor": [ 132 | "nr演了多少电影", 133 | "nr演了多少部电影", 134 | "nr演过多少电影", 135 | "nr演过多少部电影", 136 | "nr一共参演过多少电影", 137 | "nr参演的电影有多少" 138 | ], 139 | "genres_by_actor": [ 140 | "nr演了哪些类型的电影", 141 | "nr演了哪些种类的电影", 142 | "nr演了哪些风格的电影", 143 | "nr演过哪些类型的电影", 144 | "nr演过哪些种类的电影", 145 | "nr演过哪些风格的电影", 146 | "nr演过的电影都有哪些风格", 147 | "nr演过的电影有哪些类型", 148 | "nr演过风格的电影", 149 | "nr演过类型的电影", 150 | "nr演过题材的电影" 151 | ], 152 | "movies_by_actor_and_genre": [ 153 | "nr演过哪些ng类电影", 154 | "nr演哪些ng类电影", 155 | "nr演过ng类电影", 156 | "nr演过什么ng类电影", 157 | "nr演过ng类电影", 158 | "nr演过的ng类电影有哪些", 159 | "nr出演的ng类电影有哪些" 160 | ] 161 | } 162 | -------------------------------------------------------------------------------- /backend/flask/test/test.py: -------------------------------------------------------------------------------- 1 | import jieba 2 | from jieba import posseg 3 | from sklearn.feature_extraction.text import TfidfVectorizer 4 | 5 | 6 | def jiebaTest(): 7 | USERDICT_PATH = "userdict.txt" # xxx 词性 格式的文件 8 | 9 | jieba.setLogLevel("ERROR") 10 | jieba.load_userdict(USERDICT_PATH) 11 | 12 | sentence = "成龙演了什么喜剧?" 13 | 14 | # 使用jieba.posseg 进行词性标注,提前 导入演员、电影和题材 所指定的词性 15 | pairs = posseg.lcut(sentence) 16 | print(pairs) 17 | 18 | 19 | # 进行文本分类时,使用jieba.cut 进行分词能够提升分类效果! 20 | # 已测试 21 | 22 | # TF-IDF 词频TF-逆向文档频率IDF 逆向文档频率IDF为了惩罚无意义的词,例如的、了、我们、都 等等... 23 | # 词频表示词出现的次数, 逆向文档频率是衡量一个词在整个文本集合中的重要程度 IDF = log(N/n) N=总的文档数,n=词出现的文档数 24 | # 若n非常常见,极端N=n => log1 = 0 若 n = N/2 => log2 > 0 n出现的越少,越有区别性 25 | # TF-IDF = TF x IDF 作用:一个词预测主题的能力 26 | def tfidfTest(): 27 | texts = ["大大 小小 大大 大大 嘻嘻 哈哈 梦想 张三", "小小 大大 大大 大大 哈哈 嘻嘻 李四", "嘻嘻 哈哈 小小 大大 大大 大大 王五"] 28 | # texts = ["This is the first document.", "This is the second document."] 29 | tf_idf = TfidfVectorizer() 30 | trans = tf_idf.fit_transform(texts) 31 | feature_list = tf_idf.get_feature_names_out() 32 | weight = trans.toarray() 33 | print(feature_list) 34 | print(weight) 35 | 36 | 37 | # 训练数据使用占位符,或许时降低占位符对分类的影响? 38 | 39 | 40 | if __name__ == '__main__': 41 | # jiebaTest() 42 | tfidfTest() 43 | 44 | 45 | # QA System 46 | # Question class 47 | # 文本分类 成龙是谁? => 预处理 [分词(使用空格间隔开) + TD-IDF向量化] => 分类模型 => 问题类型:演员简介 48 | # 词性标注, 句子 => 分词+按照自定义的词性标,pair再拿出需要的标记, 此步骤的目的是拿到查询的key 49 | # 根据问题和查询的key,在图数据库中进行查询 50 | -------------------------------------------------------------------------------- /backend/flask/test/userdict.txt: -------------------------------------------------------------------------------- 1 | 卧虎藏龙 nm 2 | 肖申克的救赎 nm 3 | 成龙 nr 4 | 喜剧 ng -------------------------------------------------------------------------------- /backend/spider/database_1000/genre.csv: -------------------------------------------------------------------------------- 1 | id,name 2 | 0,剧情 3 | 1,爱情 4 | 2,同性 5 | 3,犯罪 6 | 4,动作 7 | 5,悬疑 8 | 6,惊悚 9 | 7,喜剧 10 | 8,科幻 11 | 9,历史 12 | 10,战争 13 | 11,冒险 14 | 12,动画 15 | 13,奇幻 16 | 14,家庭 17 | 15,灾难 18 | 16,音乐 19 | 17,情色 20 | 18,传记 21 | 19,歌舞 22 | 20,恐怖 23 | 21,武侠 24 | 22,古装 25 | 23,西部 26 | 24,儿童 27 | 25,黑色电影 28 | 26,运动 29 | 27,纪录片 30 | -------------------------------------------------------------------------------- /backend/spider/database_1000/movie_genre.csv: -------------------------------------------------------------------------------- 1 | movie_id,genre_id 2 | 0,0 3 | 0,1 4 | 0,2 5 | 1,0 6 | 1,3 7 | 2,0 8 | 2,4 9 | 2,3 10 | 3,0 11 | 3,4 12 | 3,5 13 | 3,6 14 | 4,0 15 | 4,7 16 | 4,1 17 | 5,0 18 | 5,7 19 | 5,3 20 | 6,0 21 | 6,1 22 | 7,0 23 | 7,5 24 | 7,6 25 | 8,0 26 | 8,8 27 | 8,3 28 | 9,0 29 | 9,9 30 | 9,10 31 | 10,0 32 | 10,8 33 | 10,5 34 | 10,11 35 | 11,0 36 | 11,12 37 | 11,13 38 | 12,0 39 | 12,7 40 | 12,1 41 | 12,10 42 | 13,0 43 | 13,3 44 | 14,0 45 | 14,1 46 | 14,2 47 | 14,14 48 | 15,0 49 | 15,1 50 | 15,15 51 | 16,0 52 | 16,16 53 | 17,0 54 | 17,1 55 | 18,0 56 | 18,1 57 | 18,2 58 | 19,0 59 | 19,1 60 | 20,0 61 | 20,6 62 | 20,3 63 | 21,8 64 | 21,12 65 | 21,11 66 | 22,0 67 | 22,5 68 | 22,6 69 | 22,3 70 | 23,0 71 | 23,1 72 | 23,9 73 | 23,10 74 | 24,0 75 | 25,0 76 | 25,3 77 | 26,0 78 | 26,5 79 | 26,6 80 | 26,3 81 | 27,0 82 | 27,1 83 | 28,8 84 | 28,6 85 | 28,11 86 | 29,0 87 | 29,8 88 | 30,0 89 | 30,17 90 | 30,10 91 | 31,0 92 | 31,1 93 | 31,14 94 | 32,0 95 | 32,1 96 | 33,0 97 | 33,16 98 | 34,0 99 | 34,1 100 | 34,8 101 | 35,4 102 | 35,8 103 | 36,0 104 | 36,1 105 | 37,0 106 | 37,7 107 | 37,1 108 | 38,0 109 | 38,1 110 | 38,2 111 | 39,0 112 | 39,1 113 | 39,14 114 | 40,0 115 | 40,18 116 | 41,0 117 | 41,19 118 | 42,0 119 | 42,3 120 | 43,0 121 | 43,7 122 | 43,3 123 | 44,0 124 | 44,3 125 | 45,0 126 | 45,16 127 | 45,18 128 | 45,10 129 | 46,0 130 | 46,3 131 | 47,0 132 | 47,7 133 | 47,1 134 | 48,0 135 | 48,1 136 | 48,13 137 | 49,0 138 | 49,6 139 | 50,0 140 | 50,1 141 | 51,0 142 | 51,8 143 | 51,5 144 | 51,6 145 | 52,0 146 | 52,7 147 | 52,1 148 | 53,0 149 | 53,1 150 | 54,0 151 | 54,5 152 | 55,0 153 | 55,1 154 | 55,10 155 | 56,0 156 | 56,5 157 | 56,6 158 | 57,0 159 | 58,5 160 | 58,6 161 | 58,20 162 | 59,0 163 | 59,14 164 | 59,13 165 | 59,11 166 | 60,0 167 | 61,0 168 | 61,1 169 | 61,13 170 | 62,0 171 | 62,5 172 | 62,3 173 | 63,0 174 | 63,1 175 | 63,10 176 | 64,0 177 | 64,7 178 | 64,1 179 | 65,0 180 | 65,3 181 | 65,13 182 | 66,0 183 | 66,5 184 | 67,12 185 | 67,13 186 | 67,11 187 | 68,0 188 | 68,3 189 | 69,0 190 | 69,5 191 | 70,0 192 | 70,5 193 | 70,6 194 | 71,0 195 | 71,7 196 | 72,0 197 | 72,4 198 | 72,18 199 | 72,9 200 | 72,10 201 | 73,0 202 | 73,7 203 | 73,12 204 | 73,11 205 | 74,0 206 | 74,4 207 | 74,8 208 | 74,6 209 | 74,3 210 | 75,0 211 | 75,4 212 | 75,1 213 | 75,21 214 | 75,22 215 | 76,0 216 | 76,7 217 | 76,12 218 | 77,0 219 | 77,4 220 | 77,13 221 | 77,11 222 | 78,0 223 | 78,1 224 | 79,0 225 | 80,0 226 | 80,5 227 | 80,6 228 | 81,0 229 | 81,7 230 | 81,1 231 | 81,19 232 | 82,0 233 | 82,4 234 | 82,5 235 | 82,6 236 | 82,3 237 | 83,0 238 | 83,4 239 | 83,5 240 | 83,6 241 | 84,0 242 | 84,5 243 | 84,6 244 | 84,3 245 | 85,20 246 | 86,0 247 | 87,0 248 | 87,13 249 | 87,11 250 | 88,0 251 | 88,1 252 | 89,0 253 | 89,14 254 | 89,9 255 | 90,0 256 | 90,1 257 | 90,17 258 | 91,0 259 | 91,10 260 | 92,0 261 | 93,4 262 | 93,6 263 | 93,3 264 | 94,7 265 | 94,1 266 | 94,13 267 | 94,22 268 | 95,0 269 | 95,18 270 | 95,11 271 | 96,0 272 | 96,6 273 | 96,3 274 | 97,0 275 | 97,7 276 | 97,14 277 | 98,0 278 | 99,0 279 | 99,14 280 | 100,0 281 | 101,0 282 | 101,3 283 | 102,0 284 | 102,7 285 | 103,0 286 | 103,3 287 | 104,0 288 | 104,4 289 | 104,11 290 | 105,0 291 | 105,3 292 | 106,0 293 | 106,7 294 | 106,1 295 | 107,0 296 | 107,19 297 | 108,0 298 | 108,1 299 | 108,16 300 | 109,0 301 | 109,5 302 | 109,6 303 | 110,0 304 | 110,14 305 | 110,18 306 | 111,0 307 | 112,0 308 | 112,3 309 | 113,0 310 | 113,1 311 | 113,19 312 | 113,18 313 | 114,0 314 | 114,6 315 | 115,0 316 | 115,1 317 | 116,0 318 | 116,7 319 | 116,1 320 | 117,0 321 | 117,5 322 | 117,6 323 | 118,0 324 | 118,14 325 | 118,11 326 | 119,0 327 | 119,1 328 | 119,17 329 | 120,0 330 | 120,14 331 | 121,0 332 | 121,8 333 | 121,11 334 | 122,0 335 | 122,4 336 | 122,13 337 | 122,11 338 | 123,0 339 | 123,7 340 | 123,11 341 | 124,0 342 | 124,1 343 | 124,16 344 | 125,0 345 | 125,1 346 | 126,0 347 | 126,18 348 | 126,9 349 | 127,7 350 | 127,1 351 | 127,19 352 | 128,0 353 | 129,8 354 | 129,6 355 | 130,4 356 | 130,8 357 | 130,11 358 | 131,0 359 | 131,1 360 | 131,5 361 | 131,10 362 | 132,0 363 | 132,3 364 | 133,0 365 | 133,7 366 | 133,1 367 | 133,2 368 | 133,14 369 | 134,0 370 | 134,1 371 | 134,8 372 | 134,12 373 | 135,0 374 | 135,10 375 | 136,12 376 | 136,13 377 | 136,11 378 | 137,0 379 | 137,1 380 | 138,0 381 | 138,1 382 | 139,0 383 | 139,1 384 | 139,2 385 | 140,0 386 | 140,18 387 | 140,11 388 | 141,0 389 | 141,7 390 | 141,4 391 | 141,23 392 | 142,0 393 | 142,8 394 | 143,0 395 | 143,7 396 | 144,0 397 | 144,3 398 | 145,0 399 | 145,7 400 | 145,10 401 | 146,0 402 | 146,16 403 | 146,18 404 | 146,9 405 | 147,0 406 | 147,1 407 | 147,12 408 | 148,5 409 | 148,6 410 | 148,20 411 | 149,0 412 | 149,1 413 | 150,4 414 | 150,6 415 | 150,3 416 | 151,0 417 | 151,1 418 | 151,2 419 | 152,5 420 | 152,6 421 | 153,0 422 | 153,18 423 | 154,0 424 | 154,6 425 | 154,3 426 | 155,0 427 | 155,10 428 | 155,13 429 | 156,0 430 | 157,0 431 | 157,1 432 | 157,13 433 | 158,0 434 | 158,1 435 | 158,21 436 | 159,0 437 | 159,6 438 | 159,3 439 | 160,4 440 | 160,6 441 | 160,3 442 | 161,0 443 | 161,6 444 | 162,0 445 | 162,7 446 | 162,1 447 | 163,0 448 | 163,24 449 | 163,11 450 | 164,0 451 | 164,1 452 | 164,13 453 | 165,0 454 | 165,1 455 | 166,0 456 | 166,7 457 | 166,1 458 | 167,0 459 | 167,18 460 | 167,9 461 | 168,0 462 | 168,19 463 | 168,14 464 | 168,24 465 | 169,0 466 | 169,2 467 | 169,16 468 | 170,0 469 | 170,14 470 | 170,24 471 | 171,0 472 | 171,7 473 | 172,0 474 | 172,1 475 | 172,8 476 | 173,0 477 | 173,4 478 | 173,3 479 | 174,0 480 | 174,1 481 | 174,3 482 | 175,0 483 | 175,12 484 | 175,10 485 | 176,0 486 | 176,1 487 | 176,5 488 | 177,5 489 | 177,6 490 | 177,3 491 | 178,0 492 | 178,1 493 | 178,17 494 | 178,18 495 | 179,0 496 | 179,1 497 | 179,16 498 | 180,0 499 | 180,1 500 | 180,3 501 | 181,1 502 | 181,5 503 | 181,6 504 | 182,12 505 | 182,13 506 | 182,11 507 | 183,0 508 | 183,1 509 | 183,13 510 | 184,0 511 | 184,1 512 | 185,0 513 | 185,1 514 | 185,2 515 | 186,8 516 | 186,12 517 | 186,5 518 | 186,6 519 | 187,12 520 | 187,13 521 | 187,11 522 | 188,0 523 | 188,8 524 | 189,0 525 | 189,9 526 | 190,0 527 | 191,0 528 | 191,10 529 | 192,0 530 | 192,2 531 | 193,0 532 | 194,0 533 | 194,8 534 | 195,0 535 | 196,0 536 | 196,7 537 | 196,1 538 | 197,0 539 | 197,7 540 | 197,16 541 | 198,7 542 | 198,1 543 | 198,13 544 | 198,22 545 | 199,0 546 | 200,0 547 | 200,9 548 | 201,8 549 | 201,5 550 | 201,6 551 | 202,4 552 | 202,18 553 | 202,3 554 | 203,0 555 | 203,1 556 | 203,10 557 | 203,23 558 | 204,0 559 | 204,2 560 | 204,18 561 | 204,10 562 | 205,0 563 | 205,1 564 | 205,13 565 | 206,8 566 | 206,5 567 | 206,6 568 | 207,0 569 | 207,16 570 | 208,0 571 | 208,16 572 | 209,0 573 | 209,16 574 | 209,18 575 | 210,6 576 | 210,3 577 | 211,0 578 | 211,5 579 | 211,6 580 | 212,0 581 | 212,14 582 | 213,0 583 | 213,25 584 | 214,0 585 | 214,14 586 | 215,0 587 | 215,6 588 | 215,3 589 | 216,0 590 | 216,18 591 | 216,3 592 | 217,0 593 | 217,1 594 | 217,18 595 | 218,0 596 | 218,6 597 | 218,3 598 | 219,0 599 | 219,9 600 | 219,10 601 | 220,0 602 | 220,7 603 | 220,1 604 | 221,4 605 | 221,8 606 | 221,11 607 | 222,8 608 | 222,5 609 | 222,6 610 | 223,0 611 | 223,6 612 | 223,13 613 | 224,0 614 | 224,8 615 | 224,5 616 | 225,0 617 | 225,4 618 | 225,13 619 | 225,11 620 | 226,0 621 | 227,12 622 | 227,19 623 | 227,11 624 | 228,0 625 | 228,8 626 | 229,0 627 | 229,1 628 | 229,13 629 | 229,22 630 | 230,7 631 | 230,12 632 | 230,13 633 | 230,11 634 | 231,0 635 | 231,7 636 | 232,7 637 | 232,20 638 | 233,0 639 | 233,7 640 | 234,5 641 | 234,6 642 | 234,20 643 | 235,0 644 | 235,1 645 | 235,2 646 | 236,0 647 | 236,5 648 | 236,6 649 | 236,3 650 | 237,0 651 | 238,0 652 | 238,7 653 | 238,1 654 | 238,13 655 | 239,4 656 | 239,8 657 | 239,11 658 | 240,0 659 | 240,4 660 | 240,11 661 | 241,0 662 | 241,1 663 | 242,0 664 | 242,1 665 | 242,3 666 | 243,0 667 | 243,5 668 | 243,20 669 | 244,0 670 | 244,18 671 | 244,26 672 | 245,0 673 | 246,0 674 | 246,1 675 | 246,14 676 | 247,0 677 | 247,14 678 | 248,0 679 | 249,0 680 | 249,7 681 | 249,1 682 | 249,13 683 | 250,0 684 | 250,4 685 | 250,8 686 | 250,6 687 | 251,0 688 | 251,5 689 | 251,6 690 | 251,3 691 | 252,0 692 | 252,1 693 | 252,17 694 | 253,0 695 | 253,1 696 | 253,2 697 | 254,0 698 | 254,18 699 | 254,9 700 | 254,10 701 | 255,8 702 | 255,6 703 | 255,20 704 | 256,0 705 | 256,8 706 | 256,5 707 | 256,6 708 | 257,0 709 | 257,6 710 | 257,3 711 | 257,25 712 | 258,0 713 | 258,7 714 | 258,1 715 | 259,0 716 | 259,14 717 | 260,12 718 | 260,6 719 | 260,13 720 | 261,0 721 | 262,0 722 | 262,7 723 | 262,1 724 | 263,0 725 | 263,7 726 | 264,0 727 | 264,23 728 | 264,11 729 | 265,0 730 | 265,7 731 | 265,1 732 | 266,7 733 | 266,12 734 | 266,13 735 | 267,0 736 | 267,7 737 | 268,5 738 | 268,6 739 | 268,25 740 | 269,7 741 | 269,4 742 | 269,11 743 | 270,0 744 | 270,1 745 | 271,8 746 | 271,6 747 | 271,20 748 | 272,7 749 | 272,13 750 | 272,21 751 | 272,22 752 | 273,0 753 | 273,3 754 | 274,0 755 | 274,14 756 | 275,1 757 | 276,0 758 | 276,7 759 | 276,1 760 | 277,0 761 | 277,1 762 | 278,0 763 | 279,0 764 | 279,1 765 | 280,0 766 | 280,12 767 | 280,18 768 | 281,4 769 | 281,5 770 | 281,6 771 | 281,3 772 | 282,0 773 | 282,4 774 | 282,1 775 | 282,18 776 | 283,8 777 | 283,6 778 | 283,15 779 | 284,0 780 | 284,26 781 | 285,0 782 | 285,1 783 | 285,12 784 | 286,0 785 | 286,4 786 | 286,23 787 | 286,11 788 | 287,7 789 | 288,0 790 | 288,1 791 | 288,10 792 | 289,0 793 | 289,13 794 | 290,1 795 | 290,13 796 | 290,21 797 | 290,22 798 | 291,0 799 | 291,1 800 | 291,6 801 | 291,17 802 | 292,0 803 | 292,4 804 | 293,0 805 | 293,1 806 | 293,2 807 | 293,18 808 | 294,0 809 | 294,1 810 | 294,12 811 | 295,0 812 | 296,0 813 | 296,8 814 | 296,5 815 | 297,0 816 | 297,6 817 | 297,3 818 | 298,4 819 | 298,8 820 | 299,0 821 | 300,0 822 | 300,7 823 | 301,0 824 | 301,1 825 | 302,0 826 | 302,1 827 | 302,18 828 | 302,11 829 | 303,0 830 | 303,3 831 | 304,0 832 | 304,6 833 | 305,0 834 | 305,1 835 | 306,19 836 | 306,13 837 | 306,11 838 | 307,7 839 | 307,4 840 | 307,8 841 | 307,12 842 | 307,11 843 | 308,0 844 | 308,5 845 | 308,20 846 | 309,7 847 | 309,12 848 | 309,11 849 | 310,0 850 | 310,5 851 | 310,6 852 | 311,0 853 | 311,8 854 | 311,6 855 | 312,0 856 | 312,1 857 | 312,19 858 | 313,23 859 | 313,11 860 | 314,0 861 | 314,7 862 | 314,1 863 | 315,0 864 | 315,7 865 | 315,3 866 | 316,0 867 | 316,5 868 | 316,6 869 | 316,17 870 | 317,7 871 | 317,1 872 | 317,13 873 | 318,0 874 | 318,18 875 | 318,3 876 | 319,0 877 | 319,7 878 | 319,3 879 | 320,0 880 | 320,5 881 | 321,0 882 | 321,6 883 | 322,0 884 | 322,7 885 | 322,1 886 | 322,5 887 | 323,0 888 | 323,5 889 | 323,3 890 | 324,0 891 | 324,7 892 | 324,1 893 | 325,0 894 | 325,1 895 | 325,5 896 | 325,3 897 | 326,4 898 | 326,13 899 | 326,11 900 | 327,0 901 | 327,4 902 | 327,3 903 | 328,12 904 | 328,13 905 | 328,11 906 | 329,12 907 | 329,13 908 | 329,11 909 | 330,0 910 | 330,10 911 | 331,0 912 | 331,5 913 | 331,3 914 | 332,12 915 | 332,13 916 | 332,11 917 | 333,0 918 | 333,3 919 | 334,0 920 | 334,1 921 | 334,18 922 | 335,0 923 | 335,5 924 | 335,6 925 | 336,0 926 | 336,7 927 | 336,1 928 | 337,0 929 | 337,7 930 | 338,0 931 | 339,7 932 | 339,12 933 | 339,11 934 | 340,0 935 | 340,1 936 | 341,7 937 | 341,4 938 | 341,3 939 | 342,0 940 | 342,1 941 | 342,17 942 | 343,0 943 | 344,0 944 | 344,2 945 | 345,0 946 | 345,5 947 | 345,6 948 | 345,3 949 | 346,4 950 | 346,8 951 | 346,13 952 | 346,11 953 | 347,0 954 | 347,1 955 | 347,13 956 | 348,0 957 | 348,1 958 | 349,8 959 | 349,5 960 | 349,6 961 | 350,0 962 | 350,10 963 | 351,7 964 | 351,12 965 | 351,11 966 | 352,0 967 | 352,1 968 | 353,0 969 | 353,1 970 | 354,0 971 | 354,7 972 | 354,1 973 | 355,0 974 | 355,7 975 | 355,1 976 | 356,7 977 | 356,3 978 | 357,27 979 | 358,0 980 | 358,14 981 | 359,0 982 | 359,14 983 | 360,0 984 | 360,4 985 | 360,8 986 | 360,6 987 | 360,3 988 | 361,5 989 | 361,6 990 | 361,3 991 | 362,7 992 | 362,1 993 | 363,0 994 | 363,2 995 | 363,18 996 | 364,0 997 | 364,21 998 | 364,22 999 | 365,1 1000 | 365,20 1001 | 365,13 1002 | 366,0 1003 | 366,12 1004 | 366,13 1005 | 367,0 1006 | 367,7 1007 | 367,1 1008 | 368,0 1009 | 368,5 1010 | 368,3 1011 | 369,7 1012 | 369,1 1013 | 370,0 1014 | 370,1 1015 | 371,7 1016 | 371,8 1017 | 371,12 1018 | 371,14 1019 | 371,11 1020 | 372,0 1021 | 372,7 1022 | 372,24 1023 | 373,7 1024 | 373,12 1025 | 373,24 1026 | 373,13 1027 | 373,11 1028 | 374,0 1029 | 374,7 1030 | 374,1 1031 | 375,0 1032 | 375,4 1033 | 375,3 1034 | 376,0 1035 | 376,5 1036 | 376,3 1037 | 376,13 1038 | 377,4 1039 | 377,8 1040 | 377,12 1041 | 378,4 1042 | 378,8 1043 | 378,12 1044 | 379,0 1045 | 379,7 1046 | 379,1 1047 | 380,7 1048 | 380,1 1049 | 380,16 1050 | 381,0 1051 | 381,1 1052 | 382,0 1053 | 382,7 1054 | 382,13 1055 | 382,11 1056 | 383,0 1057 | 383,1 1058 | 384,0 1059 | 384,1 1060 | 384,3 1061 | 385,0 1062 | 385,1 1063 | 385,19 1064 | 386,0 1065 | 386,1 1066 | 386,18 1067 | 387,0 1068 | 387,7 1069 | 387,1 1070 | 388,0 1071 | 389,0 1072 | 389,8 1073 | 390,7 1074 | 390,19 1075 | 390,3 1076 | 391,7 1077 | 391,13 1078 | 392,0 1079 | 392,1 1080 | 392,5 1081 | 392,3 1082 | 393,0 1083 | 393,7 1084 | 393,1 1085 | 394,0 1086 | 394,1 1087 | 394,2 1088 | 395,0 1089 | 395,23 1090 | 396,0 1091 | 396,2 1092 | 397,0 1093 | 397,12 1094 | 397,13 1095 | 398,7 1096 | 398,14 1097 | 398,24 1098 | 399,0 1099 | 399,1 1100 | 399,9 1101 | 399,10 1102 | 400,4 1103 | 400,8 1104 | 400,6 1105 | 400,11 1106 | 401,0 1107 | 402,0 1108 | 402,7 1109 | 402,1 1110 | 403,0 1111 | 403,3 1112 | 404,0 1113 | 404,1 1114 | 404,5 1115 | 405,0 1116 | 405,24 1117 | 406,4 1118 | 406,5 1119 | 406,6 1120 | 407,5 1121 | 407,6 1122 | 407,11 1123 | 408,0 1124 | 408,10 1125 | 409,0 1126 | 409,2 1127 | 409,10 1128 | 410,7 1129 | 410,8 1130 | 410,11 1131 | 411,0 1132 | 411,5 1133 | 411,6 1134 | 411,3 1135 | 411,25 1136 | 412,0 1137 | 412,1 1138 | 412,2 1139 | 413,0 1140 | 413,14 1141 | 413,18 1142 | 414,0 1143 | 414,1 1144 | 414,17 1145 | 415,0 1146 | 415,1 1147 | 415,6 1148 | 415,17 1149 | 416,7 1150 | 416,3 1151 | 417,0 1152 | 417,1 1153 | 417,14 1154 | 418,0 1155 | 418,10 1156 | 419,0 1157 | 419,4 1158 | 419,9 1159 | 419,10 1160 | 419,11 1161 | 420,0 1162 | 420,7 1163 | 420,1 1164 | 421,0 1165 | 421,18 1166 | 421,11 1167 | 422,4 1168 | 422,6 1169 | 422,15 1170 | 423,0 1171 | 423,13 1172 | 424,0 1173 | 424,1 1174 | 425,0 1175 | 425,9 1176 | 425,10 1177 | 426,0 1178 | 426,14 1179 | 427,0 1180 | 427,7 1181 | 427,1 1182 | 428,0 1183 | 429,0 1184 | 429,7 1185 | 429,1 1186 | 430,0 1187 | 430,2 1188 | 430,14 1189 | 430,18 1190 | 431,0 1191 | 431,1 1192 | 431,16 1193 | 431,18 1194 | 432,7 1195 | 432,13 1196 | 432,11 1197 | 433,0 1198 | 433,6 1199 | 433,3 1200 | 434,0 1201 | 434,1 1202 | 434,10 1203 | 435,0 1204 | 435,1 1205 | 435,16 1206 | 436,0 1207 | 436,6 1208 | 436,10 1209 | 436,3 1210 | 437,7 1211 | 437,12 1212 | 438,7 1213 | 438,1 1214 | 439,0 1215 | 439,17 1216 | 440,0 1217 | 440,1 1218 | 440,8 1219 | 440,13 1220 | 441,0 1221 | 441,8 1222 | 441,11 1223 | 442,0 1224 | 442,3 1225 | 443,0 1226 | 443,2 1227 | 443,18 1228 | 444,0 1229 | 444,5 1230 | 444,6 1231 | 444,18 1232 | 444,3 1233 | 445,0 1234 | 445,1 1235 | 445,20 1236 | 446,0 1237 | 446,18 1238 | 446,9 1239 | 446,10 1240 | 447,0 1241 | 447,10 1242 | 447,13 1243 | 448,0 1244 | 448,9 1245 | 449,0 1246 | 449,7 1247 | 449,3 1248 | 450,13 1249 | 450,11 1250 | 451,0 1251 | 452,7 1252 | 452,1 1253 | 453,0 1254 | 454,0 1255 | 454,2 1256 | 455,0 1257 | 455,6 1258 | 455,11 1259 | 456,0 1260 | 456,1 1261 | 457,7 1262 | 457,12 1263 | 457,14 1264 | 458,0 1265 | 458,13 1266 | 459,5 1267 | 459,20 1268 | 460,0 1269 | 460,14 1270 | 461,0 1271 | 461,1 1272 | 462,0 1273 | 462,3 1274 | 463,12 1275 | 463,13 1276 | 463,11 1277 | 464,20 1278 | 465,0 1279 | 465,1 1280 | 465,6 1281 | 465,3 1282 | 466,0 1283 | 466,5 1284 | 466,6 1285 | 466,2 1286 | 466,3 1287 | 467,0 1288 | 467,7 1289 | 467,1 1290 | 468,0 1291 | 469,1 1292 | 470,0 1293 | 470,5 1294 | 471,0 1295 | 472,12 1296 | 472,13 1297 | 472,11 1298 | 473,0 1299 | 473,18 1300 | 473,9 1301 | 474,7 1302 | 474,4 1303 | 474,12 1304 | 474,11 1305 | 475,0 1306 | 475,1 1307 | 476,0 1308 | 476,6 1309 | 476,9 1310 | 477,0 1311 | 478,0 1312 | 478,1 1313 | 478,10 1314 | 479,0 1315 | 479,1 1316 | 479,13 1317 | 480,0 1318 | 480,14 1319 | 481,0 1320 | 481,1 1321 | 481,5 1322 | 482,0 1323 | 482,9 1324 | 482,10 1325 | 483,0 1326 | 484,0 1327 | 484,18 1328 | 484,9 1329 | 484,10 1330 | 485,0 1331 | 485,7 1332 | 485,3 1333 | 486,0 1334 | 486,18 1335 | 486,9 1336 | 486,10 1337 | 487,0 1338 | 487,6 1339 | 487,3 1340 | 488,0 1341 | 488,5 1342 | 488,6 1343 | 488,18 1344 | 488,9 1345 | 489,7 1346 | 489,12 1347 | 489,11 1348 | 490,0 1349 | 491,0 1350 | 491,1 1351 | 491,3 1352 | 492,0 1353 | 492,6 1354 | 493,0 1355 | 493,1 1356 | 494,0 1357 | 495,0 1358 | 495,24 1359 | 495,13 1360 | 495,11 1361 | 496,0 1362 | 496,1 1363 | 496,10 1364 | 497,0 1365 | 497,3 1366 | 497,23 1367 | 498,0 1368 | 498,1 1369 | 499,5 1370 | 499,20 1371 | 499,3 1372 | 500,0 1373 | 500,8 1374 | 500,5 1375 | 501,0 1376 | 501,14 1377 | 502,0 1378 | 502,1 1379 | 503,13 1380 | 503,11 1381 | 504,0 1382 | 505,6 1383 | 505,20 1384 | 505,11 1385 | 506,20 1386 | 507,7 1387 | 507,4 1388 | 507,3 1389 | 507,13 1390 | 508,1 1391 | 508,16 1392 | 508,13 1393 | 509,0 1394 | 509,8 1395 | 509,5 1396 | 510,0 1397 | 510,3 1398 | 510,23 1399 | 510,11 1400 | 511,0 1401 | 511,23 1402 | 512,0 1403 | 512,5 1404 | 512,3 1405 | 513,0 1406 | 513,5 1407 | 513,3 1408 | 514,0 1409 | 515,0 1410 | 515,7 1411 | 515,4 1412 | 515,3 1413 | 516,0 1414 | 516,1 1415 | 517,7 1416 | 517,5 1417 | 517,3 1418 | 518,0 1419 | 518,1 1420 | 519,0 1421 | 519,1 1422 | 520,0 1423 | 520,20 1424 | 521,0 1425 | 522,4 1426 | 522,5 1427 | 522,6 1428 | 523,0 1429 | 523,7 1430 | 523,11 1431 | 524,7 1432 | 524,12 1433 | 524,11 1434 | 525,0 1435 | 525,1 1436 | 526,0 1437 | 526,14 1438 | 527,0 1439 | 528,27 1440 | 529,4 1441 | 529,1 1442 | 529,21 1443 | 529,22 1444 | 530,0 1445 | 530,1 1446 | 530,6 1447 | 531,0 1448 | 531,5 1449 | 531,6 1450 | 532,0 1451 | 532,5 1452 | 532,3 1453 | 533,4 1454 | 533,13 1455 | 533,11 1456 | 534,0 1457 | 534,1 1458 | 534,14 1459 | 535,0 1460 | 535,6 1461 | 535,3 1462 | 536,0 1463 | 536,6 1464 | 536,3 1465 | 537,0 1466 | 538,0 1467 | 538,18 1468 | 539,0 1469 | 539,17 1470 | 540,8 1471 | 540,6 1472 | 540,11 1473 | 541,0 1474 | 541,7 1475 | 542,0 1476 | 542,7 1477 | 543,7 1478 | 543,12 1479 | 543,19 1480 | 543,13 1481 | 544,0 1482 | 544,1 1483 | 544,18 1484 | 545,0 1485 | 545,1 1486 | 546,0 1487 | 546,9 1488 | 547,0 1489 | 547,2 1490 | 548,0 1491 | 548,7 1492 | 548,1 1493 | 549,0 1494 | 549,5 1495 | 549,3 1496 | 550,0 1497 | 550,7 1498 | 551,4 1499 | 551,8 1500 | 552,0 1501 | 552,1 1502 | 552,13 1503 | 553,12 1504 | 553,13 1505 | 553,11 1506 | 554,0 1507 | 554,4 1508 | 554,6 1509 | 554,3 1510 | 555,0 1511 | 555,7 1512 | 555,10 1513 | 556,0 1514 | 556,1 1515 | 556,18 1516 | 557,0 1517 | 557,18 1518 | 557,9 1519 | 557,10 1520 | 558,0 1521 | 558,1 1522 | 559,7 1523 | 559,8 1524 | 559,11 1525 | 560,0 1526 | 560,5 1527 | 560,6 1528 | 560,3 1529 | 561,0 1530 | 561,1 1531 | 561,12 1532 | 561,13 1533 | 562,0 1534 | 562,1 1535 | 563,0 1536 | 563,1 1537 | 564,0 1538 | 564,16 1539 | 565,0 1540 | 566,7 1541 | 566,1 1542 | 566,2 1543 | 566,18 1544 | 567,0 1545 | 567,1 1546 | 567,18 1547 | 567,9 1548 | 568,0 1549 | 568,7 1550 | 568,11 1551 | 569,0 1552 | 569,10 1553 | 570,0 1554 | 570,10 1555 | 571,0 1556 | 571,1 1557 | 571,5 1558 | 571,13 1559 | 572,0 1560 | 572,14 1561 | 573,7 1562 | 573,1 1563 | 573,23 1564 | 573,11 1565 | 574,0 1566 | 574,5 1567 | 574,6 1568 | 575,0 1569 | 575,4 1570 | 575,11 1571 | 576,0 1572 | 576,1 1573 | 576,2 1574 | 576,18 1575 | 577,0 1576 | 577,18 1577 | 577,9 1578 | 577,3 1579 | 578,0 1580 | 578,1 1581 | 578,5 1582 | 578,10 1583 | 579,0 1584 | 579,7 1585 | 579,1 1586 | 579,14 1587 | 580,0 1588 | 580,20 1589 | 580,19 1590 | 581,0 1591 | 582,0 1592 | 583,0 1593 | 584,0 1594 | 584,5 1595 | 585,0 1596 | 585,11 1597 | 586,0 1598 | 586,1 1599 | 586,18 1600 | 587,0 1601 | 587,1 1602 | 587,26 1603 | 588,0 1604 | 588,3 1605 | 588,26 1606 | 589,0 1607 | 589,4 1608 | 589,3 1609 | 590,0 1610 | 590,18 1611 | 591,4 1612 | 591,8 1613 | 592,8 1614 | 592,5 1615 | 592,6 1616 | 593,0 1617 | 593,7 1618 | 593,1 1619 | 594,4 1620 | 594,8 1621 | 594,6 1622 | 594,3 1623 | 595,4 1624 | 595,8 1625 | 595,6 1626 | 596,0 1627 | 596,16 1628 | 597,0 1629 | 597,3 1630 | 598,0 1631 | 598,4 1632 | 598,5 1633 | 599,0 1634 | 599,14 1635 | 0,4 1636 | 0,9 1637 | 0,10 1638 | 1,0 1639 | 1,1 1640 | 2,6 1641 | 2,3 1642 | 2,25 1643 | 3,0 1644 | 3,1 1645 | 3,17 1646 | 4,0 1647 | 4,10 1648 | 5,7 1649 | 5,12 1650 | 5,11 1651 | 6,0 1652 | 6,7 1653 | 6,12 1654 | 7,6 1655 | 7,3 1656 | 8,0 1657 | 8,7 1658 | 8,1 1659 | 9,0 1660 | 9,7 1661 | 9,18 1662 | 10,0 1663 | 10,5 1664 | 10,6 1665 | 11,0 1666 | 11,18 1667 | 12,0 1668 | 12,7 1669 | 12,1 1670 | 13,0 1671 | 13,14 1672 | 14,0 1673 | 14,6 1674 | 14,3 1675 | 15,0 1676 | 15,18 1677 | 15,3 1678 | 16,0 1679 | 16,6 1680 | 16,10 1681 | 17,4 1682 | 17,11 1683 | 18,0 1684 | 18,1 1685 | 18,12 1686 | 19,0 1687 | 19,18 1688 | 19,10 1689 | 20,0 1690 | 20,4 1691 | 20,8 1692 | 20,11 1693 | 21,0 1694 | 21,2 1695 | 21,18 1696 | 22,4 1697 | 22,8 1698 | 23,0 1699 | 23,1 1700 | 24,0 1701 | 24,16 1702 | 0,6 1703 | 0,3 1704 | 0,25 1705 | 1,0 1706 | 2,0 1707 | 2,1 1708 | 2,2 1709 | 3,1 1710 | 3,5 1711 | 3,25 1712 | 4,0 1713 | 4,7 1714 | 5,0 1715 | 5,1 1716 | 5,9 1717 | 5,10 1718 | 6,4 1719 | 6,12 1720 | 6,3 1721 | 6,11 1722 | 7,0 1723 | 7,1 1724 | 8,0 1725 | 8,7 1726 | 8,1 1727 | 8,3 1728 | 9,8 1729 | 9,5 1730 | 9,6 1731 | 10,0 1732 | 10,17 1733 | 11,0 1734 | 11,14 1735 | 12,0 1736 | 12,4 1737 | 12,10 1738 | 13,0 1739 | 13,12 1740 | 14,0 1741 | 14,7 1742 | 14,12 1743 | 15,0 1744 | 15,3 1745 | 16,0 1746 | 16,6 1747 | 16,3 1748 | 17,0 1749 | 17,7 1750 | 17,4 1751 | 17,10 1752 | 17,11 1753 | 18,0 1754 | 18,7 1755 | 18,13 1756 | 19,7 1757 | 20,0 1758 | 20,5 1759 | 20,6 1760 | 21,0 1761 | 22,0 1762 | 22,7 1763 | 22,3 1764 | 23,0 1765 | 24,7 1766 | 24,1 1767 | 25,0 1768 | 25,5 1769 | 25,6 1770 | 25,3 1771 | 26,0 1772 | 26,1 1773 | 27,0 1774 | 27,4 1775 | 27,8 1776 | 27,6 1777 | 27,3 1778 | 28,0 1779 | 28,10 1780 | 29,0 1781 | 29,7 1782 | 29,1 1783 | 30,0 1784 | 30,2 1785 | 31,0 1786 | 31,7 1787 | 31,6 1788 | 32,0 1789 | 32,10 1790 | 33,0 1791 | 33,5 1792 | 33,6 1793 | 33,3 1794 | 34,0 1795 | 34,12 1796 | 34,13 1797 | 34,22 1798 | 35,12 1799 | 35,13 1800 | 35,11 1801 | 36,0 1802 | 36,18 1803 | 37,8 1804 | 37,5 1805 | 37,6 1806 | 38,13 1807 | 38,11 1808 | 39,12 1809 | 39,13 1810 | 39,22 1811 | 40,4 1812 | 40,8 1813 | 40,11 1814 | 41,4 1815 | 41,6 1816 | 41,3 1817 | 42,20 1818 | 42,13 1819 | 43,0 1820 | 43,18 1821 | 44,0 1822 | 44,14 1823 | 45,0 1824 | 45,18 1825 | 46,0 1826 | 46,11 1827 | 47,7 1828 | 48,0 1829 | 48,7 1830 | 48,14 1831 | 49,0 1832 | 49,6 1833 | 49,3 1834 | 50,6 1835 | 50,20 1836 | 51,7 1837 | 51,4 1838 | 51,12 1839 | 51,11 1840 | 52,27 1841 | 53,0 1842 | 53,18 1843 | 53,11 1844 | 54,5 1845 | 54,3 1846 | 54,25 1847 | 55,4 1848 | 55,8 1849 | 55,11 1850 | 56,0 1851 | 56,18 1852 | 57,0 1853 | 57,18 1854 | 58,0 1855 | 58,1 1856 | 58,10 1857 | 59,0 1858 | 59,9 1859 | 59,10 1860 | 59,11 1861 | 60,0 1862 | 60,1 1863 | 60,2 1864 | 61,0 1865 | 61,14 1866 | 62,0 1867 | 62,9 1868 | 62,10 1869 | 63,7 1870 | 63,1 1871 | 63,10 1872 | 64,0 1873 | 64,14 1874 | 65,7 1875 | 65,10 1876 | 66,0 1877 | 66,6 1878 | 66,3 1879 | 67,12 1880 | 67,13 1881 | 68,0 1882 | 68,9 1883 | 69,0 1884 | 69,1 1885 | 70,0 1886 | 70,9 1887 | 70,10 1888 | 71,0 1889 | 71,1 1890 | 71,6 1891 | 71,16 1892 | 72,27 1893 | 72,10 1894 | 73,0 1895 | 73,6 1896 | 73,3 1897 | 74,7 1898 | 74,3 1899 | 75,5 1900 | 75,6 1901 | 76,0 1902 | 76,7 1903 | 77,7 1904 | 77,5 1905 | 77,19 1906 | 78,0 1907 | 78,14 1908 | 78,13 1909 | 79,0 1910 | 80,12 1911 | 80,13 1912 | 80,11 1913 | 81,7 1914 | 81,1 1915 | 81,14 1916 | 81,24 1917 | 82,0 1918 | 83,0 1919 | 83,3 1920 | 84,4 1921 | 84,13 1922 | 84,11 1923 | 85,0 1924 | 85,4 1925 | 85,8 1926 | 86,7 1927 | 86,12 1928 | 86,11 1929 | 87,0 1930 | 87,14 1931 | 87,26 1932 | 88,0 1933 | 88,7 1934 | 88,1 1935 | 88,18 1936 | 89,0 1937 | 89,1 1938 | 89,19 1939 | 90,7 1940 | 90,1 1941 | 91,0 1942 | 92,0 1943 | 92,7 1944 | 92,1 1945 | 92,3 1946 | 93,0 1947 | 93,5 1948 | 93,6 1949 | 94,0 1950 | 94,6 1951 | 94,3 1952 | 95,8 1953 | 95,6 1954 | 95,3 1955 | 96,0 1956 | 96,1 1957 | 97,0 1958 | 97,1 1959 | 98,0 1960 | 98,1 1961 | 98,10 1962 | 99,5 1963 | 99,20 1964 | 99,13 1965 | 100,0 1966 | 100,1 1967 | 100,19 1968 | 101,7 1969 | 101,13 1970 | 101,11 1971 | 102,0 1972 | 102,7 1973 | 102,1 1974 | 103,0 1975 | 103,8 1976 | 103,5 1977 | 103,6 1978 | 104,0 1979 | 104,14 1980 | 104,24 1981 | 105,0 1982 | 105,7 1983 | 105,14 1984 | 105,11 1985 | 106,20 1986 | 107,0 1987 | 107,3 1988 | 108,7 1989 | 108,1 1990 | 109,5 1991 | 109,6 1992 | 109,15 1993 | 110,0 1994 | 110,1 1995 | 110,18 1996 | 110,9 1997 | 111,0 1998 | 111,1 1999 | 111,17 2000 | 112,0 2001 | 112,14 2002 | 113,0 2003 | 114,4 2004 | 114,11 2005 | 115,7 2006 | 115,12 2007 | 115,11 2008 | 116,7 2009 | 116,13 2010 | 117,7 2011 | 117,1 2012 | 117,12 2013 | 117,19 2014 | 117,13 2015 | 118,4 2016 | 118,8 2017 | 118,11 2018 | 118,15 2019 | 119,0 2020 | 119,4 2021 | 119,8 2022 | 119,20 2023 | 120,0 2024 | 120,5 2025 | 120,6 2026 | 121,0 2027 | 121,10 2028 | 122,5 2029 | 122,20 2030 | 123,0 2031 | 123,3 2032 | 124,4 2033 | 124,8 2034 | 124,6 2035 | 124,11 2036 | 125,0 2037 | 125,4 2038 | 125,6 2039 | 125,11 2040 | 126,0 2041 | 126,4 2042 | 126,5 2043 | 126,3 2044 | 127,4 2045 | 127,13 2046 | 127,11 2047 | 128,0 2048 | 128,4 2049 | 128,6 2050 | 129,8 2051 | 129,15 2052 | 130,0 2053 | 130,1 2054 | 131,0 2055 | 132,0 2056 | 132,14 2057 | 133,0 2058 | 133,1 2059 | 133,9 2060 | 134,0 2061 | 135,0 2062 | 135,1 2063 | 135,2 2064 | 136,27 2065 | 137,27 2066 | 138,0 2067 | 138,5 2068 | 138,20 2069 | 139,0 2070 | 139,5 2071 | 139,3 2072 | 140,0 2073 | 140,6 2074 | 140,11 2075 | 141,0 2076 | 141,6 2077 | 141,11 2078 | 142,0 2079 | 142,14 2080 | 142,18 2081 | 142,26 2082 | 143,0 2083 | 143,3 2084 | 143,23 2085 | 144,0 2086 | 144,7 2087 | 144,5 2088 | 144,3 2089 | 145,7 2090 | 146,0 2091 | 146,10 2092 | 147,0 2093 | 147,6 2094 | 147,10 2095 | 148,7 2096 | 149,7 2097 | 149,12 2098 | 149,13 2099 | 149,11 2100 | 150,0 2101 | 150,3 2102 | 150,23 2103 | 151,0 2104 | 151,23 2105 | 151,13 2106 | 151,11 2107 | 152,4 2108 | 152,8 2109 | 152,5 2110 | 153,4 2111 | 153,8 2112 | 153,11 2113 | 154,7 2114 | 155,0 2115 | 155,18 2116 | 155,9 2117 | 156,7 2118 | 157,8 2119 | 157,5 2120 | 158,0 2121 | 158,17 2122 | 159,12 2123 | 159,13 2124 | 160,0 2125 | 160,23 2126 | 160,11 2127 | 161,0 2128 | 161,6 2129 | 161,18 2130 | 162,0 2131 | 162,8 2132 | 163,0 2133 | 163,1 2134 | 163,3 2135 | 164,0 2136 | 164,18 2137 | 165,7 2138 | 166,0 2139 | 166,1 2140 | 167,4 2141 | 167,23 2142 | 168,0 2143 | 169,0 2144 | 169,1 2145 | 169,13 2146 | 170,0 2147 | 170,1 2148 | 171,0 2149 | 171,1 2150 | 172,0 2151 | 172,4 2152 | 172,8 2153 | 173,4 2154 | 173,5 2155 | 173,3 2156 | 174,0 2157 | 175,0 2158 | 175,1 2159 | 175,8 2160 | 176,0 2161 | 176,4 2162 | 176,21 2163 | 176,22 2164 | 177,0 2165 | 177,4 2166 | 177,8 2167 | 178,0 2168 | 178,5 2169 | 178,6 2170 | 178,20 2171 | 179,4 2172 | 179,6 2173 | 179,11 2174 | 180,0 2175 | 180,2 2176 | 181,0 2177 | 181,1 2178 | 181,19 2179 | 181,3 2180 | 182,0 2181 | 182,7 2182 | 183,0 2183 | 183,8 2184 | 183,11 2185 | 183,15 2186 | 184,4 2187 | 184,8 2188 | 184,13 2189 | 184,11 2190 | 185,0 2191 | 185,5 2192 | 185,6 2193 | 186,4 2194 | 186,5 2195 | 186,6 2196 | 187,4 2197 | 187,8 2198 | 187,6 2199 | 187,11 2200 | 188,4 2201 | 188,8 2202 | 188,11 2203 | 189,0 2204 | 189,14 2205 | 190,0 2206 | 190,5 2207 | 190,3 2208 | 191,0 2209 | 191,6 2210 | 191,17 2211 | 192,0 2212 | 192,4 2213 | 192,3 2214 | 193,0 2215 | 193,7 2216 | 193,10 2217 | 194,4 2218 | 194,3 2219 | 195,0 2220 | 195,4 2221 | 195,3 2222 | 196,0 2223 | 196,20 2224 | 197,8 2225 | 197,6 2226 | 197,11 2227 | 198,8 2228 | 198,15 2229 | 199,0 2230 | 199,1 2231 | 199,17 2232 | 199,10 2233 | 200,0 2234 | 200,12 2235 | 200,13 2236 | 201,0 2237 | 201,9 2238 | 201,10 2239 | 202,0 2240 | 202,9 2241 | 202,10 2242 | 203,0 2243 | 203,18 2244 | 203,26 2245 | 204,0 2246 | 204,18 2247 | 204,26 2248 | 205,0 2249 | 205,1 2250 | 205,18 2251 | 205,9 2252 | 206,0 2253 | 206,16 2254 | 207,0 2255 | 208,0 2256 | 208,14 2257 | 209,0 2258 | 210,8 2259 | 210,5 2260 | 210,20 2261 | 211,0 2262 | 211,7 2263 | 211,1 2264 | 212,8 2265 | 212,5 2266 | 212,3 2267 | 213,0 2268 | 213,1 2269 | 214,0 2270 | 214,1 2271 | 214,16 2272 | 215,7 2273 | 215,12 2274 | 215,14 2275 | 215,13 2276 | 215,11 2277 | 216,0 2278 | 216,5 2279 | 216,6 2280 | 217,0 2281 | 218,7 2282 | 218,1 2283 | 218,22 2284 | 219,0 2285 | 219,1 2286 | 219,6 2287 | 219,13 2288 | 220,0 2289 | 220,7 2290 | 220,14 2291 | 221,0 2292 | 221,7 2293 | 221,14 2294 | 222,0 2295 | 222,23 2296 | 222,11 2297 | 223,0 2298 | 223,18 2299 | 224,0 2300 | 224,14 2301 | 225,0 2302 | 226,0 2303 | 226,5 2304 | 227,0 2305 | 227,1 2306 | 228,0 2307 | 228,6 2308 | 228,10 2309 | 229,4 2310 | 229,8 2311 | 229,11 2312 | 230,0 2313 | 230,6 2314 | 230,2 2315 | 230,3 2316 | 231,0 2317 | 231,1 2318 | 232,0 2319 | 232,1 2320 | 233,0 2321 | 233,7 2322 | 233,13 2323 | 234,0 2324 | 235,8 2325 | 235,12 2326 | 235,6 2327 | 235,13 2328 | 236,0 2329 | 236,18 2330 | 237,4 2331 | 237,20 2332 | 237,3 2333 | 238,4 2334 | 238,20 2335 | 238,3 2336 | 239,0 2337 | 239,10 2338 | 239,26 2339 | 240,4 2340 | 240,8 2341 | 240,12 2342 | 241,0 2343 | 241,18 2344 | 242,0 2345 | 242,4 2346 | 242,6 2347 | 242,3 2348 | 243,0 2349 | 243,4 2350 | 243,6 2351 | 243,3 2352 | 244,0 2353 | 244,9 2354 | 245,0 2355 | 245,7 2356 | 245,1 2357 | 245,9 2358 | 246,0 2359 | 246,6 2360 | 246,3 2361 | 247,0 2362 | 247,14 2363 | 248,0 2364 | 248,1 2365 | 249,0 2366 | 249,12 2367 | 250,0 2368 | 250,1 2369 | 251,5 2370 | 251,20 2371 | 251,13 2372 | 252,0 2373 | 252,7 2374 | 253,0 2375 | 253,2 2376 | 253,18 2377 | 253,3 2378 | 254,0 2379 | 254,9 2380 | 254,10 2381 | 255,0 2382 | 255,14 2383 | 256,0 2384 | 256,5 2385 | 256,6 2386 | 257,0 2387 | 257,4 2388 | 257,9 2389 | 258,0 2390 | 259,0 2391 | 259,1 2392 | 259,19 2393 | 260,0 2394 | 260,1 2395 | 260,5 2396 | 261,0 2397 | 261,18 2398 | 262,0 2399 | 263,0 2400 | 263,7 2401 | 263,14 2402 | 264,0 2403 | 265,0 2404 | 265,1 2405 | 266,0 2406 | 266,17 2407 | 267,0 2408 | 268,0 2409 | 268,2 2410 | 268,18 2411 | 268,3 2412 | 269,0 2413 | 270,27 2414 | 271,0 2415 | 271,1 2416 | 271,9 2417 | 271,10 2418 | 272,0 2419 | 272,4 2420 | 272,6 2421 | 273,0 2422 | 274,7 2423 | 274,4 2424 | 274,3 2425 | 275,0 2426 | 275,5 2427 | 275,6 2428 | 275,3 2429 | 276,0 2430 | 276,7 2431 | 277,7 2432 | 277,12 2433 | 277,11 2434 | 278,0 2435 | 278,18 2436 | 278,9 2437 | 279,0 2438 | 279,7 2439 | 279,1 2440 | 279,2 2441 | 280,0 2442 | 280,16 2443 | 280,18 2444 | 281,1 2445 | 281,10 2446 | 282,0 2447 | 282,6 2448 | 282,2 2449 | 282,9 2450 | 283,0 2451 | 283,4 2452 | 283,1 2453 | 283,23 2454 | 284,4 2455 | 284,8 2456 | 284,11 2457 | 285,7 2458 | 285,13 2459 | 286,6 2460 | 286,3 2461 | 287,0 2462 | 287,1 2463 | 287,12 2464 | 288,5 2465 | 288,6 2466 | 288,3 2467 | 289,0 2468 | 289,23 2469 | 289,11 2470 | 290,1 2471 | 290,13 2472 | 291,0 2473 | 291,7 2474 | 292,5 2475 | 292,6 2476 | 292,3 2477 | 293,5 2478 | 293,6 2479 | 293,3 2480 | 294,0 2481 | 294,7 2482 | 294,2 2483 | 294,14 2484 | 295,0 2485 | 295,7 2486 | 296,0 2487 | 296,9 2488 | 297,7 2489 | 297,4 2490 | 297,8 2491 | 298,0 2492 | 298,1 2493 | 299,0 2494 | 299,1 2495 | 299,18 2496 | 299,9 2497 | 300,8 2498 | 300,20 2499 | 301,0 2500 | 301,1 2501 | 301,9 2502 | 302,27 2503 | 303,0 2504 | 303,20 2505 | 303,13 2506 | 304,0 2507 | 304,6 2508 | 304,10 2509 | 305,4 2510 | 305,13 2511 | 305,11 2512 | 306,0 2513 | 306,7 2514 | 307,0 2515 | 307,27 2516 | 308,7 2517 | 308,12 2518 | 308,11 2519 | 309,0 2520 | 310,7 2521 | 310,19 2522 | 311,0 2523 | 311,3 2524 | 312,7 2525 | 312,4 2526 | 312,12 2527 | 312,11 2528 | 313,0 2529 | 313,4 2530 | 313,6 2531 | 313,3 2532 | 314,0 2533 | 314,4 2534 | 314,6 2535 | 314,3 2536 | 315,0 2537 | 315,17 2538 | 316,0 2539 | 316,6 2540 | 317,0 2541 | 317,7 2542 | 317,2 2543 | 318,4 2544 | 318,8 2545 | 318,11 2546 | 319,0 2547 | 319,1 2548 | 319,9 2549 | 319,10 2550 | 319,23 2551 | 320,5 2552 | 320,6 2553 | 321,0 2554 | 321,7 2555 | 321,14 2556 | 322,27 2557 | 322,16 2558 | 322,18 2559 | 323,7 2560 | 323,4 2561 | 323,1 2562 | 324,0 2563 | 325,0 2564 | 325,1 2565 | 325,5 2566 | 326,0 2567 | 326,7 2568 | 326,4 2569 | 326,6 2570 | 326,20 2571 | 326,3 2572 | 327,7 2573 | 327,1 2574 | 328,0 2575 | 328,4 2576 | 328,8 2577 | 328,26 2578 | 329,0 2579 | 330,0 2580 | 331,0 2581 | 332,0 2582 | 332,5 2583 | 332,6 2584 | 333,0 2585 | 333,7 2586 | 333,1 2587 | 333,13 2588 | 334,5 2589 | 334,20 2590 | 335,0 2591 | 335,1 2592 | 336,0 2593 | 336,14 2594 | 337,0 2595 | 337,1 2596 | 337,10 2597 | 338,0 2598 | 338,1 2599 | 339,7 2600 | 340,0 2601 | 340,1 2602 | 340,2 2603 | 341,0 2604 | 342,0 2605 | 342,1 2606 | 342,21 2607 | 342,22 2608 | 343,0 2609 | 344,0 2610 | 344,18 2611 | 344,9 2612 | 345,0 2613 | 345,7 2614 | 345,1 2615 | 346,0 2616 | 346,9 2617 | 346,10 2618 | 347,0 2619 | 347,18 2620 | 347,9 2621 | 348,0 2622 | 349,0 2623 | 349,1 2624 | 349,16 2625 | -------------------------------------------------------------------------------- /backend/spider/database_1000/userdict_1000.txt: -------------------------------------------------------------------------------- 1 | 肖申克的救赎 nm 2 | 霸王别姬 nm 3 | 阿甘正传 nm 4 | 泰坦尼克号 nm 5 | 这个杀手不太冷 nm 6 | 千与千寻 nm 7 | 美丽人生 nm 8 | 星际穿越 nm 9 | 盗梦空间 nm 10 | 辛德勒的名单 nm 11 | 楚门的世界 nm 12 | 忠犬八公的故事 nm 13 | 海上钢琴师 nm 14 | 三傻大闹宝莱坞 nm 15 | 放牛班的春天 nm 16 | 机器人总动员 nm 17 | 疯狂动物城 nm 18 | 无间道 nm 19 | 控方证人 nm 20 | 大话西游之大圣娶亲 nm 21 | 熔炉 nm 22 | 教父 nm 23 | 触不可及 nm 24 | 当幸福来敲门 nm 25 | 寻梦环游记 nm 26 | 末代皇帝 nm 27 | 龙猫 nm 28 | 怦然心动 nm 29 | 活着 nm 30 | 哈利·波特与魔法石 nm 31 | 蝙蝠侠:黑暗骑士 nm 32 | 指环王3:王者无敌 nm 33 | 我不是药神 nm 34 | 乱世佳人 nm 35 | 飞屋环游记 nm 36 | 素媛 nm 37 | 哈尔的移动城堡 nm 38 | 十二怒汉 nm 39 | 何以为家 nm 40 | 让子弹飞 nm 41 | 摔跤吧!爸爸 nm 42 | 猫鼠游戏 nm 43 | 天空之城 nm 44 | 鬼子来了 nm 45 | 少年派的奇幻漂流 nm 46 | 海蒂和爷爷 nm 47 | 钢琴家 nm 48 | 大话西游之月光宝盒 nm 49 | 指环王2:双塔奇兵 nm 50 | 闻香识女人 nm 51 | 死亡诗社 nm 52 | 绿皮书 nm 53 | 罗马假日 nm 54 | 大闹天宫 nm 55 | 天堂电影院 nm 56 | 指环王1:护戒使者 nm 57 | 黑客帝国 nm 58 | 教父2 nm 59 | 狮子王 nm 60 | 辩护人 nm 61 | 饮食男女 nm 62 | 搏击俱乐部 nm 63 | 本杰明·巴顿奇事 nm 64 | 美丽心灵 nm 65 | 穿条纹睡衣的男孩 nm 66 | 窃听风暴 nm 67 | 情书 nm 68 | 两杆大烟枪 nm 69 | 西西里的美丽传说 nm 70 | 看不见的客人 nm 71 | 音乐之声 nm 72 | 阿凡达 nm 73 | 哈利·波特与死亡圣器 nm 74 | 拯救大兵瑞恩 nm 75 | 飞越疯人院 nm 76 | 小鞋子 nm 77 | 沉默的羔羊 nm 78 | 布达佩斯大饭店 nm 79 | 功夫 nm 80 | 禁闭岛 nm 81 | 蝴蝶效应 nm 82 | 致命魔术 nm 83 | 哈利·波特与阿兹卡班的囚徒 nm 84 | 心灵捕手 nm 85 | 超脱 nm 86 | 低俗小说 nm 87 | 海豚湾 nm 88 | 摩登时代 nm 89 | 春光乍泄 nm 90 | 美国往事 nm 91 | 喜剧之王 nm 92 | 致命ID nm 93 | 杀人回忆 nm 94 | 七宗罪 nm 95 | 红辣椒 nm 96 | 加勒比海盗 nm 97 | 哈利·波特与密室 nm 98 | 一一 nm 99 | 狩猎 nm 100 | 唐伯虎点秋香 nm 101 | 7号房的礼物 nm 102 | 被嫌弃的松子的一生 nm 103 | 蝙蝠侠:黑暗骑士崛起 nm 104 | 请以你的名字呼唤我 nm 105 | 爱在黎明破晓前 nm 106 | 断背山 nm 107 | 剪刀手爱德华 nm 108 | 入殓师 nm 109 | 第六感 nm 110 | 重庆森林 nm 111 | 勇敢的心 nm 112 | 超能陆战队 nm 113 | 甜蜜蜜 nm 114 | 幽灵公主 nm 115 | 爱在日落黄昏时 nm 116 | 菊次郎的夏天 nm 117 | 借东西的小人阿莉埃蒂 nm 118 | 消失的爱人 nm 119 | 寄生虫 nm 120 | 阳光灿烂的日子 nm 121 | 天使爱美丽 nm 122 | 完美的世界 nm 123 | 小森林 夏秋篇 nm 124 | 倩女幽魂 nm 125 | 无人知晓 nm 126 | 时空恋旅人 nm 127 | 侧耳倾听 nm 128 | 未麻的部屋 nm 129 | 哈利·波特与火焰杯 nm 130 | 幸福终点站 nm 131 | 驯龙高手 nm 132 | 小森林 冬春篇 nm 133 | 一个叫欧维的男人决定去死 nm 134 | 教父3 nm 135 | 怪兽电力公司 nm 136 | 玩具总动员3 nm 137 | 傲慢与偏见 nm 138 | 萤火之森 nm 139 | 新世界 nm 140 | 釜山行 nm 141 | 被解救的姜戈 nm 142 | 神偷奶爸 nm 143 | 茶馆 nm 144 | 告白 nm 145 | 玛丽和马克思 nm 146 | 哪吒闹海 nm 147 | 大鱼 nm 148 | 色,戒 nm 149 | 九品芝麻官 nm 150 | 喜宴 nm 151 | 模仿游戏 nm 152 | 头号玩家 nm 153 | 射雕英雄传之东成西就 nm 154 | 花样年华 nm 155 | 我是山姆 nm 156 | 头脑特工队 nm 157 | 阳光姐妹淘 nm 158 | 七武士 nm 159 | 血战钢锯岭 nm 160 | 恐怖直播 nm 161 | 惊魂记 nm 162 | 黑客帝国3:矩阵革命 nm 163 | 你的名字。 nm 164 | 电锯惊魂 nm 165 | 三块广告牌 nm 166 | 达拉斯买家俱乐部 nm 167 | 疯狂原始人 nm 168 | 心迷宫 nm 169 | 谍影重重3 nm 170 | 英雄本色 nm 171 | 上帝之城 nm 172 | 风之谷 nm 173 | 纵横四海 nm 174 | 卢旺达饭店 nm 175 | 海街日记 nm 176 | 爱在午夜降临前 nm 177 | 绿里奇迹 nm 178 | 小丑 nm 179 | 记忆碎片 nm 180 | 疯狂的石头 nm 181 | 背靠背,脸对脸 nm 182 | 雨中曲 nm 183 | 心灵奇旅 nm 184 | 2001太空漫游 nm 185 | 岁月神偷 nm 186 | 忠犬八公物语 nm 187 | 无间道2 nm 188 | 荒蛮故事 nm 189 | 小偷家族 nm 190 | 无敌破坏王 nm 191 | 爆裂鼓手 nm 192 | 冰川时代 nm 193 | 恐怖游轮 nm 194 | 贫民窟的百万富翁 nm 195 | 牯岭街少年杀人事件 nm 196 | 东邪西毒 nm 197 | 魔女宅急便 nm 198 | 遗愿清单 nm 199 | 东京教父 nm 200 | 大佛普拉斯 nm 201 | 你看起来好像很好吃 nm 202 | 可可西里 nm 203 | 真爱至上 nm 204 | 黑天鹅 nm 205 | 城市之光 nm 206 | 源代码 nm 207 | 海边的曼彻斯特 nm 208 | 雨人 nm 209 | 波西米亚狂想曲 nm 210 | 初恋这件小事 nm 211 | 恋恋笔记本 nm 212 | 青蛇 nm 213 | 人工智能 nm 214 | 末路狂花 nm 215 | 虎口脱险 nm 216 | 终结者2:审判日 nm 217 | 疯狂的麦克斯4:狂暴之路 nm 218 | 罗生门 nm 219 | 新龙门客栈 nm 220 | 无耻混蛋 nm 221 | 千钧一发 nm 222 | 崖上的波妞 nm 223 | 芙蓉镇 nm 224 | 萤火虫之墓 nm 225 | 花束般的恋爱 nm 226 | 彗星来的那一夜 nm 227 | 爱乐之城 nm 228 | 奇迹男孩 nm 229 | 黑客帝国2:重装上阵 nm 230 | 二十二 nm 231 | 哈利·波特与死亡圣器 nm 232 | 血钻 nm 233 | 战争之王 nm 234 | 火星救援 nm 235 | 步履不停 nm 236 | 房间 nm 237 | 魂断蓝桥 nm 238 | 千年女优 nm 239 | 谍影重重2 nm 240 | 白日梦想家 nm 241 | 哈利·波特与凤凰社 nm 242 | 弱点 nm 243 | 蜘蛛侠:平行宇宙 nm 244 | 高山下的花环 nm 245 | 谍影重重 nm 246 | 阿飞正传 nm 247 | 朗读者 nm 248 | 再次出发之纽约遇见你 nm 249 | 燃情岁月 nm 250 | 大红灯笼高高挂 nm 251 | 蒂姆罗宾斯 nr 252 | TimRobbins nr 253 | 摩根弗里曼 nr 254 | MorganFreeman nr 255 | 鲍勃冈顿 nr 256 | BobGunton nr 257 | 威廉姆赛德勒 nr 258 | WilliamSadler nr 259 | 克兰西布朗 nr 260 | ClancyBrown nr 261 | 张国荣 nr 262 | LeslieCheung nr 263 | 张丰毅 nr 264 | FengyiZhang nr 265 | 巩俐 nr 266 | LiGong nr 267 | 葛优 nr 268 | YouGe nr 269 | 英达 nr 270 | DaYing nr 271 | 汤姆汉克斯 nr 272 | TomHanks nr 273 | 罗宾怀特 nr 274 | RobinWright nr 275 | 加里西尼斯 nr 276 | GarySinise nr 277 | 麦凯尔泰威廉逊 nr 278 | MykeltiWilliamson nr 279 | 莎莉菲尔德 nr 280 | SallyField nr 281 | 莱昂纳多迪卡普里奥 nr 282 | LeonardoDiCaprio nr 283 | 凯特温丝莱特 nr 284 | KateWinslet nr 285 | 比利赞恩 nr 286 | BillyZane nr 287 | 凯西贝茨 nr 288 | KathyBates nr 289 | 弗兰西丝费舍 nr 290 | FrancesFisher nr 291 | 让雷诺 nr 292 | JeanReno nr 293 | 娜塔莉波特曼 nr 294 | NataliePortman nr 295 | 加里奥德曼 nr 296 | GaryOldman nr 297 | 丹尼爱罗 nr 298 | DannyAiello nr 299 | 彼得阿佩尔 nr 300 | PeterAppel nr 301 | 柊瑠美 nr 302 | RumiHiiragi nr 303 | 入野自由 nr 304 | MiyuIrino nr 305 | 夏木真理 nr 306 | MariNatsuki nr 307 | 菅原文太 nr 308 | BuntaSugawara nr 309 | 中村彰男 nr 310 | AkioNakamura nr 311 | 罗伯托贝尼尼 nr 312 | RobertoBenigni nr 313 | 尼可莱塔布拉斯基 nr 314 | NicolettaBraschi nr 315 | 乔治坎塔里尼 nr 316 | GiorgioCantarini nr 317 | 朱斯蒂诺杜拉诺 nr 318 | GiustinoDurano nr 319 | 赛尔乔比尼布斯特里克 nr 320 | SergioBiniBustric nr 321 | 马修麦康纳 nr 322 | MatthewMcConaughey nr 323 | 安妮海瑟薇 nr 324 | AnneHathaway nr 325 | 杰西卡查斯坦 nr 326 | JessicaChastain nr 327 | 麦肯吉弗依 nr 328 | MackenzieFoy nr 329 | 卡西阿弗莱克 nr 330 | CaseyAffleck nr 331 | 莱昂纳多迪卡普里奥 nr 332 | LeonardoDiCaprio nr 333 | 约瑟夫高登-莱维特 nr 334 | JosephGordon-Levitt nr 335 | 艾利奥特佩吉 nr 336 | ElliotPage nr 337 | 汤姆哈迪 nr 338 | TomHardy nr 339 | 渡边谦 nr 340 | KenWatanabe nr 341 | 连姆尼森 nr 342 | LiamNeeson nr 343 | 本金斯利 nr 344 | BenKingsley nr 345 | 拉尔夫费因斯 nr 346 | RalphFiennes nr 347 | 卡罗琳古多尔 nr 348 | CarolineGoodall nr 349 | 乔纳森萨加尔 nr 350 | JonathanSagall nr 351 | 金凯瑞 nr 352 | JimCarrey nr 353 | 劳拉琳妮 nr 354 | LauraLinney nr 355 | 艾德哈里斯 nr 356 | EdHarris nr 357 | 诺亚艾默里奇 nr 358 | NoahEmmerich nr 359 | 娜塔莎麦克艾霍恩 nr 360 | NataschaMcElhone nr 361 | 理查基尔 nr 362 | RichardGere nr 363 | 莎拉罗默尔 nr 364 | SarahRoemer nr 365 | 琼艾伦 nr 366 | JoanAllen nr 367 | 罗比萨布莱特 nr 368 | RobbieSublett nr 369 | 艾瑞克阿瓦利 nr 370 | ErickAvari nr 371 | 蒂姆罗斯 nr 372 | TimRoth nr 373 | 普路特泰勒文斯 nr 374 | PruittTaylorVince nr 375 | 比尔努恩 nr 376 | BillNunn nr 377 | 克兰伦斯威廉姆斯三世 nr 378 | ClarenceWilliamsIII nr 379 | 梅兰尼蒂埃里 nr 380 | MélanieThierry nr 381 | 阿米尔汗 nr 382 | AamirKhan nr 383 | 卡琳娜卡普尔 nr 384 | KareenaKapoor nr 385 | 马达范 nr 386 | R.Madhavan nr 387 | 沙尔曼乔希 nr 388 | SharmanJoshi nr 389 | 奥米瓦依达 nr 390 | OmiVaidya nr 391 | 让-巴蒂斯特莫尼耶 nr 392 | Jean-BaptisteMaunier nr 393 | 热拉尔朱尼奥 nr 394 | GérardJugnot nr 395 | 弗朗索瓦贝莱昂 nr 396 | FrançoisBerléand nr 397 | 凯德麦拉德 nr 398 | KadMerad nr 399 | 让-保罗博奈雷 nr 400 | Jean-PaulBonnaire nr 401 | 本贝尔特 nr 402 | BenBurtt nr 403 | 艾丽莎奈特 nr 404 | ElissaKnight nr 405 | 杰夫格尔林 nr 406 | JeffGarlin nr 407 | 佛莱德威拉特 nr 408 | FredWillard nr 409 | 西格妮韦弗 nr 410 | SigourneyWeaver nr 411 | 金妮弗古德温 nr 412 | GinniferGoodwin nr 413 | 杰森贝特曼 nr 414 | JasonBateman nr 415 | 伊德里斯艾尔巴 nr 416 | IdrisElba nr 417 | 珍妮斯蕾特 nr 418 | JennySlate nr 419 | 刘德华 nr 420 | AndyLau nr 421 | 梁朝伟 nr 422 | TonyLeungChiuWai nr 423 | 黄秋生 nr 424 | AnthonyWongChau-Sang nr 425 | 曾志伟 nr 426 | EricTsang nr 427 | 泰隆鲍华 nr 428 | TyronePower nr 429 | 玛琳黛德丽 nr 430 | MarleneDietrich nr 431 | 查尔斯劳顿 nr 432 | CharlesLaughton nr 433 | 埃尔莎兰彻斯特 nr 434 | ElsaLanchester nr 435 | 约翰威廉姆斯 nr 436 | JohnWilliams nr 437 | 周星驰 nr 438 | StephenChow nr 439 | 吴孟达 nr 440 | ManTatNg nr 441 | 朱茵 nr 442 | AthenaChu nr 443 | 蔡少芬 nr 444 | AdaChoi nr 445 | 蓝洁瑛 nr 446 | KitYingLam nr 447 | 孔刘 nr 448 | YooGong nr 449 | 郑有美 nr 450 | Yu-miJung nr 451 | 金贤秀 nr 452 | Hyun-suKim nr 453 | 郑仁絮 nr 454 | In-seoJeong nr 455 | 白承焕 nr 456 | Seung-HwanBaek nr 457 | 马龙白兰度 nr 458 | MarlonBrando nr 459 | 阿尔帕西诺 nr 460 | AlPacino nr 461 | 詹姆斯肯恩 nr 462 | JamesCaan nr 463 | 理查德卡斯特尔诺 nr 464 | RichardS.Castellano nr 465 | 罗伯特杜瓦尔 nr 466 | RobertDuvall nr 467 | 弗朗索瓦克鲁塞 nr 468 | FrançoisCluzet nr 469 | 奥玛希 nr 470 | OmarSy nr 471 | 安娜勒尼 nr 472 | AnneLeNy nr 473 | 奥德雷弗勒罗 nr 474 | AudreyFleurot nr 475 | 威尔史密斯 nr 476 | WillSmith nr 477 | 贾登史密斯 nr 478 | JadenSmith nr 479 | 坦迪牛顿 nr 480 | ThandiweNewton nr 481 | 布莱恩豪威 nr 482 | BrianHowe nr 483 | 詹姆斯凯伦 nr 484 | JamesKaren nr 485 | 阿德里安莫利纳 nr 486 | AdrianMolina nr 487 | 安东尼冈萨雷斯 nr 488 | AnthonyGonzalez nr 489 | 盖尔加西亚贝纳尔 nr 490 | GaelGarcíaBernal nr 491 | 本杰明布拉特 nr 492 | BenjaminBratt nr 493 | 阿兰娜乌巴赫 nr 494 | AlannaUbach nr 495 | 尊龙 nr 496 | JohnLone nr 497 | 陈冲 nr 498 | JoanChen nr 499 | 邬君梅 nr 500 | VivianWu nr 501 | 彼得奥图尔 nr 502 | PeterO'Toole nr 503 | 英若诚 nr 504 | RuochengYing nr 505 | 日高范子 nr 506 | NorikoHidaka nr 507 | 坂本千夏 nr 508 | ChikaSakamoto nr 509 | 糸井重里 nr 510 | ShigesatoItoi nr 511 | 岛本须美 nr 512 | SumiShimamoto nr 513 | 北林谷荣 nr 514 | TanieKitabayashi nr 515 | 玛德琳卡罗尔 nr 516 | MadelineCarroll nr 517 | 卡兰麦克奥利菲 nr 518 | CallanMcAuliffe nr 519 | 瑞贝卡德莫妮 nr 520 | RebeccaDeMornay nr 521 | 安东尼爱德华兹 nr 522 | AnthonyEdwards nr 523 | 约翰马奥尼 nr 524 | JohnMahoney nr 525 | 葛优 nr 526 | YouGe nr 527 | 巩俐 nr 528 | LiGong nr 529 | 姜武 nr 530 | WuJiang nr 531 | 牛犇 nr 532 | BenNiu nr 533 | 郭涛 nr 534 | TaoGuo nr 535 | 丹尼尔雷德克里夫 nr 536 | DanielRadcliffe nr 537 | 艾玛沃森 nr 538 | EmmaWatson nr 539 | 鲁伯特格林特 nr 540 | RupertGrint nr 541 | 艾伦瑞克曼 nr 542 | AlanRickman nr 543 | 玛吉史密斯 nr 544 | MaggieSmith nr 545 | 克里斯蒂安贝尔 nr 546 | ChristianBale nr 547 | 希斯莱杰 nr 548 | HeathLedger nr 549 | 艾伦艾克哈特 nr 550 | AaronEckhart nr 551 | 迈克尔凯恩 nr 552 | MichaelCaine nr 553 | 玛吉吉伦哈尔 nr 554 | MaggieGyllenhaal nr 555 | 伊利亚伍德 nr 556 | ElijahWood nr 557 | 西恩奥斯汀 nr 558 | SeanAstin nr 559 | 维果莫腾森 nr 560 | ViggoMortensen nr 561 | 奥兰多布鲁姆 nr 562 | OrlandoBloom nr 563 | 伊恩麦克莱恩 nr 564 | IanMcKellen nr 565 | 徐峥 nr 566 | ZhengXu nr 567 | 王传君 nr 568 | ChuanjunWang nr 569 | 周一围 nr 570 | YiweiZhou nr 571 | 谭卓 nr 572 | ZhuoTan nr 573 | 章宇 nr 574 | YuZhang nr 575 | 费雯丽 nr 576 | VivienLeigh nr 577 | 克拉克盖博 nr 578 | ClarkGable nr 579 | 奥利维娅德哈维兰 nr 580 | OliviadeHavilland nr 581 | 托马斯米切尔 nr 582 | ThomasMitchell nr 583 | 爱德华阿斯纳 nr 584 | EdwardAsner nr 585 | 克里斯托弗普卢默 nr 586 | ChristopherPlummer nr 587 | 乔丹长井 nr 588 | JordanNagai nr 589 | 鲍勃彼德森 nr 590 | BobPeterson nr 591 | 薛景求 nr 592 | Kyung-guSul nr 593 | 严志媛 nr 594 | Ji-wonUhm nr 595 | 李来 nr 596 | ReLee nr 597 | 金海淑 nr 598 | Hae-sukKim nr 599 | 金相镐 nr 600 | Sang-hoKim nr 601 | 倍赏千惠子 nr 602 | ChiekoBaishô nr 603 | 木村拓哉 nr 604 | TakuyaKimura nr 605 | 美轮明宏 nr 606 | AkihiroMiwa nr 607 | 我修院达也 nr 608 | TatsuyaGashûin nr 609 | 神木隆之介 nr 610 | RyûnosukeKamiki nr 611 | 亨利方达 nr 612 | HenryFonda nr 613 | 马丁鲍尔萨姆 nr 614 | MartinBalsam nr 615 | 约翰菲德勒 nr 616 | JohnFiedler nr 617 | 李科布 nr 618 | LeeJ.Cobb nr 619 | E.G.马绍尔 nr 620 | E.G.Marshall nr 621 | 赞恩阿尔拉菲亚 nr 622 | Zainal-Rafeea nr 623 | 约丹诺斯希费罗 nr 624 | YordanosShiferaw nr 625 | 博鲁瓦蒂夫特雷杰班科尔 nr 626 | BoluwatifeTreasureBankole nr 627 | 卡萨尔艾尔哈达德 nr 628 | KawsarAlHaddad nr 629 | 法迪尤瑟夫 nr 630 | FadiYousef nr 631 | 姜文 nr 632 | WenJiang nr 633 | 葛优 nr 634 | YouGe nr 635 | 周润发 nr 636 | Yun-FatChow nr 637 | 刘嘉玲 nr 638 | CarinaLau nr 639 | 陈坤 nr 640 | KunChen nr 641 | 阿米尔汗 nr 642 | AamirKhan nr 643 | 法缇玛萨那纱卡 nr 644 | FatimaSanaShaikh nr 645 | 桑亚玛荷塔 nr 646 | SanyaMalhotra nr 647 | 阿帕尔夏克提库拉那 nr 648 | AparshaktiKhurana nr 649 | 沙克希坦沃 nr 650 | SakshiTanwar nr 651 | 莱昂纳多迪卡普里奥 nr 652 | LeonardoDiCaprio nr 653 | 汤姆汉克斯 nr 654 | TomHanks nr 655 | 克里斯托弗沃肯 nr 656 | ChristopherWalken nr 657 | 马丁辛 nr 658 | MartinSheen nr 659 | 艾米亚当斯 nr 660 | AmyAdams nr 661 | 田中真弓 nr 662 | MayumiTanaka nr 663 | 横泽启子 nr 664 | KeikoYokozawa nr 665 | 初井言荣 nr 666 | KotoeHatsui nr 667 | 寺田农 nr 668 | MinoriTerada nr 669 | 常田富士男 nr 670 | FujioTokita nr 671 | 姜文 nr 672 | WenJiang nr 673 | 香川照之 nr 674 | TeruyukiKagawa nr 675 | 袁丁 nr 676 | DingYuan nr 677 | 姜宏波 nr 678 | HongboJiang nr 679 | 丛志军 nr 680 | ZhijunCong nr 681 | 苏拉沙玛 nr 682 | SurajSharma nr 683 | 伊尔凡可汗 nr 684 | IrrfanKhan nr 685 | 拉菲斯波 nr 686 | RafeSpall nr 687 | 阿迪勒侯赛因 nr 688 | AdilHussain nr 689 | 塔布 nr 690 | Tabu nr 691 | 阿努克斯特芬 nr 692 | AnukSteffen nr 693 | 布鲁诺冈茨 nr 694 | BrunoGanz nr 695 | 昆林艾格匹 nr 696 | QuirinAgrippi nr 697 | 安娜申茨 nr 698 | AnnaSchinz nr 699 | 伊莎贝尔奥特曼 nr 700 | IsabelleOttmann nr 701 | 阿德里安布罗迪 nr 702 | AdrienBrody nr 703 | 托马斯克莱舒曼 nr 704 | ThomasKretschmann nr 705 | 艾米莉娅福克斯 nr 706 | EmiliaFox nr 707 | 米哈乌热布罗夫斯基 nr 708 | MichalZebrowski nr 709 | 埃德斯托帕德 nr 710 | EdStoppard nr 711 | 周星驰 nr 712 | StephenChow nr 713 | 吴孟达 nr 714 | ManTatNg nr 715 | 罗家英 nr 716 | Kar-YingLaw nr 717 | 蓝洁瑛 nr 718 | KitYingLam nr 719 | 莫文蔚 nr 720 | KarenMok nr 721 | 伊利亚伍德 nr 722 | ElijahWood nr 723 | 西恩奥斯汀 nr 724 | SeanAstin nr 725 | 多米尼克莫纳汉 nr 726 | DominicMonaghan nr 727 | 奥兰多布鲁姆 nr 728 | OrlandoBloom nr 729 | 维果莫腾森 nr 730 | ViggoMortensen nr 731 | 阿尔帕西诺 nr 732 | AlPacino nr 733 | 克里斯奥唐纳 nr 734 | ChrisO'Donnell nr 735 | 詹姆斯瑞布霍恩 nr 736 | JamesRebhorn nr 737 | 加布里埃尔安瓦尔 nr 738 | GabrielleAnwar nr 739 | 菲利普塞默霍夫曼 nr 740 | PhilipSeymourHoffman nr 741 | 罗宾威廉姆斯 nr 742 | RobinWilliams nr 743 | 罗伯特肖恩莱纳德 nr 744 | RobertSeanLeonard nr 745 | 伊桑霍克 nr 746 | EthanHawke nr 747 | 乔西查尔斯 nr 748 | JoshCharles nr 749 | 盖尔汉森 nr 750 | GaleHansen nr 751 | 维果莫腾森 nr 752 | ViggoMortensen nr 753 | 马赫沙拉阿里 nr 754 | MahershalaAli nr 755 | 琳达卡德里尼 nr 756 | LindaCardellini nr 757 | 塞巴斯蒂安马尼斯科 nr 758 | SebastianManiscalco nr 759 | 迪米特D马里诺夫 nr 760 | DimiterD.Marinov nr 761 | 奥黛丽赫本 nr 762 | AudreyHepburn nr 763 | 格利高里派克 nr 764 | GregoryPeck nr 765 | 埃迪艾伯特 nr 766 | EddieAlbert nr 767 | 哈特利鲍尔 nr 768 | HartleyPower nr 769 | 哈考特威廉姆斯 nr 770 | HarcourtWilliams nr 771 | 邱岳峰 nr 772 | YuefengQiu nr 773 | 富润生 nr 774 | RunshengFu nr 775 | 毕克 nr 776 | KeBi nr 777 | 尚华 nr 778 | HuaShang nr 779 | 于鼎 nr 780 | DingYu nr 781 | 菲利普努瓦雷 nr 782 | PhilippeNoiret nr 783 | 萨瓦特利卡西欧 nr 784 | SalvatoreCascio nr 785 | 雅克贝汉 nr 786 | JacquesPerrin nr 787 | 马克莱昂纳蒂 nr 788 | MarcoLeonardi nr 789 | 莱奥波多特里耶斯泰 nr 790 | LeopoldoTrieste nr 791 | 伊利亚伍德 nr 792 | ElijahWood nr 793 | 西恩奥斯汀 nr 794 | SeanAstin nr 795 | 伊恩麦克莱恩 nr 796 | IanMcKellen nr 797 | 维果莫腾森 nr 798 | ViggoMortensen nr 799 | 奥兰多布鲁姆 nr 800 | OrlandoBloom nr 801 | 基努里维斯 nr 802 | KeanuReeves nr 803 | 劳伦斯菲什伯恩 nr 804 | LaurenceFishburne nr 805 | 凯瑞-安莫斯 nr 806 | Carrie-AnneMoss nr 807 | 雨果维文 nr 808 | HugoWeaving nr 809 | 阿尔帕西诺 nr 810 | AlPacino nr 811 | 罗伯特杜瓦尔 nr 812 | RobertDuvall nr 813 | 黛安基顿 nr 814 | DianeKeaton nr 815 | 罗伯特德尼罗 nr 816 | RobertDeNiro nr 817 | 约翰凯泽尔 nr 818 | JohnCazale nr 819 | 乔纳森泰勒托马斯 nr 820 | JonathanTaylorThomas nr 821 | 马修布罗德里克 nr 822 | MatthewBroderick nr 823 | 杰瑞米艾恩斯 nr 824 | JeremyIrons nr 825 | 詹姆斯厄尔琼斯 nr 826 | JamesEarlJones nr 827 | 宋康昊 nr 828 | Kang-hoSong nr 829 | 金英爱 nr 830 | Yeong-aeKim nr 831 | 吴达洙 nr 832 | Dal-suOh nr 833 | 郭度沅 nr 834 | Do-WonKwak nr 835 | 任时完 nr 836 | Si-wanYim nr 837 | 郎雄 nr 838 | SihungLung nr 839 | 杨贵媚 nr 840 | Kuei-MeiYang nr 841 | 吴倩莲 nr 842 | Chien-lienWu nr 843 | 王渝文 nr 844 | Yu-WenWang nr 845 | 张艾嘉 nr 846 | SylviaChang nr 847 | 爱德华诺顿 nr 848 | EdwardNorton nr 849 | 布拉德皮特 nr 850 | BradPitt nr 851 | 海伦娜伯翰卡特 nr 852 | HelenaBonhamCarter nr 853 | 扎克格雷尼尔 nr 854 | ZachGrenier nr 855 | 米特洛夫 nr 856 | MeatLoaf nr 857 | 凯特布兰切特 nr 858 | CateBlanchett nr 859 | 布拉德皮特 nr 860 | BradPitt nr 861 | 朱莉娅奥蒙德 nr 862 | JuliaOrmond nr 863 | 芳妮A钱勃丝 nr 864 | FauneA.Chambers nr 865 | 伊莱亚斯科泰斯 nr 866 | EliasKoteas nr 867 | 罗素克劳 nr 868 | RussellCrowe nr 869 | 艾德哈里斯 nr 870 | EdHarris nr 871 | 詹妮弗康纳利 nr 872 | JenniferConnelly nr 873 | 克里斯托弗普卢默 nr 874 | ChristopherPlummer nr 875 | 保罗贝坦尼 nr 876 | PaulBettany nr 877 | 阿萨巴特菲尔德 nr 878 | AsaButterfield nr 879 | 维拉法米加 nr 880 | VeraFarmiga nr 881 | 卡拉霍根 nr 882 | CaraHorgan nr 883 | 祖萨霍尔 nr 884 | ZsuzsaHoll nr 885 | 安贝尔比蒂 nr 886 | AmberBeattie nr 887 | 乌尔里希穆埃 nr 888 | UlrichMühe nr 889 | 马蒂娜格德克 nr 890 | MartinaGedeck nr 891 | 塞巴斯蒂安科赫 nr 892 | SebastianKoch nr 893 | 乌尔里希图库尔 nr 894 | UlrichTukur nr 895 | 托马斯蒂梅 nr 896 | ThomasThieme nr 897 | 中山美穗 nr 898 | MihoNakayama nr 899 | 丰川悦司 nr 900 | EtsushiToyokawa nr 901 | 酒井美纪 nr 902 | MikiSakai nr 903 | 柏原崇 nr 904 | TakashiKashiwabara nr 905 | 范文雀 nr 906 | BunjakuHan nr 907 | 杰森弗莱明 nr 908 | JasonFlemyng nr 909 | 德克斯特弗莱彻 nr 910 | DexterFletcher nr 911 | 尼克莫兰 nr 912 | NickMoran nr 913 | 杰森斯坦森 nr 914 | JasonStatham nr 915 | 斯蒂文麦金托什 nr 916 | StevenMackintosh nr 917 | 莫妮卡贝鲁奇 nr 918 | MonicaBellucci nr 919 | 朱塞佩苏尔法罗 nr 920 | GiuseppeSulfaro nr 921 | Luciano nr 922 | Federico nr 923 | 玛蒂尔德皮亚纳 nr 924 | MatildePiana nr 925 | Pietro nr 926 | NotarianniPietroNotarianni nr 927 | 马里奥卡萨斯 nr 928 | MarioCasas nr 929 | 阿娜瓦格纳 nr 930 | AnaWagener nr 931 | 何塞科罗纳多 nr 932 | JoséCoronado nr 933 | 巴巴拉莱涅 nr 934 | BárbaraLennie nr 935 | 弗兰塞斯克奥雷利亚 nr 936 | FrancescOrella nr 937 | 朱莉安德鲁斯 nr 938 | JulieAndrews nr 939 | 克里斯托弗普卢默 nr 940 | ChristopherPlummer nr 941 | 埃琳诺帕克 nr 942 | EleanorParker nr 943 | 理查德海顿 nr 944 | RichardHaydn nr 945 | 佩吉伍德 nr 946 | PeggyWood nr 947 | 萨姆沃辛顿 nr 948 | SamWorthington nr 949 | 佐伊索尔达娜 nr 950 | ZoeSaldana nr 951 | 西格妮韦弗 nr 952 | SigourneyWeaver nr 953 | 史蒂芬朗 nr 954 | StephenLang nr 955 | 米歇尔罗德里格兹 nr 956 | MichelleRodriguez nr 957 | 丹尼尔雷德克里夫 nr 958 | DanielRadcliffe nr 959 | 艾玛沃森 nr 960 | EmmaWatson nr 961 | 鲁伯特格林特 nr 962 | RupertGrint nr 963 | 海伦娜伯翰卡特 nr 964 | HelenaBonhamCarter nr 965 | 拉尔夫费因斯 nr 966 | RalphFiennes nr 967 | 汤姆汉克斯 nr 968 | TomHanks nr 969 | 汤姆塞兹摩尔 nr 970 | TomSizemore nr 971 | 爱德华伯恩斯 nr 972 | EdwardBurns nr 973 | 巴里佩珀 nr 974 | BarryPepper nr 975 | 亚当戈德堡 nr 976 | AdamGoldberg nr 977 | 杰克尼科尔森 nr 978 | JackNicholson nr 979 | 丹尼德维托 nr 980 | DannyDeVito nr 981 | 克里斯托弗洛伊德 nr 982 | ChristopherLloyd nr 983 | 路易丝弗莱彻 nr 984 | LouiseFletcher nr 985 | 威尔萨姆森 nr 986 | WillSampson nr 987 | 默罕默德阿米尔纳吉 nr 988 | MohammadAmirNaji nr 989 | 法拉赫阿米尔哈什米安 nr 990 | AmirFarrokhHashemian nr 991 | 巴哈丽西迪奇 nr 992 | BahareSeddiqi nr 993 | 纳菲丝贾法-穆罕默迪 nr 994 | NafiseJafar-Mohammadi nr 995 | 费雷什特萨拉班迪 nr 996 | FereshteSarabandi nr 997 | 朱迪福斯特 nr 998 | JodieFoster nr 999 | 安东尼霍普金斯 nr 1000 | AnthonyHopkins nr 1001 | 斯科特格伦 nr 1002 | ScottGlenn nr 1003 | 安东尼希尔德 nr 1004 | AnthonyHeald nr 1005 | 布鲁克史密斯 nr 1006 | BrookeSmith nr 1007 | 拉尔夫费因斯 nr 1008 | RalphFiennes nr 1009 | 托尼雷沃罗利 nr 1010 | TonyRevolori nr 1011 | 阿德里安布罗迪 nr 1012 | AdrienBrody nr 1013 | 威廉达福 nr 1014 | WillemDafoe nr 1015 | 裘德洛 nr 1016 | JudeLaw nr 1017 | 周星驰 nr 1018 | StephenChow nr 1019 | 元秋 nr 1020 | QiuYuen nr 1021 | 元华 nr 1022 | WahYuen nr 1023 | 黄圣依 nr 1024 | EvaHuang nr 1025 | 梁小龙 nr 1026 | Siu-LungLeung nr 1027 | 莱昂纳多迪卡普里奥 nr 1028 | LeonardoDiCaprio nr 1029 | 马克鲁弗洛 nr 1030 | MarkRuffalo nr 1031 | 本金斯利 nr 1032 | BenKingsley nr 1033 | 马克斯冯叙多夫 nr 1034 | MaxvonSydow nr 1035 | 米歇尔威廉姆斯 nr 1036 | MichelleWilliams nr 1037 | 阿什顿库彻 nr 1038 | AshtonKutcher nr 1039 | 梅洛拉沃尔特斯 nr 1040 | MeloraWalters nr 1041 | 艾米斯马特 nr 1042 | AmySmart nr 1043 | 埃尔登汉森 nr 1044 | EldenHenson nr 1045 | 休杰克曼 nr 1046 | HughJackman nr 1047 | 克里斯蒂安贝尔 nr 1048 | ChristianBale nr 1049 | 迈克尔凯恩 nr 1050 | MichaelCaine nr 1051 | 丽贝卡豪尔 nr 1052 | RebeccaHall nr 1053 | 斯嘉丽约翰逊 nr 1054 | ScarlettJohansson nr 1055 | 丹尼尔雷德克里夫 nr 1056 | DanielRadcliffe nr 1057 | 艾玛沃森 nr 1058 | EmmaWatson nr 1059 | 鲁伯特格林特 nr 1060 | RupertGrint nr 1061 | 加里奥德曼 nr 1062 | GaryOldman nr 1063 | 朱丽沃特斯 nr 1064 | JulieWalters nr 1065 | 马特达蒙 nr 1066 | MattDamon nr 1067 | 罗宾威廉姆斯 nr 1068 | RobinWilliams nr 1069 | 本阿弗莱克 nr 1070 | BenAffleck nr 1071 | 斯特兰斯卡斯加德 nr 1072 | StellanSkarsgård nr 1073 | 明妮德里弗 nr 1074 | MinnieDriver nr 1075 | 阿德里安布罗迪 nr 1076 | AdrienBrody nr 1077 | 马西娅盖伊哈登 nr 1078 | MarciaGayHarden nr 1079 | 詹姆斯肯恩 nr 1080 | JamesCaan nr 1081 | 克里斯蒂娜亨德里克斯 nr 1082 | ChristinaHendricks nr 1083 | 刘玉玲 nr 1084 | LucyLiu nr 1085 | 约翰特拉沃尔塔 nr 1086 | JohnTravolta nr 1087 | 乌玛瑟曼 nr 1088 | UmaThurman nr 1089 | 阿曼达普拉莫 nr 1090 | AmandaPlummer nr 1091 | 蒂姆罗斯 nr 1092 | TimRoth nr 1093 | 塞缪尔杰克逊 nr 1094 | SamuelL.Jackson nr 1095 | 路易西霍尤斯 nr 1096 | LouiePsihoyos nr 1097 | 瑞克欧贝瑞 nr 1098 | RichardO'Barry nr 1099 | 哈迪琼斯 nr 1100 | HardyJones nr 1101 | 保罗沃森 nr 1102 | PaulWatson nr 1103 | 森下丈二 nr 1104 | JojiMorishita nr 1105 | 查理卓别林 nr 1106 | CharlesChaplin nr 1107 | 宝莲高黛 nr 1108 | PauletteGoddard nr 1109 | 亨利伯格曼 nr 1110 | HenryBergman nr 1111 | 蒂尼桑福德 nr 1112 | TinySandford nr 1113 | 切斯特康克林 nr 1114 | ChesterConklin nr 1115 | 张国荣 nr 1116 | LeslieCheung nr 1117 | 梁朝伟 nr 1118 | TonyLeungChiuWai nr 1119 | 张震 nr 1120 | ChenChang nr 1121 | 格利高里戴顿 nr 1122 | GregoryDayton nr 1123 | 彭绮华 nr 1124 | JackyPangYeeWah nr 1125 | 罗伯特德尼罗 nr 1126 | RobertDeNiro nr 1127 | 詹姆斯伍兹 nr 1128 | JamesWoods nr 1129 | 伊丽莎白麦戈文 nr 1130 | ElizabethMcGovern nr 1131 | 乔佩西 nr 1132 | JoePesci nr 1133 | 波特杨 nr 1134 | BurtYoung nr 1135 | 周星驰 nr 1136 | StephenChow nr 1137 | 张柏芝 nr 1138 | CeciliaCheung nr 1139 | 莫文蔚 nr 1140 | KarenMok nr 1141 | 吴孟达 nr 1142 | ManTatNg nr 1143 | 约翰库萨克 nr 1144 | JohnCusack nr 1145 | 雷利奥塔 nr 1146 | RayLiotta nr 1147 | 阿曼达皮特 nr 1148 | AmandaPeet nr 1149 | 约翰浩克斯 nr 1150 | JohnHawkes nr 1151 | 阿尔弗雷德莫里纳 nr 1152 | AlfredMolina nr 1153 | 宋康昊 nr 1154 | Kang-hoSong nr 1155 | 金相庆 nr 1156 | Sang-kyungKim nr 1157 | 金雷夏 nr 1158 | Roe-haKim nr 1159 | 宋在浩 nr 1160 | Jae-hoSong nr 1161 | 边希峰 nr 1162 | Hie-bongByeon nr 1163 | 摩根弗里曼 nr 1164 | MorganFreeman nr 1165 | 布拉德皮特 nr 1166 | BradPitt nr 1167 | 凯文史派西 nr 1168 | KevinSpacey nr 1169 | 格温妮斯帕特洛 nr 1170 | GwynethPaltrow nr 1171 | 安德鲁凯文沃克 nr 1172 | AndrewKevinWalker nr 1173 | 林原惠美 nr 1174 | MegumiHayashibara nr 1175 | 江守彻 nr 1176 | ToruEmori nr 1177 | 堀胜之祐 nr 1178 | KatsunosukeHori nr 1179 | 古谷彻 nr 1180 | TôruFuruya nr 1181 | 大塚明夫 nr 1182 | AkioÔtsuka nr 1183 | 约翰尼德普 nr 1184 | JohnnyDepp nr 1185 | 杰弗里拉什 nr 1186 | GeoffreyRush nr 1187 | 奥兰多布鲁姆 nr 1188 | OrlandoBloom nr 1189 | 凯拉奈特莉 nr 1190 | KeiraKnightley nr 1191 | 杰克达文波特 nr 1192 | JackDavenport nr 1193 | 丹尼尔雷德克里夫 nr 1194 | DanielRadcliffe nr 1195 | 艾玛沃森 nr 1196 | EmmaWatson nr 1197 | 鲁伯特格林特 nr 1198 | RupertGrint nr 1199 | 汤姆费尔顿 nr 1200 | TomFelton nr 1201 | 理查德格雷弗斯 nr 1202 | RichardGriffiths nr 1203 | 李凯莉 nr 1204 | KellyLee nr 1205 | 金燕玲 nr 1206 | ElaineJin nr 1207 | 张洋洋 nr 1208 | JonathanChang nr 1209 | 萧淑慎 nr 1210 | Shu-shenHsiao nr 1211 | 尾形一成 nr 1212 | IsseiOgata nr 1213 | 麦斯米科尔森 nr 1214 | MadsMikkelsen nr 1215 | 托玛斯博拉森 nr 1216 | ThomasBoLarsen nr 1217 | 安妮卡韦德科普 nr 1218 | AnnikaWedderkopp nr 1219 | 拉丝弗格斯托姆 nr 1220 | LasseFogelstrøm nr 1221 | 苏西沃德 nr 1222 | SusseWold nr 1223 | 周星驰 nr 1224 | StephenChow nr 1225 | 巩俐 nr 1226 | LiGong nr 1227 | 陈百祥 nr 1228 | Pak-cheungChan nr 1229 | 郑佩佩 nr 1230 | Pei-peiCheng nr 1231 | 朱咪咪 nr 1232 | MimiChu nr 1233 | 柳承龙 nr 1234 | Seung-ryongRyu nr 1235 | 朴信惠 nr 1236 | Shin-hyePark nr 1237 | 郑镇荣 nr 1238 | Jin-yeongJeong nr 1239 | 金正泰 nr 1240 | Jeong-taeKim nr 1241 | 吴达洙 nr 1242 | Dal-suOh nr 1243 | 中谷美纪 nr 1244 | MikiNakatani nr 1245 | 永山瑛太 nr 1246 | Eita nr 1247 | 香川照之 nr 1248 | TeruyukiKagawa nr 1249 | 市川实日子 nr 1250 | MikakoIchikawa nr 1251 | 伊势谷友介 nr 1252 | YûsukeIseya nr 1253 | 克里斯蒂安贝尔 nr 1254 | ChristianBale nr 1255 | 汤姆哈迪 nr 1256 | TomHardy nr 1257 | 安妮海瑟薇 nr 1258 | AnneHathaway nr 1259 | 约瑟夫高登-莱维特 nr 1260 | JosephGordon-Levitt nr 1261 | 玛丽昂歌迪亚 nr 1262 | MarionCotillard nr 1263 | 艾米汉莫 nr 1264 | ArmieHammer nr 1265 | 提莫西查拉梅 nr 1266 | TimothéeChalamet nr 1267 | 迈克尔斯图巴 nr 1268 | MichaelStuhlbarg nr 1269 | 阿蜜拉卡萨 nr 1270 | AmiraCasar nr 1271 | 艾斯特加瑞尔 nr 1272 | EstherGarrel nr 1273 | 伊桑霍克 nr 1274 | EthanHawke nr 1275 | 朱莉德尔佩 nr 1276 | JulieDelpy nr 1277 | 安德莉亚埃克特 nr 1278 | AndreaEckert nr 1279 | 汉诺波西尔 nr 1280 | HannoPöschl nr 1281 | 卡尔布拉克施魏格尔 nr 1282 | KarlBruckschwaiger nr 1283 | 希斯莱杰 nr 1284 | HeathLedger nr 1285 | 杰克吉伦哈尔 nr 1286 | JakeGyllenhaal nr 1287 | 米歇尔威廉姆斯 nr 1288 | MichelleWilliams nr 1289 | 安妮海瑟薇 nr 1290 | AnneHathaway nr 1291 | 凯特玛拉 nr 1292 | KateMara nr 1293 | 约翰尼德普 nr 1294 | JohnnyDepp nr 1295 | 薇诺娜瑞德 nr 1296 | WinonaRyder nr 1297 | 黛安韦斯特 nr 1298 | DianneWiest nr 1299 | 安东尼迈克尔豪尔 nr 1300 | AnthonyMichaelHall nr 1301 | 凯西贝克 nr 1302 | KathyBaker nr 1303 | 本木雅弘 nr 1304 | MasahiroMotoki nr 1305 | 广末凉子 nr 1306 | RyokoHirosue nr 1307 | 山崎努 nr 1308 | TsutomuYamazaki nr 1309 | 吉行和子 nr 1310 | KazukoYoshiyuki nr 1311 | 笹野高史 nr 1312 | TakashiSasano nr 1313 | 布鲁斯威利斯 nr 1314 | BruceWillis nr 1315 | 海利乔奥斯蒙 nr 1316 | HaleyJoelOsment nr 1317 | 托妮科莱特 nr 1318 | ToniCollette nr 1319 | 奥莉维亚威廉姆斯 nr 1320 | OliviaWilliams nr 1321 | 唐尼沃尔伯格 nr 1322 | DonnieWahlberg nr 1323 | 林青霞 nr 1324 | BrigitteLin nr 1325 | 金城武 nr 1326 | TakeshiKaneshiro nr 1327 | 梁朝伟 nr 1328 | TonyLeungChiuWai nr 1329 | 王菲 nr 1330 | FayeWong nr 1331 | 周嘉玲 nr 1332 | ValerieChow nr 1333 | 梅尔吉布森 nr 1334 | MelGibson nr 1335 | 苏菲玛索 nr 1336 | SophieMarceau nr 1337 | 布莱恩考克斯 nr 1338 | BrianCox nr 1339 | 詹姆斯科兹莫 nr 1340 | JamesCosmo nr 1341 | 辛劳洛 nr 1342 | SeanLawlor nr 1343 | 斯科特安第斯 nr 1344 | ScottAdsit nr 1345 | 瑞恩波特 nr 1346 | RyanPotter nr 1347 | 丹尼尔海尼 nr 1348 | DanielHenney nr 1349 | TJ米勒 nr 1350 | T.J.Miller nr 1351 | 黎明 nr 1352 | LeonLai nr 1353 | 张曼玉 nr 1354 | MaggieCheung nr 1355 | 杨恭如 nr 1356 | KristyYang nr 1357 | 曾志伟 nr 1358 | EricTsang nr 1359 | 杜可风 nr 1360 | ChristopherDoyle nr 1361 | 松田洋治 nr 1362 | YôjiMatsuda nr 1363 | 石田百合子 nr 1364 | YurikoIshida nr 1365 | 田中裕子 nr 1366 | YûkoTanaka nr 1367 | 小林薰 nr 1368 | KaoruKobayashi nr 1369 | 西村雅彦 nr 1370 | MasahikoNishimura nr 1371 | 伊桑霍克 nr 1372 | EthanHawke nr 1373 | 朱莉德尔佩 nr 1374 | JulieDelpy nr 1375 | 弗农多布切夫 nr 1376 | VernonDobtcheff nr 1377 | 路易丝勒莫瓦纳托雷斯 nr 1378 | LouiseLemoineTorrès nr 1379 | 罗多尔保利 nr 1380 | RodolphePauly nr 1381 | 北野武 nr 1382 | TakeshiKitano nr 1383 | 关口雄介 nr 1384 | YusukeSekiguchi nr 1385 | 岸本加世子 nr 1386 | KayokoKishimoto nr 1387 | 吉行和子 nr 1388 | KazukoYoshiyuki nr 1389 | 细川典江 nr 1390 | FumieHosokawa nr 1391 | 志田未来 nr 1392 | MiraiShida nr 1393 | 神木隆之介 nr 1394 | RyûnosukeKamiki nr 1395 | 树木希林 nr 1396 | KirinKiki nr 1397 | 三浦友和 nr 1398 | TomokazuMiura nr 1399 | 大竹忍 nr 1400 | ShinobuÔtake nr 1401 | 本阿弗莱克 nr 1402 | BenAffleck nr 1403 | 裴淳华 nr 1404 | RosamundPike nr 1405 | 尼尔帕特里克哈里斯 nr 1406 | NeilPatrickHarris nr 1407 | 凯莉库恩 nr 1408 | CarrieCoon nr 1409 | 泰勒派瑞 nr 1410 | TylerPerry nr 1411 | 宋康昊 nr 1412 | Kang-hoSong nr 1413 | 李善均 nr 1414 | Seon-gyunLee nr 1415 | 曹汝贞 nr 1416 | Yeo-JeongJo nr 1417 | 崔宇植 nr 1418 | ChoiWoo-shik nr 1419 | 朴素丹 nr 1420 | So-damPark nr 1421 | 夏雨 nr 1422 | YuXia nr 1423 | 宁静 nr 1424 | JingNing nr 1425 | 陶虹 nr 1426 | HongTao nr 1427 | 耿乐 nr 1428 | LeGeng nr 1429 | 斯琴高娃 nr 1430 | GaowaSiqin nr 1431 | 奥黛丽塔图 nr 1432 | AudreyTautou nr 1433 | 马修卡索维茨 nr 1434 | MathieuKassovitz nr 1435 | 吕菲斯 nr 1436 | Rufus nr 1437 | 洛莱拉克拉沃塔 nr 1438 | LorellaCravotta nr 1439 | 塞尔梅林 nr 1440 | SergeMerlin nr 1441 | 凯文科斯特纳 nr 1442 | KevinCostner nr 1443 | 劳拉邓恩 nr 1444 | LauraDern nr 1445 | 克林特伊斯特伍德 nr 1446 | ClintEastwood nr 1447 | TJ劳瑟 nr 1448 | T.J.Lowther nr 1449 | 基斯斯扎拉巴基克 nr 1450 | KeithSzarabajka nr 1451 | 桥本爱 nr 1452 | AiHashimoto nr 1453 | 三浦贵大 nr 1454 | TakahiroMiura nr 1455 | 松冈茉优 nr 1456 | MayuMatsuoka nr 1457 | 温水洋一 nr 1458 | YôichiNukumizu nr 1459 | 桐岛加恋 nr 1460 | KarenKirishima nr 1461 | 张国荣 nr 1462 | LeslieCheung nr 1463 | 王祖贤 nr 1464 | JoeyWong nr 1465 | 午马 nr 1466 | WuMa nr 1467 | 刘兆铭 nr 1468 | LauSiuMing nr 1469 | 林威 nr 1470 | WaiLam nr 1471 | 柳乐优弥 nr 1472 | YûyaYagira nr 1473 | 北浦爱 nr 1474 | AyuKitaura nr 1475 | 木村飞影 nr 1476 | HieiKimura nr 1477 | 清水萌萌子 nr 1478 | MomokoShimizu nr 1479 | 韩英惠 nr 1480 | HanaeKan nr 1481 | 多姆纳尔格里森 nr 1482 | DomhnallGleeson nr 1483 | 瑞秋麦克亚当斯 nr 1484 | RachelMcAdams nr 1485 | 比尔奈伊 nr 1486 | BillNighy nr 1487 | 莉迪亚威尔逊 nr 1488 | LydiaWilson nr 1489 | 琳赛邓肯 nr 1490 | LindsayDuncan nr 1491 | 本名阳子 nr 1492 | YoukoHonna nr 1493 | 小林桂树 nr 1494 | KeijuKobayashi nr 1495 | 高山南 nr 1496 | MinamiTakayama nr 1497 | 高桥一生 nr 1498 | IsseyTakahashi nr 1499 | 山下容莉枝 nr 1500 | YorieYamashita nr 1501 | 岩男润子 nr 1502 | JunkoIwao nr 1503 | 松本梨香 nr 1504 | RicaMatsumoto nr 1505 | 辻亲八 nr 1506 | ShinpachiTsuji nr 1507 | 大仓正章 nr 1508 | OokuraMasaaki nr 1509 | 秋元羊介 nr 1510 | YôsukeAkimoto nr 1511 | 丹尼尔雷德克里夫 nr 1512 | DanielRadcliffe nr 1513 | 艾玛沃森 nr 1514 | EmmaWatson nr 1515 | 鲁伯特格林特 nr 1516 | RupertGrint nr 1517 | 迈克尔刚本 nr 1518 | MichaelGambon nr 1519 | 玛吉史密斯 nr 1520 | MaggieSmith nr 1521 | 汤姆汉克斯 nr 1522 | TomHanks nr 1523 | 凯瑟琳泽塔-琼斯 nr 1524 | CatherineZeta-Jones nr 1525 | 斯坦利图齐 nr 1526 | StanleyTucci nr 1527 | 齐麦克布赖德 nr 1528 | ChiMcBride nr 1529 | 迭戈卢纳 nr 1530 | DiegoLuna nr 1531 | 杰伊巴鲁切尔 nr 1532 | JayBaruchel nr 1533 | 杰拉德巴特勒 nr 1534 | GerardButler nr 1535 | 克雷格费格森 nr 1536 | CraigFerguson nr 1537 | 亚美莉卡费雷拉 nr 1538 | AmericaFerrera nr 1539 | 桥本爱 nr 1540 | AiHashimoto nr 1541 | 三浦贵大 nr 1542 | TakahiroMiura nr 1543 | 松冈茉优 nr 1544 | MayuMatsuoka nr 1545 | 温水洋一 nr 1546 | YôichiNukumizu nr 1547 | 桐岛加恋 nr 1548 | KarenKirishima nr 1549 | 罗夫拉斯加德 nr 1550 | RolfLassgård nr 1551 | 巴哈帕斯 nr 1552 | BaharPars nr 1553 | 托比亚斯阿姆博瑞 nr 1554 | TobiasAlmborg nr 1555 | 菲利普伯格 nr 1556 | FilipBerg nr 1557 | 安娜-莱娜布伦丁 nr 1558 | Anna-LenaBrundin nr 1559 | 阿尔帕西诺 nr 1560 | AlPacino nr 1561 | 黛安基顿 nr 1562 | DianeKeaton nr 1563 | 塔莉娅夏尔 nr 1564 | TaliaShire nr 1565 | 安迪加西亚 nr 1566 | AndyGarcia nr 1567 | 埃里瓦拉赫 nr 1568 | EliWallach nr 1569 | 大卫西尔弗曼 nr 1570 | DavidSilverman nr 1571 | 约翰古德曼 nr 1572 | JohnGoodman nr 1573 | 比利克里斯托 nr 1574 | BillyCrystal nr 1575 | 玛丽吉布斯 nr 1576 | MaryGibbs nr 1577 | 史蒂夫布西密 nr 1578 | SteveBuscemi nr 1579 | 汤姆汉克斯 nr 1580 | TomHanks nr 1581 | 蒂姆艾伦 nr 1582 | TimAllen nr 1583 | 琼库萨克 nr 1584 | JoanCusack nr 1585 | 尼德巴蒂 nr 1586 | NedBeatty nr 1587 | 唐里克斯 nr 1588 | DonRickles nr 1589 | 凯拉奈特莉 nr 1590 | KeiraKnightley nr 1591 | 马修麦克费登 nr 1592 | MatthewMacfadyen nr 1593 | 唐纳德萨瑟兰 nr 1594 | DonaldSutherland nr 1595 | 布兰达布莱斯 nr 1596 | BrendaBlethyn nr 1597 | 凯瑞穆里根 nr 1598 | CareyMulligan nr 1599 | 佐仓绫音 nr 1600 | AyaneSakura nr 1601 | 内山昂辉 nr 1602 | KokiUchiyama nr 1603 | 辻亲八 nr 1604 | ShinpachiTsuji nr 1605 | 山本兼平 nr 1606 | KanehiraYamamoto nr 1607 | 后藤弘树 nr 1608 | HirokiGotô nr 1609 | 李政宰 nr 1610 | Jung-jaeLee nr 1611 | 崔岷植 nr 1612 | Min-sikChoi nr 1613 | 黄政民 nr 1614 | Jeong-minHwang nr 1615 | 宋智孝 nr 1616 | Ji-hyoSong nr 1617 | 朴成雄 nr 1618 | ParkSung-woong nr 1619 | 孔刘 nr 1620 | YooGong nr 1621 | 郑有美 nr 1622 | Yu-miJung nr 1623 | 马东锡 nr 1624 | MaDong-seok nr 1625 | 金秀安 nr 1626 | Soo-anKim nr 1627 | 金义城 nr 1628 | Eui-sungKim nr 1629 | 杰米福克斯 nr 1630 | JamieFoxx nr 1631 | 莱昂纳多迪卡普里奥 nr 1632 | LeonardoDiCaprio nr 1633 | 克里斯托弗瓦尔兹 nr 1634 | ChristophWaltz nr 1635 | 塞缪尔杰克逊 nr 1636 | SamuelL.Jackson nr 1637 | 凯丽华盛顿 nr 1638 | KerryWashington nr 1639 | 史蒂夫卡瑞尔 nr 1640 | SteveCarell nr 1641 | 杰森席格尔 nr 1642 | JasonSegel nr 1643 | 拉塞尔布兰德 nr 1644 | RussellBrand nr 1645 | 朱莉安德鲁斯 nr 1646 | JulieAndrews nr 1647 | 焦菊隐 nr 1648 | JuyinJiao nr 1649 | 于是之 nr 1650 | ShizhiYu nr 1651 | 郑榕 nr 1652 | RongZhen nr 1653 | 蓝天野 nr 1654 | TianyeLan nr 1655 | 英若诚 nr 1656 | RuochengYing nr 1657 | 松隆子 nr 1658 | TakakoMatsu nr 1659 | 冈田将生 nr 1660 | MasakiOkada nr 1661 | 木村佳乃 nr 1662 | YoshinoKimura nr 1663 | 西井幸人 nr 1664 | YukitoNishii nr 1665 | 桥本爱 nr 1666 | AiHashimoto nr 1667 | 托妮科莱特 nr 1668 | ToniCollette nr 1669 | 菲利普塞默霍夫曼 nr 1670 | PhilipSeymourHoffman nr 1671 | 巴瑞哈姆弗莱斯 nr 1672 | BarryHumphries nr 1673 | 艾瑞克巴纳 nr 1674 | EricBana nr 1675 | 贝塔尼维特莫尔 nr 1676 | BethanyWhitmore nr 1677 | 梁正晖 nr 1678 | ZhenghuiLiang nr 1679 | 邱岳峰 nr 1680 | YuefengQiu nr 1681 | 毕克 nr 1682 | KeBi nr 1683 | 富润生 nr 1684 | RunshengFu nr 1685 | 伊万麦克格雷格 nr 1686 | EwanMcGregor nr 1687 | 阿尔伯特芬尼 nr 1688 | AlbertFinney nr 1689 | 比利克鲁德普 nr 1690 | BillyCrudup nr 1691 | 杰西卡兰格 nr 1692 | JessicaLange nr 1693 | 海伦娜伯翰卡特 nr 1694 | HelenaBonhamCarter nr 1695 | 梁朝伟 nr 1696 | TonyLeungChiuWai nr 1697 | 汤唯 nr 1698 | WeiTang nr 1699 | 陈冲 nr 1700 | JoanChen nr 1701 | 王力宏 nr 1702 | Lee-HomWang nr 1703 | 庹宗华 nr 1704 | Chung-HuaTou nr 1705 | 周星驰 nr 1706 | StephenChow nr 1707 | 吴孟达 nr 1708 | ManTatNg nr 1709 | 张敏 nr 1710 | SharlaCheung nr 1711 | 徐锦江 nr 1712 | ElvisTsui nr 1713 | 钟丽缇 nr 1714 | ChristyChung nr 1715 | 赵文瑄 nr 1716 | WinstonChao nr 1717 | 归亚蕾 nr 1718 | Ya-leiKuei nr 1719 | 郎雄 nr 1720 | SihungLung nr 1721 | 金素梅 nr 1722 | MayChin nr 1723 | 米切尔利希藤斯坦 nr 1724 | MitchellLichtenstein nr 1725 | 本尼迪克特康伯巴奇 nr 1726 | BenedictCumberbatch nr 1727 | 凯拉奈特莉 nr 1728 | KeiraKnightley nr 1729 | 马修古迪 nr 1730 | MatthewGoode nr 1731 | 罗里金尼尔 nr 1732 | RoryKinnear nr 1733 | 艾伦里奇 nr 1734 | AllenLeech nr 1735 | 泰伊谢里丹 nr 1736 | TyeSheridan nr 1737 | 奥利维亚库克 nr 1738 | OliviaCooke nr 1739 | 本门德尔森 nr 1740 | BenMendelsohn nr 1741 | 马克里朗斯 nr 1742 | MarkRylance nr 1743 | 丽娜维特 nr 1744 | LenaWaithe nr 1745 | 梁朝伟 nr 1746 | TonyLeungChiuWai nr 1747 | 林青霞 nr 1748 | BrigitteLin nr 1749 | 张国荣 nr 1750 | LeslieCheung nr 1751 | 叶玉卿 nr 1752 | VeronicaYip nr 1753 | 张学友 nr 1754 | JackyCheung nr 1755 | 梁朝伟 nr 1756 | TonyLeungChiuWai nr 1757 | 张曼玉 nr 1758 | MaggieCheung nr 1759 | 潘迪华 nr 1760 | RebeccaPan nr 1761 | 萧炳林 nr 1762 | PingLamSiu nr 1763 | 张耀扬 nr 1764 | RoyCheung nr 1765 | 西恩潘 nr 1766 | SeanPenn nr 1767 | 达科塔范宁 nr 1768 | DakotaFanning nr 1769 | 米歇尔菲佛 nr 1770 | MichellePfeiffer nr 1771 | 黛安韦斯特 nr 1772 | DianneWiest nr 1773 | 洛雷塔迪瓦恩 nr 1774 | LorettaDevine nr 1775 | 艾米波勒 nr 1776 | AmyPoehler nr 1777 | 菲利丝史密斯 nr 1778 | PhyllisSmith nr 1779 | 理查德坎德 nr 1780 | RichardKind nr 1781 | 比尔哈德尔 nr 1782 | BillHader nr 1783 | 沈恩敬 nr 1784 | Eun-kyungShim nr 1785 | 闵孝琳 nr 1786 | Hyo-rinMin nr 1787 | 姜素拉 nr 1788 | So-RaKang nr 1789 | 南宝拉 nr 1790 | Bo-raNam nr 1791 | 陈熙琼 nr 1792 | Hee-kyungJin nr 1793 | 三船敏郎 nr 1794 | ToshirôMifune nr 1795 | 志村乔 nr 1796 | TakashiShimura nr 1797 | 津岛惠子 nr 1798 | KeikoTsushima nr 1799 | 岛崎雪子 nr 1800 | YukikoShimazaki nr 1801 | 藤原釜足 nr 1802 | KamatariFujiwara nr 1803 | 安德鲁加菲尔德 nr 1804 | AndrewGarfield nr 1805 | 萨姆沃辛顿 nr 1806 | SamWorthington nr 1807 | 文斯沃恩 nr 1808 | VinceVaughn nr 1809 | 雨果维文 nr 1810 | HugoWeaving nr 1811 | 卢克布雷西 nr 1812 | LukeBracey nr 1813 | 河正宇 nr 1814 | Jung-wooHa nr 1815 | 李璟荣 nr 1816 | Kyeong-yeongLee nr 1817 | 全慧珍 nr 1818 | Hye-jinJeon nr 1819 | 李大卫 nr 1820 | DavidLee nr 1821 | 金弘波 nr 1822 | Hong-FaKim nr 1823 | 安东尼博金斯 nr 1824 | AnthonyPerkins nr 1825 | 维拉迈尔斯 nr 1826 | VeraMiles nr 1827 | 约翰加文 nr 1828 | JohnGavin nr 1829 | 珍妮特利 nr 1830 | JanetLeigh nr 1831 | 马丁鲍尔萨姆 nr 1832 | MartinBalsam nr 1833 | 基努里维斯 nr 1834 | KeanuReeves nr 1835 | 劳伦斯菲什伯恩 nr 1836 | LaurenceFishburne nr 1837 | 凯瑞-安莫斯 nr 1838 | Carrie-AnneMoss nr 1839 | 雨果维文 nr 1840 | HugoWeaving nr 1841 | 神木隆之介 nr 1842 | RyûnosukeKamiki nr 1843 | 上白石萌音 nr 1844 | MoneKamishiraishi nr 1845 | 长泽雅美 nr 1846 | MasamiNagasawa nr 1847 | 市原悦子 nr 1848 | EtsukoIchihara nr 1849 | 成田凌 nr 1850 | RyoNarita nr 1851 | 雷沃纳尔 nr 1852 | LeighWhannell nr 1853 | 加利艾尔维斯 nr 1854 | CaryElwes nr 1855 | 丹尼格洛弗 nr 1856 | DannyGlover nr 1857 | 梁振邦 nr 1858 | KenLeung nr 1859 | 迪娜迈耶 nr 1860 | DinaMeyer nr 1861 | 弗兰西斯麦克多蒙德 nr 1862 | FrancesMcDormand nr 1863 | 伍迪哈里森 nr 1864 | WoodyHarrelson nr 1865 | 山姆洛克威尔 nr 1866 | SamRockwell nr 1867 | 艾比考尼什 nr 1868 | AbbieCornish nr 1869 | 卢卡斯赫奇斯 nr 1870 | LucasHedges nr 1871 | 马修麦康纳 nr 1872 | MatthewMcConaughey nr 1873 | 詹妮弗加纳 nr 1874 | JenniferGarner nr 1875 | 杰瑞德莱托 nr 1876 | JaredLeto nr 1877 | 斯蒂夫扎恩 nr 1878 | SteveZahn nr 1879 | 达拉斯罗伯特斯 nr 1880 | DallasRoberts nr 1881 | 尼古拉斯凯奇 nr 1882 | NicolasCage nr 1883 | 艾玛斯通 nr 1884 | EmmaStone nr 1885 | 瑞安雷诺兹 nr 1886 | RyanReynolds nr 1887 | 凯瑟琳基纳 nr 1888 | CatherineKeener nr 1889 | 霍卫民 nr 1890 | WeiminHuo nr 1891 | 王笑天 nr 1892 | XiaotianWang nr 1893 | 罗芸 nr 1894 | YunLuo nr 1895 | 杨瑜珍 nr 1896 | YuzhenYang nr 1897 | 孙黎 nr 1898 | LiSun nr 1899 | 马特达蒙 nr 1900 | MattDamon nr 1901 | 朱丽娅斯蒂尔斯 nr 1902 | JuliaStiles nr 1903 | 大卫斯特雷泽恩 nr 1904 | DavidStrathairn nr 1905 | 斯科特格伦 nr 1906 | ScottGlenn nr 1907 | 帕迪康斯戴恩 nr 1908 | PaddyConsidine nr 1909 | 周润发 nr 1910 | Yun-FatChow nr 1911 | 狄龙 nr 1912 | LungTi nr 1913 | 张国荣 nr 1914 | LeslieCheung nr 1915 | 朱宝意 nr 1916 | EmilyChu nr 1917 | 李子雄 nr 1918 | WaiseLee nr 1919 | 卡迪亚兰德 nr 1920 | KátiaLund nr 1921 | 亚历桑德雷罗德里格斯 nr 1922 | AlexandreRodrigues nr 1923 | 莱安德鲁菲尔米诺 nr 1924 | LeandroFirmino nr 1925 | 菲利佩哈根森 nr 1926 | PhellipeHaagensen nr 1927 | 道格拉斯席尔瓦 nr 1928 | DouglasSilva nr 1929 | 岛本须美 nr 1930 | SumiShimamoto nr 1931 | 松田洋治 nr 1932 | YôjiMatsuda nr 1933 | 榊原良子 nr 1934 | YoshikoSakakibara nr 1935 | 辻村真人 nr 1936 | MahitoTsujimura nr 1937 | 京田尚子 nr 1938 | HisakoKyôda nr 1939 | 周润发 nr 1940 | Yun-FatChow nr 1941 | 张国荣 nr 1942 | LeslieCheung nr 1943 | 钟楚红 nr 1944 | CherieChung nr 1945 | 朱江 nr 1946 | KongChu nr 1947 | 曾江 nr 1948 | KennethTsang nr 1949 | 唐钱德尔 nr 1950 | DonCheadle nr 1951 | 苏菲奥康内多 nr 1952 | SophieOkonedo nr 1953 | 华金菲尼克斯 nr 1954 | JoaquinPhoenix nr 1955 | 尼克诺特 nr 1956 | NickNolte nr 1957 | 哈基姆凯-卡西姆 nr 1958 | HakeemKae-Kazim nr 1959 | 绫濑遥 nr 1960 | HarukaAyase nr 1961 | 长泽雅美 nr 1962 | MasamiNagasawa nr 1963 | 夏帆 nr 1964 | Kaho nr 1965 | 广濑铃 nr 1966 | SuzuHirose nr 1967 | 大竹忍 nr 1968 | ShinobuÔtake nr 1969 | 伊桑霍克 nr 1970 | EthanHawke nr 1971 | 朱莉德尔佩 nr 1972 | JulieDelpy nr 1973 | 肖姆斯戴维-菲茨帕特里克 nr 1974 | SeamusDavey-Fitzpatrick nr 1975 | 詹妮弗普里尔 nr 1976 | JenniferPrior nr 1977 | 夏洛特普里尔 nr 1978 | CharlottePrior nr 1979 | 汤姆汉克斯 nr 1980 | TomHanks nr 1981 | 大卫摩斯 nr 1982 | DavidMorse nr 1983 | 迈克克拉克邓肯 nr 1984 | MichaelClarkeDuncan nr 1985 | 邦尼亨特 nr 1986 | BonnieHunt nr 1987 | 詹姆斯克伦威尔 nr 1988 | JamesCromwell nr 1989 | 华金菲尼克斯 nr 1990 | JoaquinPhoenix nr 1991 | 罗伯特德尼罗 nr 1992 | RobertDeNiro nr 1993 | 马克马龙 nr 1994 | MarcMaron nr 1995 | 莎姬贝兹 nr 1996 | ZazieBeetz nr 1997 | 谢伊惠格姆 nr 1998 | SheaWhigham nr 1999 | 盖皮尔斯 nr 2000 | GuyPearce nr 2001 | 凯瑞-安莫斯 nr 2002 | Carrie-AnneMoss nr 2003 | 乔潘托里亚诺 nr 2004 | JoePantoliano nr 2005 | 小马克布恩 nr 2006 | MarkBooneJunior nr 2007 | 拉什费加 nr 2008 | RussFega nr 2009 | 郭涛 nr 2010 | TaoGuo nr 2011 | 刘桦 nr 2012 | HuaLiu nr 2013 | 连晋 nr 2014 | TeddyLin nr 2015 | 黄渤 nr 2016 | BoHuang nr 2017 | 徐峥 nr 2018 | ZhengXu nr 2019 | 牛振华 nr 2020 | ZhenhuaNiu nr 2021 | 雷恪生 nr 2022 | KeshengLei nr 2023 | 李强 nr 2024 | QiangLi nr 2025 | 句号 nr 2026 | HaoJu nr 2027 | 吉恩凯利 nr 2028 | GeneKelly nr 2029 | 唐纳德奥康纳 nr 2030 | DonaldO'Connor nr 2031 | 黛比雷诺斯 nr 2032 | DebbieReynolds nr 2033 | 简哈根 nr 2034 | JeanHagen nr 2035 | 凯普鲍尔斯 nr 2036 | KempPowers nr 2037 | 杰米福克斯 nr 2038 | JamieFoxx nr 2039 | 蒂娜菲 nr 2040 | TinaFey nr 2041 | 菲利西亚拉斯海德 nr 2042 | PhyliciaRashad nr 2043 | 阿米尔-卡利布汤普森 nr 2044 | Ahmir-KhalibThompson nr 2045 | 凯尔杜拉 nr 2046 | KeirDullea nr 2047 | 加里洛克伍德 nr 2048 | GaryLockwood nr 2049 | 威廉姆西尔维斯特 nr 2050 | WilliamSylvester nr 2051 | 丹尼尔里希特 nr 2052 | DanielRichter nr 2053 | 雷纳德洛塞特 nr 2054 | LeonardRossiter nr 2055 | 吴君如 nr 2056 | SandraNg nr 2057 | 任达华 nr 2058 | SimonYam nr 2059 | 钟绍图 nr 2060 | BuzzChung nr 2061 | 李治廷 nr 2062 | AarifLee nr 2063 | 蔡颖恩 nr 2064 | EvelynChoi nr 2065 | 仲代达矢 nr 2066 | TatsuyaNakadai nr 2067 | 八千草薰 nr 2068 | KaoruYachigusa nr 2069 | 柳叶敏郎 nr 2070 | ToshirôYanagiba nr 2071 | 尾美利德 nr 2072 | ToshinoriOmi nr 2073 | 石野真子 nr 2074 | MakoIshino nr 2075 | 陈冠希 nr 2076 | EdisonChen nr 2077 | 余文乐 nr 2078 | ShawnYue nr 2079 | 曾志伟 nr 2080 | EricTsang nr 2081 | 黄秋生 nr 2082 | AnthonyWongChau-Sang nr 2083 | 达里奥格兰迪内蒂 nr 2084 | DaríoGrandinetti nr 2085 | 玛丽娅玛努尔 nr 2086 | MaríaMarull nr 2087 | 莫妮卡比利亚 nr 2088 | MónicaVilla nr 2089 | 丽塔科尔泰塞 nr 2090 | RitaCortese nr 2091 | 胡丽叶塔泽尔贝伯格 nr 2092 | JulietaZylberberg nr 2093 | 中川雅也 nr 2094 | LilyFranky nr 2095 | 安藤樱 nr 2096 | SakuraAndô nr 2097 | 松冈茉优 nr 2098 | MayuMatsuoka nr 2099 | 城桧吏 nr 2100 | JyoKairi nr 2101 | 佐佐木美结 nr 2102 | MiyuSasaki nr 2103 | 约翰C赖利 nr 2104 | JohnC.Reilly nr 2105 | 萨拉西尔弗曼 nr 2106 | SarahSilverman nr 2107 | 杰克麦克布瑞尔 nr 2108 | JackMcBrayer nr 2109 | 简林奇 nr 2110 | JaneLynch nr 2111 | 艾伦图代克 nr 2112 | AlanTudyk nr 2113 | 迈尔斯特勒 nr 2114 | MilesTeller nr 2115 | JK西蒙斯 nr 2116 | J.K.Simmons nr 2117 | 保罗雷瑟 nr 2118 | PaulReiser nr 2119 | 梅莉莎班诺伊 nr 2120 | MelissaBenoist nr 2121 | 奥斯汀斯托维尔 nr 2122 | AustinStowell nr 2123 | 雷罗马诺 nr 2124 | RayRomano nr 2125 | 约翰雷吉扎莫 nr 2126 | JohnLeguizamo nr 2127 | 丹尼斯利瑞 nr 2128 | DenisLeary nr 2129 | 杰克布莱克 nr 2130 | JackBlack nr 2131 | 梅利莎乔治 nr 2132 | MelissaGeorge nr 2133 | 利亚姆海姆斯沃斯 nr 2134 | LiamHemsworth nr 2135 | 迈克尔多曼 nr 2136 | MichaelDorman nr 2137 | 瑞秋卡帕尼 nr 2138 | RachaelCarpani nr 2139 | 艾玛朗 nr 2140 | EmmaLung nr 2141 | 洛芙琳坦丹 nr 2142 | LoveleenTandan nr 2143 | 戴夫帕特尔 nr 2144 | DevPatel nr 2145 | 沙鲁巴舒克拉 nr 2146 | SaurabhShukla nr 2147 | 亚尼卡普 nr 2148 | AnilKapoor nr 2149 | 拉詹德拉纳斯祖特施 nr 2150 | RajendranathZutshi nr 2151 | 张震 nr 2152 | ChenChang nr 2153 | 杨静怡 nr 2154 | LisaYang nr 2155 | 张国柱 nr 2156 | Kuo-ChuChang nr 2157 | 王启赞 nr 2158 | Chi-tsanWang nr 2159 | 林鸿铭 nr 2160 | HongmingLin nr 2161 | 张国荣 nr 2162 | LeslieCheung nr 2163 | 林青霞 nr 2164 | BrigitteLin nr 2165 | 梁朝伟 nr 2166 | TonyLeungChiuWai nr 2167 | 张学友 nr 2168 | JackyCheung nr 2169 | 张曼玉 nr 2170 | MaggieCheung nr 2171 | 高山南 nr 2172 | MinamiTakayama nr 2173 | 佐久间玲 nr 2174 | ReiSakuma nr 2175 | 户田惠子 nr 2176 | KeikoToda nr 2177 | 山口胜平 nr 2178 | KappeiYamaguchi nr 2179 | 信泽三惠子 nr 2180 | MiekoNobusawa nr 2181 | 杰克尼科尔森 nr 2182 | JackNicholson nr 2183 | 摩根弗里曼 nr 2184 | MorganFreeman nr 2185 | 西恩海耶斯 nr 2186 | SeanHayes nr 2187 | 贝弗利陶德 nr 2188 | BeverlyTodd nr 2189 | 罗伯莫洛 nr 2190 | RobMorrow nr 2191 | 古屋胜悟 nr 2192 | FuruyaShougo nr 2193 | 江守彻 nr 2194 | ToruEmori nr 2195 | 梅垣义明 nr 2196 | YoshiakiUmegaki nr 2197 | 冈本绫 nr 2198 | AyaOkamoto nr 2199 | 饭塚昭三 nr 2200 | ShôzôÎzuka nr 2201 | 庄益增 nr 2202 | CresChuang nr 2203 | 陈竹升 nr 2204 | Chu-shengChen nr 2205 | 戴立忍 nr 2206 | LeonDai nr 2207 | 张少怀 nr 2208 | Shao-HuaiChang nr 2209 | 陈以文 nr 2210 | YiwenChen nr 2211 | 山口胜平 nr 2212 | KappeiYamaguchi nr 2213 | 爱河里花子 nr 2214 | RikakoAikawa nr 2215 | 加藤清史郎 nr 2216 | SeishirôKatô nr 2217 | 原田知世 nr 2218 | TomoyoHarada nr 2219 | 川岛得爱 nr 2220 | TokuyoshiKawashima nr 2221 | 多布杰 nr 2222 | Duobujie nr 2223 | 张垒 nr 2224 | LeiZhang nr 2225 | 奇道 nr 2226 | DaoQi nr 2227 | 赵雪莹 nr 2228 | XueyingZhao nr 2229 | 马占林 nr 2230 | ZhanlinMa nr 2231 | 休格兰特 nr 2232 | HughGrant nr 2233 | 连姆尼森 nr 2234 | LiamNeeson nr 2235 | 科林费尔斯 nr 2236 | ColinFirth nr 2237 | 劳拉琳妮 nr 2238 | LauraLinney nr 2239 | 艾玛汤普森 nr 2240 | EmmaThompson nr 2241 | 娜塔莉波特曼 nr 2242 | NataliePortman nr 2243 | 米拉库尼斯 nr 2244 | MilaKunis nr 2245 | 文森特卡塞尔 nr 2246 | VincentCassel nr 2247 | 芭芭拉赫希 nr 2248 | BarbaraHershey nr 2249 | 薇诺娜瑞德 nr 2250 | WinonaRyder nr 2251 | 查理卓别林 nr 2252 | CharlesChaplin nr 2253 | 弗吉尼亚切瑞尔 nr 2254 | VirginiaCherrill nr 2255 | 佛罗伦斯李 nr 2256 | FlorenceLee nr 2257 | 亨利伯格曼 nr 2258 | HenryBergman nr 2259 | 珍哈露 nr 2260 | JeanHarlow nr 2261 | 杰克吉伦哈尔 nr 2262 | JakeGyllenhaal nr 2263 | 维拉法米加 nr 2264 | VeraFarmiga nr 2265 | 米歇尔莫纳汉 nr 2266 | MichelleMonaghan nr 2267 | 杰弗里怀特 nr 2268 | JeffreyWright nr 2269 | 拉塞尔皮特斯 nr 2270 | RussellPeters nr 2271 | 卡西阿弗莱克 nr 2272 | CaseyAffleck nr 2273 | 卢卡斯赫奇斯 nr 2274 | LucasHedges nr 2275 | 米歇尔威廉姆斯 nr 2276 | MichelleWilliams nr 2277 | CJ威尔逊 nr 2278 | C.J.Wilson nr 2279 | 凯尔钱德勒 nr 2280 | KyleChandler nr 2281 | 达斯汀霍夫曼 nr 2282 | DustinHoffman nr 2283 | 汤姆克鲁斯 nr 2284 | TomCruise nr 2285 | 瓦莱丽亚戈利诺 nr 2286 | ValeriaGolino nr 2287 | 邦尼亨特 nr 2288 | BonnieHunt nr 2289 | 贝丝格兰特 nr 2290 | BethGrant nr 2291 | 拉米马雷克 nr 2292 | RamiMalek nr 2293 | 本哈迪 nr 2294 | BenHardy nr 2295 | 约瑟夫梅泽罗 nr 2296 | JosephMazzello nr 2297 | 格威利姆李 nr 2298 | GwilymLee nr 2299 | 艾伦里奇 nr 2300 | AllenLeech nr 2301 | 平采娜乐维瑟派布恩 nr 2302 | PimchanokLeuwisetpaibul nr 2303 | 马里奥毛瑞尔 nr 2304 | MarioMaurer nr 2305 | 苏达拉布查蓬 nr 2306 | SudaratButrprom nr 2307 | 雅尼卡桑普蕾舞 nr 2308 | YanikaThongprayoon nr 2309 | 瑞恩高斯林 nr 2310 | RyanGosling nr 2311 | 瑞秋麦克亚当斯 nr 2312 | RachelMcAdams nr 2313 | 吉娜罗兰兹 nr 2314 | GenaRowlands nr 2315 | 詹姆斯加纳 nr 2316 | JamesGarner nr 2317 | 斯塔尔勒塔杜波利斯 nr 2318 | StarlettaDuPois nr 2319 | 张曼玉 nr 2320 | MaggieCheung nr 2321 | 王祖贤 nr 2322 | JoeyWong nr 2323 | 赵文卓 nr 2324 | ManCheukChiu nr 2325 | 吴兴国 nr 2326 | Hsing-kuoWu nr 2327 | 马精武 nr 2328 | JingwuMa nr 2329 | 海利乔奥斯蒙 nr 2330 | HaleyJoelOsment nr 2331 | 弗兰西丝奥康纳 nr 2332 | FrancesO'Connor nr 2333 | 山姆洛巴兹 nr 2334 | SamRobards nr 2335 | 杰克托马斯 nr 2336 | JakeThomas nr 2337 | 裘德洛 nr 2338 | JudeLaw nr 2339 | 吉娜戴维斯 nr 2340 | GeenaDavis nr 2341 | 苏珊萨兰登 nr 2342 | SusanSarandon nr 2343 | 哈威凯特尔 nr 2344 | HarveyKeitel nr 2345 | 迈克尔马德森 nr 2346 | MichaelMadsen nr 2347 | 布拉德皮特 nr 2348 | BradPitt nr 2349 | 路易德菲奈斯 nr 2350 | LouisdeFunès nr 2351 | 布尔维尔 nr 2352 | Bourvil nr 2353 | 克劳迪奥布鲁克 nr 2354 | ClaudioBrook nr 2355 | 安德丽帕里西 nr 2356 | AndréaParisy nr 2357 | 科莱特布罗塞 nr 2358 | ColetteBrosset nr 2359 | 阿诺施瓦辛格 nr 2360 | ArnoldSchwarzenegger nr 2361 | 琳达汉密尔顿 nr 2362 | LindaHamilton nr 2363 | 爱德华福隆 nr 2364 | EdwardFurlong nr 2365 | 罗伯特帕特里克 nr 2366 | RobertPatrick nr 2367 | 阿尔伯恩 nr 2368 | EarlBoen nr 2369 | 汤姆哈迪 nr 2370 | TomHardy nr 2371 | 查理兹塞隆 nr 2372 | CharlizeTheron nr 2373 | 尼古拉斯霍尔特 nr 2374 | NicholasHoult nr 2375 | 休基斯-拜恩 nr 2376 | HughKeays-Byrne nr 2377 | 乔什赫尔曼 nr 2378 | JoshHelman nr 2379 | 三船敏郎 nr 2380 | ToshirôMifune nr 2381 | 京町子 nr 2382 | MachikoKyô nr 2383 | 森雅之 nr 2384 | MasayukiMori nr 2385 | 志村乔 nr 2386 | TakashiShimura nr 2387 | 千秋实 nr 2388 | MinoruChiaki nr 2389 | 张曼玉 nr 2390 | MaggieCheung nr 2391 | 林青霞 nr 2392 | BrigitteLin nr 2393 | 梁家辉 nr 2394 | TonyLeung nr 2395 | 甄子丹 nr 2396 | DonnieYen nr 2397 | 熊欣欣 nr 2398 | XinxinXiong nr 2399 | 布拉德皮特 nr 2400 | BradPitt nr 2401 | 梅拉尼罗兰 nr 2402 | MélanieLaurent nr 2403 | 克里斯托弗瓦尔兹 nr 2404 | ChristophWaltz nr 2405 | 伊莱罗斯 nr 2406 | EliRoth nr 2407 | 迈克尔法斯宾德 nr 2408 | MichaelFassbender nr 2409 | 伊桑霍克 nr 2410 | EthanHawke nr 2411 | 乌玛瑟曼 nr 2412 | UmaThurman nr 2413 | 裘德洛 nr 2414 | JudeLaw nr 2415 | 艾伦阿金 nr 2416 | AlanArkin nr 2417 | 戈尔维达尔 nr 2418 | GoreVidal nr 2419 | 神月柚莉爱 nr 2420 | YuriaKozuki nr 2421 | 土井洋辉 nr 2422 | HirokiDoi nr 2423 | 山口智子 nr 2424 | TomokoYamaguchi nr 2425 | 长岛一茂 nr 2426 | KazushigeNagashima nr 2427 | 天海祐希 nr 2428 | YukiAmami nr 2429 | 刘晓庆 nr 2430 | XiaoqingLiu nr 2431 | 姜文 nr 2432 | WenJiang nr 2433 | 郑在石 nr 2434 | ZaishiZheng nr 2435 | 张光北 nr 2436 | GuangbeiZhang nr 2437 | 徐松子 nr 2438 | SongziXu nr 2439 | 山口朱美 nr 2440 | YamaguchiAkemi nr 2441 | 志乃原良子 nr 2442 | nan nr 2443 | 白石绫乃 nr 2444 | AyanoSHIRAISHI nr 2445 | 辰巳努 nr 2446 | TsutomuTatsumi nr 2447 | 野坂昭如 nr 2448 | AkiyukiNosaka nr 2449 | 菅田将晖 nr 2450 | MasakiSuda nr 2451 | 有村架纯 nr 2452 | KasumiArimura nr 2453 | 细田佳央太 nr 2454 | KanataHosoda nr 2455 | 清原果耶 nr 2456 | KayaKiyohara nr 2457 | 小田切让 nr 2458 | JôOdagiri nr 2459 | 艾米丽芭尔多尼 nr 2460 | EmilyBaldoni nr 2461 | 莫瑞史特林 nr 2462 | MaurySterling nr 2463 | 尼古拉斯布兰登 nr 2464 | NicholasBrendon nr 2465 | 劳伦斯卡法莉娅 nr 2466 | LoreneScafaria nr 2467 | 伊丽莎白格瑞斯 nr 2468 | ElizabethGracen nr 2469 | 瑞恩高斯林 nr 2470 | RyanGosling nr 2471 | 艾玛斯通 nr 2472 | EmmaStone nr 2473 | 约翰传奇 nr 2474 | JohnLegend nr 2475 | 罗丝玛丽德薇特 nr 2476 | RosemarieDeWitt nr 2477 | 芬维特洛克 nr 2478 | FinnWittrock nr 2479 | 雅各布特伦布莱 nr 2480 | JacobTremblay nr 2481 | 朱莉娅罗伯茨 nr 2482 | JuliaRoberts nr 2483 | 伊扎贝拉维多维奇 nr 2484 | IzabelaVidovic nr 2485 | 欧文威尔逊 nr 2486 | OwenWilson nr 2487 | 诺亚尤佩 nr 2488 | NoahJupe nr 2489 | 基努里维斯 nr 2490 | KeanuReeves nr 2491 | 劳伦斯菲什伯恩 nr 2492 | LaurenceFishburne nr 2493 | 凯瑞-安莫斯 nr 2494 | Carrie-AnneMoss nr 2495 | 雨果维文 nr 2496 | HugoWeaving nr 2497 | 韦绍兰 nr 2498 | ShaolanWei nr 2499 | 罗善学 nr 2500 | ShanxueLuo nr 2501 | 毛银梅 nr 2502 | YinmeiMao nr 2503 | 李美金 nr 2504 | MeijinLi nr 2505 | 李爱连 nr 2506 | AilianLi nr 2507 | 丹尼尔雷德克里夫 nr 2508 | DanielRadcliffe nr 2509 | 艾玛沃森 nr 2510 | EmmaWatson nr 2511 | 鲁伯特格林特 nr 2512 | RupertGrint nr 2513 | 海伦娜伯翰卡特 nr 2514 | HelenaBonhamCarter nr 2515 | 拉尔夫费因斯 nr 2516 | RalphFiennes nr 2517 | 莱昂纳多迪卡普里奥 nr 2518 | LeonardoDiCaprio nr 2519 | 杰曼翰苏 nr 2520 | DjimonHounsou nr 2521 | 詹妮弗康纳利 nr 2522 | JenniferConnelly nr 2523 | 阿诺德沃斯洛 nr 2524 | ArnoldVosloo nr 2525 | 大卫哈雷伍德 nr 2526 | DavidHarewood nr 2527 | 尼古拉斯凯奇 nr 2528 | NicolasCage nr 2529 | 布里吉特莫伊纳汉 nr 2530 | BridgetMoynahan nr 2531 | 杰瑞德莱托 nr 2532 | JaredLeto nr 2533 | 伊安霍姆 nr 2534 | IanHolm nr 2535 | 伊桑霍克 nr 2536 | EthanHawke nr 2537 | 马特达蒙 nr 2538 | MattDamon nr 2539 | 杰西卡查斯坦 nr 2540 | JessicaChastain nr 2541 | 克里斯汀韦格 nr 2542 | KristenWiig nr 2543 | 杰夫丹尼尔斯 nr 2544 | JeffDaniels nr 2545 | 迈克尔佩纳 nr 2546 | MichaelPeña nr 2547 | 阿部宽 nr 2548 | HiroshiAbe nr 2549 | 夏川结衣 nr 2550 | YuiNatsukawa nr 2551 | 江原由希子 nr 2552 | YOU nr 2553 | 高桥和也 nr 2554 | KazuyaTakahashi nr 2555 | 田中祥平 nr 2556 | ShoheiTanaka nr 2557 | 布丽拉尔森 nr 2558 | BrieLarson nr 2559 | 雅各布特伦布莱 nr 2560 | JacobTremblay nr 2561 | 肖恩布里吉格斯 nr 2562 | SeanBridgers nr 2563 | 温迪古逊 nr 2564 | WendyCrewson nr 2565 | 阿曼达布鲁盖尔 nr 2566 | AmandaBrugel nr 2567 | 伍经纬 nr 2568 | JingweiWu nr 2569 | 费雯丽 nr 2570 | VivienLeigh nr 2571 | 罗伯特泰勒 nr 2572 | RobertTaylor nr 2573 | 露塞尔沃特森 nr 2574 | LucileWatson nr 2575 | 弗吉尼亚菲尔德 nr 2576 | VirginiaField nr 2577 | 庄司美代子 nr 2578 | MiyokoShôji nr 2579 | 小山茉美 nr 2580 | MamiKoyama nr 2581 | 折笠富美子 nr 2582 | FumikoOrikasa nr 2583 | 饭塚昭三 nr 2584 | ShôzôÎzuka nr 2585 | 小野坂昌也 nr 2586 | MasayaOnosaka nr 2587 | 马特达蒙 nr 2588 | MattDamon nr 2589 | 布莱恩考克斯 nr 2590 | BrianCox nr 2591 | 琼艾伦 nr 2592 | JoanAllen nr 2593 | 卡尔厄本 nr 2594 | KarlUrban nr 2595 | 弗朗卡波滕特 nr 2596 | FrankaPotente nr 2597 | 本斯蒂勒 nr 2598 | BenStiller nr 2599 | 克里斯汀韦格 nr 2600 | KristenWiig nr 2601 | 亚当斯科特 nr 2602 | AdamScott nr 2603 | 西恩潘 nr 2604 | SeanPenn nr 2605 | 凯瑟琳哈恩 nr 2606 | KathrynHahn nr 2607 | 丹尼尔雷德克里夫 nr 2608 | DanielRadcliffe nr 2609 | 艾玛沃森 nr 2610 | EmmaWatson nr 2611 | 鲁伯特格林特 nr 2612 | RupertGrint nr 2613 | 加里奥德曼 nr 2614 | GaryOldman nr 2615 | 拉尔夫费因斯 nr 2616 | RalphFiennes nr 2617 | 桑德拉布洛克 nr 2618 | SandraBullock nr 2619 | 蒂姆麦格罗 nr 2620 | TimMcGraw nr 2621 | 昆东亚伦 nr 2622 | QuintonAaron nr 2623 | 杰海德 nr 2624 | JaeHead nr 2625 | 莉莉柯林斯 nr 2626 | LilyCollins nr 2627 | 沙梅克摩尔 nr 2628 | ShameikMoore nr 2629 | 杰克约翰逊 nr 2630 | JakeJohnson nr 2631 | 海莉斯坦菲尔德 nr 2632 | HaileeSteinfeld nr 2633 | 马赫沙拉阿里 nr 2634 | MahershalaAli nr 2635 | 吕晓禾 nr 2636 | XiaoheLü nr 2637 | 唐国强 nr 2638 | GuoqiangTang nr 2639 | 何伟 nr 2640 | WeiHe nr 2641 | 童超 nr 2642 | ChaoTong nr 2643 | 盖克 nr 2644 | KeGe nr 2645 | 马特达蒙 nr 2646 | MattDamon nr 2647 | 弗朗卡波滕特 nr 2648 | FrankaPotente nr 2649 | 克里斯库珀 nr 2650 | ChrisCooper nr 2651 | 克里夫欧文 nr 2652 | CliveOwen nr 2653 | 朱丽娅斯蒂尔斯 nr 2654 | JuliaStiles nr 2655 | 张国荣 nr 2656 | LeslieCheung nr 2657 | 张曼玉 nr 2658 | MaggieCheung nr 2659 | 刘嘉玲 nr 2660 | CarinaLau nr 2661 | 刘德华 nr 2662 | AndyLau nr 2663 | 张学友 nr 2664 | JackyCheung nr 2665 | 凯特温丝莱特 nr 2666 | KateWinslet nr 2667 | 大卫克劳斯 nr 2668 | DavidKross nr 2669 | 拉尔夫费因斯 nr 2670 | RalphFiennes nr 2671 | 詹妮特海因 nr 2672 | JeanetteHain nr 2673 | 苏珊娜洛塔尔 nr 2674 | SusanneLothar nr 2675 | 凯拉奈特莉 nr 2676 | KeiraKnightley nr 2677 | 马克鲁弗洛 nr 2678 | MarkRuffalo nr 2679 | 亚当莱文 nr 2680 | AdamLevine nr 2681 | 詹姆斯柯登 nr 2682 | JamesCorden nr 2683 | 海莉斯坦菲尔德 nr 2684 | HaileeSteinfeld nr 2685 | 布拉德皮特 nr 2686 | BradPitt nr 2687 | 安东尼霍普金斯 nr 2688 | AnthonyHopkins nr 2689 | 艾丹奎因 nr 2690 | AidanQuinn nr 2691 | 朱莉娅奥蒙德 nr 2692 | JuliaOrmond nr 2693 | 亨利托马斯 nr 2694 | HenryThomas nr 2695 | 巩俐 nr 2696 | LiGong nr 2697 | 马精武 nr 2698 | JingwuMa nr 2699 | 何赛飞 nr 2700 | SaifeiHe nr 2701 | 曹翠芬 nr 2702 | CuifenCao nr 2703 | 周琦 nr 2704 | QiZhou nr 2705 | 剧情 ng 2706 | 犯罪 ng 2707 | 爱情 ng 2708 | 同性 ng 2709 | 灾难 ng 2710 | 动作 ng 2711 | 动画 ng 2712 | 奇幻 ng 2713 | 喜剧 ng 2714 | 战争 ng 2715 | 科幻 ng 2716 | 冒险 ng 2717 | 悬疑 ng 2718 | 历史 ng 2719 | 音乐 ng 2720 | 歌舞 ng 2721 | 惊悚 ng 2722 | 古装 ng 2723 | 家庭 ng 2724 | 传记 ng 2725 | 西部 ng 2726 | 运动 ng 2727 | 情色 ng 2728 | 儿童 ng 2729 | 纪录片 ng 2730 | 武侠 ng 2731 | 恐怖 ng 2732 | -------------------------------------------------------------------------------- /backend/spider/database_250/actor_movie.csv: -------------------------------------------------------------------------------- 1 | actor_id,movie_id 2 | 0,0 3 | 1,0 4 | 2,0 5 | 3,0 6 | 4,0 7 | 5,1 8 | 6,1 9 | 7,1 10 | 8,1 11 | 9,1 12 | 10,2 13 | 11,2 14 | 12,2 15 | 13,2 16 | 14,2 17 | 15,3 18 | 16,3 19 | 17,3 20 | 18,3 21 | 19,3 22 | 20,4 23 | 21,4 24 | 22,4 25 | 23,4 26 | 24,4 27 | 25,5 28 | 26,5 29 | 27,5 30 | 28,5 31 | 29,5 32 | 30,6 33 | 31,6 34 | 32,6 35 | 33,6 36 | 34,6 37 | 35,7 38 | 36,7 39 | 37,7 40 | 38,7 41 | 39,7 42 | 40,8 43 | 41,8 44 | 42,8 45 | 43,8 46 | 44,8 47 | 45,9 48 | 46,9 49 | 47,9 50 | 48,9 51 | 49,9 52 | 50,10 53 | 51,10 54 | 52,10 55 | 53,10 56 | 54,10 57 | 55,11 58 | 56,11 59 | 57,11 60 | 58,11 61 | 59,11 62 | 60,12 63 | 61,12 64 | 62,12 65 | 63,12 66 | 64,12 67 | 65,13 68 | 66,13 69 | 67,13 70 | 68,13 71 | 69,13 72 | 70,14 73 | 71,14 74 | 72,14 75 | 73,14 76 | 74,14 77 | 75,15 78 | 76,15 79 | 77,15 80 | 78,15 81 | 79,15 82 | 80,16 83 | 81,16 84 | 82,16 85 | 83,16 86 | 84,17 87 | 85,17 88 | 86,17 89 | 87,17 90 | 88,18 91 | 89,18 92 | 90,18 93 | 91,18 94 | 92,18 95 | 93,19 96 | 94,19 97 | 95,19 98 | 96,19 99 | 97,19 100 | 98,20 101 | 99,20 102 | 100,20 103 | 101,20 104 | 102,20 105 | 103,21 106 | 104,21 107 | 105,21 108 | 106,21 109 | 107,21 110 | 108,22 111 | 109,22 112 | 110,22 113 | 111,22 114 | 112,23 115 | 113,23 116 | 114,23 117 | 115,23 118 | 116,23 119 | 117,24 120 | 118,24 121 | 119,24 122 | 120,24 123 | 121,24 124 | 122,25 125 | 123,25 126 | 124,25 127 | 125,25 128 | 126,25 129 | 127,26 130 | 128,26 131 | 129,26 132 | 130,26 133 | 131,26 134 | 132,27 135 | 133,27 136 | 134,27 137 | 135,27 138 | 136,27 139 | 137,28 140 | 138,28 141 | 139,28 142 | 140,28 143 | 141,28 144 | 142,29 145 | 143,29 146 | 144,29 147 | 145,29 148 | 146,29 149 | 147,30 150 | 148,30 151 | 149,30 152 | 150,30 153 | 151,30 154 | 152,31 155 | 153,31 156 | 154,31 157 | 155,31 158 | 156,31 159 | 157,32 160 | 158,32 161 | 159,32 162 | 160,32 163 | 161,32 164 | 162,33 165 | 163,33 166 | 164,33 167 | 165,33 168 | 166,34 169 | 167,34 170 | 168,34 171 | 169,34 172 | 170,35 173 | 171,35 174 | 172,35 175 | 173,35 176 | 174,35 177 | 175,36 178 | 176,36 179 | 177,36 180 | 178,36 181 | 179,36 182 | 180,37 183 | 181,37 184 | 182,37 185 | 183,37 186 | 184,37 187 | 185,38 188 | 186,38 189 | 187,38 190 | 188,38 191 | 189,38 192 | 190,39 193 | 191,39 194 | 192,39 195 | 193,39 196 | 194,39 197 | 195,40 198 | 196,40 199 | 197,40 200 | 198,40 201 | 199,40 202 | 200,41 203 | 201,41 204 | 202,41 205 | 203,41 206 | 204,41 207 | 205,42 208 | 206,42 209 | 207,42 210 | 208,42 211 | 209,42 212 | 210,43 213 | 211,43 214 | 212,43 215 | 213,43 216 | 214,43 217 | 215,44 218 | 216,44 219 | 217,44 220 | 218,44 221 | 219,44 222 | 220,45 223 | 221,45 224 | 222,45 225 | 223,45 226 | 224,45 227 | 225,46 228 | 226,46 229 | 227,46 230 | 228,46 231 | 229,46 232 | 230,47 233 | 231,47 234 | 232,47 235 | 233,47 236 | 234,47 237 | 235,48 238 | 236,48 239 | 237,48 240 | 238,48 241 | 239,48 242 | 240,49 243 | 241,49 244 | 242,49 245 | 243,49 246 | 244,49 247 | 245,50 248 | 246,50 249 | 247,50 250 | 248,50 251 | 249,50 252 | 250,51 253 | 251,51 254 | 252,51 255 | 253,51 256 | 254,51 257 | 255,52 258 | 256,52 259 | 257,52 260 | 258,52 261 | 259,52 262 | 260,53 263 | 261,53 264 | 262,53 265 | 263,53 266 | 264,53 267 | 265,54 268 | 266,54 269 | 267,54 270 | 268,54 271 | 269,54 272 | 270,55 273 | 271,55 274 | 272,55 275 | 273,55 276 | 274,55 277 | 275,56 278 | 276,56 279 | 277,56 280 | 278,56 281 | 279,57 282 | 280,57 283 | 281,57 284 | 282,57 285 | 283,57 286 | 284,58 287 | 285,58 288 | 286,58 289 | 287,58 290 | 288,59 291 | 289,59 292 | 290,59 293 | 291,59 294 | 292,59 295 | 293,60 296 | 294,60 297 | 295,60 298 | 296,60 299 | 297,60 300 | 298,61 301 | 299,61 302 | 300,61 303 | 301,61 304 | 302,61 305 | 303,62 306 | 304,62 307 | 305,62 308 | 306,62 309 | 307,62 310 | 308,63 311 | 309,63 312 | 310,63 313 | 311,63 314 | 312,63 315 | 313,64 316 | 314,64 317 | 315,64 318 | 316,64 319 | 317,64 320 | 318,65 321 | 319,65 322 | 320,65 323 | 321,65 324 | 322,65 325 | 323,66 326 | 324,66 327 | 325,66 328 | 326,66 329 | 327,66 330 | 328,67 331 | 329,67 332 | 330,67 333 | 331,67 334 | 332,67 335 | 333,68 336 | 334,68 337 | 335,68 338 | 336,68 339 | 337,68 340 | 338,69 341 | 339,69 342 | 340,69 343 | 341,69 344 | 342,69 345 | 343,70 346 | 344,70 347 | 345,70 348 | 346,70 349 | 347,70 350 | 348,71 351 | 349,71 352 | 350,71 353 | 351,71 354 | 352,71 355 | 353,72 356 | 354,72 357 | 355,72 358 | 356,72 359 | 357,72 360 | 358,73 361 | 359,73 362 | 360,73 363 | 361,73 364 | 362,73 365 | 363,74 366 | 364,74 367 | 365,74 368 | 366,74 369 | 367,74 370 | 368,75 371 | 369,75 372 | 370,75 373 | 371,75 374 | 372,75 375 | 373,76 376 | 374,76 377 | 375,76 378 | 376,76 379 | 377,76 380 | 378,77 381 | 379,77 382 | 380,77 383 | 381,77 384 | 382,77 385 | 383,78 386 | 384,78 387 | 385,78 388 | 386,78 389 | 387,78 390 | 388,79 391 | 389,79 392 | 390,79 393 | 391,79 394 | 392,79 395 | 393,80 396 | 394,80 397 | 395,80 398 | 396,80 399 | 397,81 400 | 398,81 401 | 399,81 402 | 400,81 403 | 401,81 404 | 402,82 405 | 403,82 406 | 404,82 407 | 405,82 408 | 406,82 409 | 407,83 410 | 408,83 411 | 409,83 412 | 410,83 413 | 411,83 414 | 412,84 415 | 413,84 416 | 414,84 417 | 415,84 418 | 416,84 419 | 417,85 420 | 418,85 421 | 419,85 422 | 420,85 423 | 421,85 424 | 422,86 425 | 423,86 426 | 424,86 427 | 425,86 428 | 426,86 429 | 427,87 430 | 428,87 431 | 429,87 432 | 430,87 433 | 431,87 434 | 432,88 435 | 433,88 436 | 434,88 437 | 435,88 438 | 436,88 439 | 437,89 440 | 438,89 441 | 439,89 442 | 440,89 443 | 441,89 444 | 442,90 445 | 443,90 446 | 444,90 447 | 445,90 448 | 446,91 449 | 447,91 450 | 448,91 451 | 449,91 452 | 450,91 453 | 451,92 454 | 452,92 455 | 453,92 456 | 454,92 457 | 455,92 458 | 456,93 459 | 457,93 460 | 458,93 461 | 459,93 462 | 460,93 463 | 461,94 464 | 462,94 465 | 463,94 466 | 464,94 467 | 465,94 468 | 466,95 469 | 467,95 470 | 468,95 471 | 469,95 472 | 470,95 473 | 471,96 474 | 472,96 475 | 473,96 476 | 474,96 477 | 475,96 478 | 476,97 479 | 477,97 480 | 478,97 481 | 479,97 482 | 480,97 483 | 481,98 484 | 482,98 485 | 483,98 486 | 484,98 487 | 485,98 488 | 486,99 489 | 487,99 490 | 488,99 491 | 489,99 492 | 490,99 493 | 491,100 494 | 492,100 495 | 493,100 496 | 494,100 497 | 495,100 498 | 496,101 499 | 497,101 500 | 498,101 501 | 499,101 502 | 500,101 503 | 501,102 504 | 502,102 505 | 503,102 506 | 504,102 507 | 505,102 508 | 506,103 509 | 507,103 510 | 508,103 511 | 509,103 512 | 510,103 513 | 511,104 514 | 512,104 515 | 513,104 516 | 514,104 517 | 515,104 518 | 516,105 519 | 517,105 520 | 518,105 521 | 519,105 522 | 520,105 523 | 521,106 524 | 522,106 525 | 523,106 526 | 524,106 527 | 525,106 528 | 526,107 529 | 527,107 530 | 528,107 531 | 529,107 532 | 530,107 533 | 531,108 534 | 532,108 535 | 533,108 536 | 534,108 537 | 535,108 538 | 536,109 539 | 537,109 540 | 538,109 541 | 539,109 542 | 540,109 543 | 541,110 544 | 542,110 545 | 543,110 546 | 544,110 547 | 545,110 548 | 546,111 549 | 547,111 550 | 548,111 551 | 549,111 552 | 550,112 553 | 551,112 554 | 552,112 555 | 553,112 556 | 554,112 557 | 555,113 558 | 556,113 559 | 557,113 560 | 558,113 561 | 559,113 562 | 560,114 563 | 561,114 564 | 562,114 565 | 563,114 566 | 564,114 567 | 565,115 568 | 566,115 569 | 567,115 570 | 568,115 571 | 569,115 572 | 570,116 573 | 571,116 574 | 572,116 575 | 573,116 576 | 574,116 577 | 575,117 578 | 576,117 579 | 577,117 580 | 578,117 581 | 579,117 582 | 580,118 583 | 581,118 584 | 582,118 585 | 583,118 586 | 584,118 587 | 585,119 588 | 586,119 589 | 587,119 590 | 588,119 591 | 589,119 592 | 590,120 593 | 591,120 594 | 592,120 595 | 593,120 596 | 594,120 597 | 595,121 598 | 596,121 599 | 597,121 600 | 598,121 601 | 599,121 602 | 600,122 603 | 601,122 604 | 602,122 605 | 603,122 606 | 604,122 607 | 605,123 608 | 606,123 609 | 607,123 610 | 608,123 611 | 609,123 612 | 610,124 613 | 611,124 614 | 612,124 615 | 613,124 616 | 614,124 617 | 615,125 618 | 616,125 619 | 617,125 620 | 618,125 621 | 619,125 622 | 620,126 623 | 621,126 624 | 622,126 625 | 623,126 626 | 624,126 627 | 625,127 628 | 626,127 629 | 627,127 630 | 628,127 631 | 629,127 632 | 630,128 633 | 631,128 634 | 632,128 635 | 633,128 636 | 634,128 637 | 635,129 638 | 636,129 639 | 637,129 640 | 638,129 641 | 639,129 642 | 640,130 643 | 641,130 644 | 642,130 645 | 643,130 646 | 644,131 647 | 645,131 648 | 646,131 649 | 647,131 650 | 648,131 651 | 649,132 652 | 650,132 653 | 651,132 654 | 652,132 655 | 653,132 656 | 654,133 657 | 655,133 658 | 656,133 659 | 657,133 660 | 658,133 661 | 659,134 662 | 660,134 663 | 661,134 664 | 662,134 665 | 663,134 666 | 664,135 667 | 665,135 668 | 666,135 669 | 667,135 670 | 668,135 671 | 669,136 672 | 670,136 673 | 671,136 674 | 672,136 675 | 673,136 676 | 674,137 677 | 675,137 678 | 676,137 679 | 677,137 680 | 678,137 681 | 679,138 682 | 680,138 683 | 681,138 684 | 682,138 685 | 683,138 686 | 684,139 687 | 685,139 688 | 686,139 689 | 687,139 690 | 688,139 691 | 689,140 692 | 690,140 693 | 691,140 694 | 692,140 695 | 693,140 696 | 694,141 697 | 695,141 698 | 696,141 699 | 697,141 700 | 698,142 701 | 699,142 702 | 700,142 703 | 701,142 704 | 702,142 705 | 703,143 706 | 704,143 707 | 705,143 708 | 706,143 709 | 707,143 710 | 708,144 711 | 709,144 712 | 710,144 713 | 711,144 714 | 712,144 715 | 713,145 716 | 714,145 717 | 715,145 718 | 716,145 719 | 717,146 720 | 718,146 721 | 719,146 722 | 720,146 723 | 721,146 724 | 722,147 725 | 723,147 726 | 724,147 727 | 725,147 728 | 726,147 729 | 727,148 730 | 728,148 731 | 729,148 732 | 730,148 733 | 731,148 734 | 732,149 735 | 733,149 736 | 734,149 737 | 735,149 738 | 736,149 739 | 737,150 740 | 738,150 741 | 739,150 742 | 740,150 743 | 741,150 744 | 742,151 745 | 743,151 746 | 744,151 747 | 745,151 748 | 746,151 749 | 747,152 750 | 748,152 751 | 749,152 752 | 750,152 753 | 751,152 754 | 752,153 755 | 753,153 756 | 754,153 757 | 755,153 758 | 756,153 759 | 757,154 760 | 758,154 761 | 759,154 762 | 760,154 763 | 761,154 764 | 762,155 765 | 763,155 766 | 764,155 767 | 765,155 768 | 766,156 769 | 767,156 770 | 768,156 771 | 769,156 772 | 770,156 773 | 771,157 774 | 772,157 775 | 773,157 776 | 774,157 777 | 775,157 778 | 776,158 779 | 777,158 780 | 778,158 781 | 779,158 782 | 780,158 783 | 781,159 784 | 782,159 785 | 783,159 786 | 784,159 787 | 785,159 788 | 786,160 789 | 787,160 790 | 788,160 791 | 789,160 792 | 790,160 793 | 791,161 794 | 792,161 795 | 793,161 796 | 794,161 797 | 795,162 798 | 796,162 799 | 797,162 800 | 798,162 801 | 799,162 802 | 800,163 803 | 801,163 804 | 802,163 805 | 803,163 806 | 804,163 807 | 805,164 808 | 806,164 809 | 807,164 810 | 808,164 811 | 809,164 812 | 810,165 813 | 811,165 814 | 812,165 815 | 813,165 816 | 814,165 817 | 815,166 818 | 816,166 819 | 817,166 820 | 818,166 821 | 819,167 822 | 820,167 823 | 821,167 824 | 822,167 825 | 823,167 826 | 824,168 827 | 825,168 828 | 826,168 829 | 827,168 830 | 828,168 831 | 829,169 832 | 830,169 833 | 831,169 834 | 832,169 835 | 833,169 836 | 834,170 837 | 835,170 838 | 836,170 839 | 837,170 840 | 838,170 841 | 839,171 842 | 840,171 843 | 841,171 844 | 842,171 845 | 843,171 846 | 844,172 847 | 845,172 848 | 846,172 849 | 847,172 850 | 848,172 851 | 849,173 852 | 850,173 853 | 851,173 854 | 852,173 855 | 853,173 856 | 854,174 857 | 855,174 858 | 856,174 859 | 857,174 860 | 858,174 861 | 859,175 862 | 860,175 863 | 861,175 864 | 862,175 865 | 863,175 866 | 864,176 867 | 865,176 868 | 866,176 869 | 867,176 870 | 868,176 871 | 869,177 872 | 870,177 873 | 871,177 874 | 872,177 875 | 873,177 876 | 874,178 877 | 875,178 878 | 876,178 879 | 877,178 880 | 878,178 881 | 879,179 882 | 880,179 883 | 881,179 884 | 882,179 885 | 883,179 886 | 884,180 887 | 885,180 888 | 886,180 889 | 887,180 890 | 888,181 891 | 889,181 892 | 890,181 893 | 891,181 894 | 892,182 895 | 893,182 896 | 894,182 897 | 895,182 898 | 896,182 899 | 897,183 900 | 898,183 901 | 899,183 902 | 900,183 903 | 901,183 904 | 902,184 905 | 903,184 906 | 904,184 907 | 905,184 908 | 906,184 909 | 907,185 910 | 908,185 911 | 909,185 912 | 910,185 913 | 911,185 914 | 912,186 915 | 913,186 916 | 914,186 917 | 915,186 918 | 916,187 919 | 917,187 920 | 918,187 921 | 919,187 922 | 920,187 923 | 921,188 924 | 922,188 925 | 923,188 926 | 924,188 927 | 925,188 928 | 926,189 929 | 927,189 930 | 928,189 931 | 929,189 932 | 930,189 933 | 931,190 934 | 932,190 935 | 933,190 936 | 934,190 937 | 935,190 938 | 936,191 939 | 937,191 940 | 938,191 941 | 939,191 942 | 940,192 943 | 941,192 944 | 942,192 945 | 943,192 946 | 944,192 947 | 945,193 948 | 946,193 949 | 947,193 950 | 948,193 951 | 949,193 952 | 950,194 953 | 951,194 954 | 952,194 955 | 953,194 956 | 954,194 957 | 955,195 958 | 956,195 959 | 957,195 960 | 958,195 961 | 959,195 962 | 960,196 963 | 961,196 964 | 962,196 965 | 963,196 966 | 964,196 967 | 965,197 968 | 966,197 969 | 967,197 970 | 968,197 971 | 969,197 972 | 970,198 973 | 971,198 974 | 972,198 975 | 973,198 976 | 974,198 977 | 975,199 978 | 976,199 979 | 977,199 980 | 978,199 981 | 979,199 982 | 980,200 983 | 981,200 984 | 982,200 985 | 983,200 986 | 984,200 987 | 985,201 988 | 986,201 989 | 987,201 990 | 988,201 991 | 989,201 992 | 990,202 993 | 991,202 994 | 992,202 995 | 993,202 996 | 994,202 997 | 995,203 998 | 996,203 999 | 997,203 1000 | 998,203 1001 | 999,203 1002 | 1000,204 1003 | 1001,204 1004 | 1002,204 1005 | 1003,204 1006 | 1004,204 1007 | 1005,205 1008 | 1006,205 1009 | 1007,205 1010 | 1008,205 1011 | 1009,205 1012 | 1010,206 1013 | 1011,206 1014 | 1012,206 1015 | 1013,206 1016 | 1014,206 1017 | 1015,207 1018 | 1016,207 1019 | 1017,207 1020 | 1018,207 1021 | 1019,207 1022 | 1020,208 1023 | 1021,208 1024 | 1022,208 1025 | 1023,208 1026 | 1024,208 1027 | 1025,209 1028 | 1026,209 1029 | 1027,209 1030 | 1028,209 1031 | 1029,210 1032 | 1030,210 1033 | 1031,210 1034 | 1032,210 1035 | 1033,210 1036 | 1034,211 1037 | 1035,211 1038 | 1036,211 1039 | 1037,211 1040 | 1038,211 1041 | 1039,212 1042 | 1040,212 1043 | 1041,212 1044 | 1042,212 1045 | 1043,212 1046 | 1044,213 1047 | 1045,213 1048 | 1046,213 1049 | 1047,213 1050 | 1048,213 1051 | 1049,214 1052 | 1050,214 1053 | 1051,214 1054 | 1052,214 1055 | 1053,214 1056 | 1054,215 1057 | 1055,215 1058 | 1056,215 1059 | 1057,215 1060 | 1058,215 1061 | 1059,216 1062 | 1060,216 1063 | 1061,216 1064 | 1062,216 1065 | 1063,216 1066 | 1064,217 1067 | 1065,217 1068 | 1066,217 1069 | 1067,217 1070 | 1068,217 1071 | 1069,218 1072 | 1070,218 1073 | 1071,218 1074 | 1072,218 1075 | 1073,218 1076 | 1074,219 1077 | 1075,219 1078 | 1076,219 1079 | 1077,219 1080 | 1078,219 1081 | 1079,220 1082 | 1080,220 1083 | 1081,220 1084 | 1082,220 1085 | 1083,220 1086 | 1084,221 1087 | 1085,221 1088 | 1086,221 1089 | 1087,221 1090 | 1088,221 1091 | 1089,222 1092 | 1090,222 1093 | 1091,222 1094 | 1092,222 1095 | 1093,222 1096 | 1094,223 1097 | 1095,223 1098 | 1096,223 1099 | 1097,223 1100 | 1098,223 1101 | 1099,224 1102 | 1100,224 1103 | 1101,224 1104 | 1102,224 1105 | 1103,224 1106 | 1104,225 1107 | 1105,225 1108 | 1106,225 1109 | 1107,225 1110 | 1108,225 1111 | 1109,226 1112 | 1110,226 1113 | 1111,226 1114 | 1112,226 1115 | 1113,226 1116 | 1114,227 1117 | 1115,227 1118 | 1116,227 1119 | 1117,227 1120 | 1118,227 1121 | 1119,228 1122 | 1120,228 1123 | 1121,228 1124 | 1122,228 1125 | 1123,229 1126 | 1124,229 1127 | 1125,229 1128 | 1126,229 1129 | 1127,229 1130 | 1128,230 1131 | 1129,230 1132 | 1130,230 1133 | 1131,230 1134 | 1132,230 1135 | 1133,231 1136 | 1134,231 1137 | 1135,231 1138 | 1136,231 1139 | 1137,231 1140 | 1138,232 1141 | 1139,232 1142 | 1140,232 1143 | 1141,232 1144 | 1142,232 1145 | 1143,233 1146 | 1144,233 1147 | 1145,233 1148 | 1146,233 1149 | 1147,233 1150 | 1148,234 1151 | 1149,234 1152 | 1150,234 1153 | 1151,234 1154 | 1152,234 1155 | 1153,235 1156 | 1154,235 1157 | 1155,235 1158 | 1156,235 1159 | 1157,235 1160 | 1158,236 1161 | 1159,236 1162 | 1160,236 1163 | 1161,236 1164 | 1162,236 1165 | 1163,237 1166 | 1164,237 1167 | 1165,237 1168 | 1166,237 1169 | 1167,237 1170 | 1168,238 1171 | 1169,238 1172 | 1170,238 1173 | 1171,238 1174 | 1172,238 1175 | 1173,239 1176 | 1174,239 1177 | 1175,239 1178 | 1176,239 1179 | 1177,239 1180 | 1178,240 1181 | 1179,240 1182 | 1180,240 1183 | 1181,240 1184 | 1182,240 1185 | 1183,241 1186 | 1184,241 1187 | 1185,241 1188 | 1186,241 1189 | 1187,241 1190 | 1188,242 1191 | 1189,242 1192 | 1190,242 1193 | 1191,242 1194 | 1192,243 1195 | 1193,243 1196 | 1194,243 1197 | 1195,243 1198 | 1196,243 1199 | 1197,244 1200 | 1198,244 1201 | 1199,244 1202 | 1200,244 1203 | 1201,244 1204 | 1202,245 1205 | 1203,245 1206 | 1204,245 1207 | 1205,245 1208 | 1206,245 1209 | 1207,246 1210 | 1208,246 1211 | 1209,246 1212 | 1210,246 1213 | 1211,246 1214 | 1212,247 1215 | 1213,247 1216 | 1214,247 1217 | 1215,247 1218 | 1216,247 1219 | 1217,248 1220 | 1218,248 1221 | 1219,248 1222 | 1220,248 1223 | 1221,248 1224 | 1222,249 1225 | 1223,249 1226 | 1224,249 1227 | 1225,249 1228 | 1226,249 1229 | -------------------------------------------------------------------------------- /backend/spider/database_250/genre.csv: -------------------------------------------------------------------------------- 1 | id,name 2 | 0,剧情 3 | 1,犯罪 4 | 2,爱情 5 | 3,同性 6 | 4,灾难 7 | 5,动作 8 | 6,动画 9 | 7,奇幻 10 | 8,喜剧 11 | 9,战争 12 | 10,科幻 13 | 11,冒险 14 | 12,悬疑 15 | 13,历史 16 | 14,音乐 17 | 15,歌舞 18 | 16,惊悚 19 | 17,古装 20 | 18,家庭 21 | 19,传记 22 | 20,西部 23 | 21,运动 24 | 22,情色 25 | 23,儿童 26 | 24,纪录片 27 | 25,武侠 28 | 26,恐怖 29 | -------------------------------------------------------------------------------- /backend/spider/database_250/movie_genre.csv: -------------------------------------------------------------------------------- 1 | movie_id,genre_id 2 | 0,0 3 | 0,1 4 | 1,0 5 | 1,2 6 | 1,3 7 | 2,0 8 | 2,2 9 | 3,0 10 | 3,2 11 | 3,4 12 | 4,0 13 | 4,5 14 | 4,1 15 | 5,0 16 | 5,6 17 | 5,7 18 | 6,0 19 | 6,8 20 | 6,2 21 | 6,9 22 | 7,0 23 | 7,10 24 | 7,11 25 | 8,0 26 | 8,10 27 | 8,12 28 | 8,11 29 | 9,0 30 | 9,13 31 | 9,9 32 | 10,0 33 | 10,10 34 | 11,0 35 | 12,0 36 | 12,14 37 | 13,0 38 | 13,8 39 | 13,2 40 | 13,15 41 | 14,0 42 | 14,14 43 | 15,10 44 | 15,6 45 | 15,11 46 | 16,8 47 | 16,6 48 | 16,11 49 | 17,0 50 | 17,16 51 | 17,1 52 | 18,0 53 | 18,12 54 | 18,1 55 | 19,8 56 | 19,2 57 | 19,7 58 | 19,17 59 | 20,0 60 | 21,0 61 | 21,1 62 | 22,0 63 | 22,8 64 | 23,0 65 | 23,18 66 | 23,19 67 | 24,8 68 | 24,6 69 | 24,14 70 | 24,7 71 | 25,0 72 | 25,19 73 | 25,13 74 | 26,6 75 | 26,7 76 | 26,11 77 | 27,0 78 | 27,8 79 | 27,2 80 | 28,0 81 | 28,18 82 | 28,13 83 | 29,7 84 | 29,11 85 | 30,0 86 | 30,5 87 | 30,10 88 | 30,16 89 | 30,1 90 | 31,0 91 | 31,5 92 | 31,7 93 | 31,11 94 | 32,0 95 | 32,8 96 | 33,0 97 | 33,2 98 | 33,13 99 | 33,9 100 | 34,0 101 | 34,8 102 | 34,6 103 | 34,11 104 | 35,0 105 | 36,6 106 | 36,7 107 | 36,11 108 | 37,0 109 | 38,0 110 | 39,0 111 | 39,8 112 | 39,5 113 | 39,20 114 | 40,0 115 | 40,18 116 | 40,19 117 | 40,21 118 | 41,0 119 | 41,19 120 | 41,1 121 | 42,6 122 | 42,7 123 | 42,11 124 | 43,0 125 | 43,8 126 | 44,0 127 | 44,7 128 | 44,11 129 | 45,0 130 | 45,18 131 | 45,11 132 | 46,0 133 | 46,14 134 | 46,19 135 | 46,9 136 | 47,8 137 | 47,2 138 | 47,7 139 | 47,17 140 | 48,0 141 | 48,5 142 | 48,7 143 | 48,11 144 | 49,0 145 | 50,0 146 | 51,0 147 | 51,8 148 | 51,14 149 | 51,19 150 | 52,0 151 | 52,8 152 | 52,2 153 | 53,0 154 | 53,6 155 | 53,7 156 | 53,17 157 | 54,0 158 | 54,2 159 | 55,0 160 | 55,5 161 | 55,7 162 | 55,11 163 | 56,5 164 | 56,10 165 | 57,0 166 | 57,1 167 | 58,6 168 | 58,15 169 | 58,11 170 | 59,0 171 | 60,0 172 | 60,18 173 | 61,0 174 | 61,5 175 | 61,12 176 | 61,16 177 | 62,0 178 | 62,2 179 | 62,7 180 | 63,0 181 | 63,19 182 | 64,0 183 | 64,9 184 | 65,0 185 | 65,12 186 | 66,0 187 | 66,2 188 | 67,0 189 | 67,8 190 | 67,1 191 | 68,0 192 | 68,22 193 | 68,9 194 | 69,0 195 | 69,12 196 | 69,16 197 | 69,1 198 | 70,0 199 | 70,2 200 | 70,15 201 | 70,19 202 | 71,5 203 | 71,10 204 | 71,11 205 | 72,7 206 | 72,11 207 | 73,0 208 | 73,9 209 | 74,0 210 | 75,0 211 | 75,18 212 | 75,23 213 | 76,0 214 | 76,16 215 | 76,1 216 | 77,0 217 | 77,8 218 | 77,11 219 | 78,8 220 | 78,5 221 | 78,1 222 | 78,7 223 | 79,0 224 | 79,12 225 | 79,16 226 | 80,0 227 | 80,10 228 | 80,12 229 | 80,16 230 | 81,0 231 | 81,12 232 | 81,16 233 | 82,7 234 | 82,11 235 | 83,0 236 | 84,0 237 | 85,0 238 | 85,8 239 | 85,1 240 | 86,24 241 | 87,0 242 | 87,8 243 | 87,2 244 | 88,0 245 | 88,2 246 | 88,3 247 | 89,0 248 | 89,1 249 | 90,0 250 | 90,8 251 | 90,2 252 | 91,0 253 | 91,12 254 | 91,16 255 | 92,0 256 | 92,5 257 | 92,12 258 | 92,16 259 | 92,1 260 | 93,0 261 | 93,12 262 | 93,16 263 | 93,1 264 | 94,10 265 | 94,6 266 | 94,12 267 | 94,16 268 | 95,5 269 | 95,7 270 | 95,11 271 | 96,7 272 | 96,11 273 | 97,0 274 | 97,2 275 | 97,18 276 | 98,0 277 | 99,8 278 | 99,2 279 | 99,17 280 | 100,0 281 | 100,8 282 | 100,18 283 | 101,0 284 | 101,15 285 | 102,0 286 | 102,5 287 | 102,10 288 | 102,16 289 | 102,1 290 | 103,0 291 | 103,2 292 | 103,3 293 | 104,0 294 | 104,2 295 | 105,0 296 | 105,2 297 | 105,3 298 | 105,18 299 | 106,0 300 | 106,2 301 | 106,7 302 | 107,0 303 | 108,0 304 | 108,12 305 | 108,16 306 | 109,0 307 | 109,2 308 | 110,0 309 | 110,5 310 | 110,19 311 | 110,13 312 | 110,9 313 | 111,8 314 | 111,5 315 | 111,10 316 | 111,6 317 | 111,11 318 | 112,0 319 | 112,2 320 | 113,6 321 | 113,7 322 | 113,11 323 | 114,0 324 | 114,2 325 | 115,0 326 | 115,8 327 | 116,6 328 | 116,7 329 | 116,11 330 | 117,0 331 | 117,12 332 | 117,16 333 | 117,1 334 | 118,0 335 | 119,0 336 | 119,2 337 | 120,0 338 | 120,8 339 | 120,2 340 | 121,0 341 | 121,1 342 | 122,0 343 | 123,2 344 | 123,7 345 | 123,25 346 | 123,17 347 | 124,0 348 | 125,8 349 | 125,2 350 | 125,7 351 | 126,0 352 | 126,2 353 | 126,6 354 | 127,6 355 | 127,16 356 | 127,7 357 | 128,12 358 | 128,7 359 | 128,11 360 | 129,0 361 | 129,8 362 | 129,2 363 | 130,6 364 | 130,7 365 | 130,11 366 | 131,0 367 | 132,0 368 | 133,0 369 | 133,1 370 | 134,8 371 | 134,6 372 | 134,23 373 | 134,7 374 | 134,11 375 | 135,8 376 | 135,6 377 | 135,7 378 | 135,11 379 | 136,0 380 | 136,2 381 | 137,0 382 | 137,2 383 | 137,6 384 | 137,7 385 | 138,0 386 | 138,1 387 | 139,5 388 | 139,16 389 | 139,4 390 | 140,0 391 | 140,5 392 | 140,20 393 | 140,11 394 | 141,8 395 | 141,6 396 | 141,11 397 | 142,0 398 | 142,13 399 | 143,0 400 | 143,12 401 | 144,0 402 | 144,8 403 | 144,6 404 | 145,6 405 | 145,7 406 | 145,11 407 | 146,0 408 | 146,18 409 | 146,7 410 | 146,11 411 | 147,0 412 | 147,2 413 | 147,22 414 | 148,0 415 | 148,8 416 | 148,17 417 | 149,0 418 | 149,8 419 | 149,2 420 | 149,3 421 | 149,18 422 | 150,0 423 | 150,3 424 | 150,19 425 | 150,9 426 | 151,5 427 | 151,10 428 | 151,11 429 | 152,8 430 | 152,7 431 | 152,25 432 | 152,17 433 | 153,0 434 | 153,2 435 | 154,0 436 | 154,18 437 | 155,8 438 | 155,6 439 | 155,11 440 | 156,0 441 | 156,8 442 | 157,0 443 | 157,5 444 | 157,11 445 | 158,0 446 | 158,19 447 | 158,13 448 | 158,9 449 | 159,0 450 | 159,12 451 | 159,1 452 | 160,12 453 | 160,16 454 | 160,26 455 | 161,5 456 | 161,10 457 | 162,0 458 | 162,2 459 | 162,6 460 | 163,12 461 | 163,16 462 | 163,26 463 | 164,0 464 | 164,1 465 | 165,0 466 | 165,3 467 | 165,19 468 | 166,8 469 | 166,6 470 | 166,11 471 | 167,0 472 | 167,12 473 | 167,1 474 | 168,5 475 | 168,12 476 | 168,16 477 | 169,0 478 | 169,5 479 | 169,1 480 | 170,0 481 | 170,1 482 | 171,6 483 | 171,7 484 | 171,11 485 | 172,0 486 | 172,8 487 | 172,5 488 | 172,1 489 | 173,0 490 | 173,19 491 | 173,13 492 | 173,9 493 | 174,0 494 | 174,18 495 | 175,0 496 | 175,2 497 | 176,0 498 | 176,12 499 | 176,1 500 | 176,7 501 | 177,0 502 | 177,16 503 | 177,1 504 | 178,0 505 | 178,12 506 | 178,16 507 | 178,1 508 | 179,8 509 | 179,1 510 | 180,0 511 | 181,8 512 | 181,2 513 | 181,15 514 | 182,6 515 | 182,14 516 | 182,7 517 | 183,10 518 | 183,16 519 | 183,11 520 | 184,0 521 | 184,18 522 | 185,0 523 | 186,0 524 | 186,16 525 | 186,1 526 | 187,0 527 | 187,8 528 | 187,1 529 | 188,0 530 | 188,18 531 | 188,1 532 | 189,8 533 | 189,6 534 | 189,7 535 | 189,11 536 | 190,0 537 | 190,14 538 | 191,8 539 | 191,6 540 | 191,11 541 | 192,0 542 | 192,12 543 | 192,16 544 | 193,0 545 | 193,2 546 | 194,0 547 | 194,1 548 | 195,0 549 | 195,5 550 | 195,2 551 | 195,25 552 | 195,17 553 | 196,6 554 | 196,7 555 | 196,11 556 | 197,0 557 | 197,8 558 | 197,11 559 | 198,0 560 | 198,8 561 | 198,6 562 | 199,0 563 | 199,8 564 | 200,0 565 | 200,6 566 | 200,23 567 | 201,0 568 | 201,1 569 | 202,0 570 | 202,8 571 | 202,2 572 | 203,0 573 | 203,16 574 | 204,0 575 | 204,8 576 | 204,2 577 | 205,10 578 | 205,12 579 | 205,16 580 | 206,0 581 | 206,18 582 | 207,0 583 | 208,0 584 | 208,3 585 | 208,14 586 | 208,19 587 | 209,0 588 | 209,8 589 | 209,2 590 | 210,0 591 | 210,2 592 | 211,0 593 | 211,2 594 | 211,7 595 | 211,17 596 | 212,0 597 | 212,10 598 | 213,0 599 | 213,16 600 | 213,1 601 | 214,8 602 | 214,9 603 | 215,5 604 | 215,10 605 | 216,5 606 | 216,10 607 | 216,11 608 | 217,0 609 | 217,12 610 | 217,1 611 | 218,5 612 | 218,2 613 | 218,25 614 | 218,17 615 | 219,0 616 | 219,1 617 | 220,0 618 | 220,10 619 | 220,16 620 | 221,6 621 | 221,7 622 | 221,11 623 | 222,0 624 | 222,2 625 | 223,0 626 | 223,6 627 | 223,9 628 | 224,0 629 | 224,2 630 | 225,10 631 | 225,12 632 | 225,16 633 | 226,0 634 | 226,2 635 | 226,15 636 | 227,0 637 | 227,18 638 | 227,23 639 | 228,5 640 | 228,10 641 | 229,24 642 | 230,7 643 | 230,11 644 | 231,0 645 | 231,16 646 | 231,11 647 | 232,0 648 | 232,1 649 | 233,0 650 | 233,10 651 | 233,11 652 | 234,0 653 | 234,18 654 | 235,0 655 | 235,18 656 | 236,0 657 | 236,2 658 | 236,9 659 | 237,0 660 | 237,2 661 | 237,6 662 | 238,5 663 | 238,12 664 | 238,16 665 | 239,0 666 | 239,8 667 | 239,11 668 | 240,7 669 | 240,11 670 | 241,0 671 | 241,18 672 | 241,19 673 | 241,21 674 | 242,5 675 | 242,10 676 | 242,6 677 | 242,11 678 | 243,0 679 | 243,9 680 | 244,5 681 | 244,12 682 | 244,16 683 | 245,0 684 | 245,2 685 | 245,1 686 | 246,0 687 | 246,2 688 | 247,8 689 | 247,2 690 | 247,14 691 | 248,0 692 | 248,2 693 | 248,9 694 | 248,20 695 | 249,0 696 | -------------------------------------------------------------------------------- /backend/spider/generate_userdict.py: -------------------------------------------------------------------------------- 1 | import os.path 2 | 3 | import pandas as pd 4 | 5 | movie = pd.read_csv('database_1000/movie.csv')[['name']] 6 | actor = pd.read_csv('database_1000/actor.csv')[['name', 'english_name']] 7 | actor['name'] = actor['name'].str.strip() 8 | actor['english_name'] = actor['english_name'].str.strip() 9 | genre = pd.read_csv('database_250/genre.csv')[['name']] 10 | 11 | # print(len(movie), movie.iloc[1]['name']) 12 | # print(len(actor), actor.iloc[1]['name'], actor.iloc[1]['english_name']) 13 | # print(len(genre), genre.iloc[1]['name']) 14 | 15 | output_folder = './database_1000' 16 | 17 | with open(f'{output_folder}/userdict_1000.txt', mode='w', encoding='utf-8') as f: 18 | for i in range(len(movie)): 19 | f.write(f'{movie.iloc[i]["name"]} nm\n') 20 | for i in range(len(actor)): 21 | f.write(f'{actor.iloc[i]["name"].replace("·", "")} nr\n') 22 | if type(actor.iloc[i]["english_name"]) == str: 23 | f.write(f'{actor.iloc[i]["english_name"].replace(" ", "")} nr\n') 24 | else: 25 | f.write(f'{str(actor.iloc[i]["english_name"]).replace(" ", "")} nr\n') 26 | for i in range(len(genre)): 27 | f.write(f'{genre.iloc[i]["name"]} ng\n') 28 | 29 | -------------------------------------------------------------------------------- /backend/spider/import_data_cql.txt: -------------------------------------------------------------------------------- 1 | //从CSV加载数据,然后存入数据库 2 | LOAD CSV WITH HEADERS FROM "file:///genre.csv" AS line 3 | MERGE (g:Genre{id:toInteger(line.id),name:line.name}) 4 | 5 | LOAD CSV WITH HEADERS FROM 'file:///actor.csv' AS line 6 | MERGE (a:Actor { id:toInteger(line.id), birthday:COALESCE(line.birthday, "None"), image:COALESCE(line.image, "None"), 7 | deathday:COALESCE(line.deathday, "None"), name:line.name, english_name:COALESCE(line.english_name, "None"), 8 | biography:COALESCE(line.biography, "None"),birthplace:COALESCE(line.birthplace, "None")}) 9 | 10 | LOAD CSV WITH HEADERS FROM "file:///movie.csv" AS line 11 | MERGE (m:Movie{id:toInteger(line.id), name:line.name, introduction:line.introduction, rating:toFloat(line.rating), 12 | release_date:line.release_date, image:line.image}) 13 | 14 | LOAD CSV WITH HEADERS FROM "file:////actor_movie.csv" AS line 15 | match (from:Actor{id:toInteger(line.actor_id)}),(to:Movie{id:toInteger(line.movie_id)}) 16 | merge (from)-[r:STARS_IN{id:toInteger(line.actor_id),id:toInteger(line.movie_id)}]->(to) 17 | 18 | LOAD CSV WITH HEADERS FROM "file:///movie_genre.csv" AS line 19 | match (from:Movie{id:toInteger(line.movie_id)}),(to:Genre{id:toInteger(line.genre_id)}) 20 | merge (from)-[r:BELONGS_TO{id:toInteger(line.movie_id),id:toInteger(line.genre_id)}]->(to) -------------------------------------------------------------------------------- /backend/spider/main_1000.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import re 3 | 4 | import requests 5 | from bs4 import BeautifulSoup 6 | 7 | 8 | class Movie: 9 | """ 10 | Movie Object 11 | """ 12 | total_movies = 0 13 | 14 | def __init__(self): 15 | self.id = Movie.total_movies 16 | Movie.total_movies += 1 17 | 18 | self.imgUrl = None 19 | self.name = None 20 | self.rating = None 21 | self.introduction = None 22 | self.releaseDate = [] 23 | 24 | self.genre = [] 25 | self.director = None 26 | self.actor = [] 27 | 28 | def to_csv(self): 29 | return [self.id, self.name, self.rating, self.releaseDate, self.genre, self.director, self.imgUrl, self.introduction] 30 | 31 | 32 | class Actor: 33 | """ 34 | 演员 35 | """ 36 | total_actors = 0 37 | 38 | def __init__(self): 39 | self.id = Actor.total_actors 40 | Actor.total_actors += 1 41 | 42 | self.imgUrl = None 43 | self.name = None 44 | self.gender = None 45 | self.birth = None 46 | self.birthplace = None 47 | self.death = None 48 | self.biography = None 49 | 50 | def to_csv(self, movie_id): 51 | return [self.id, self.name, self.gender, self.birth, self.death, self.birthplace, self.imgUrl, self.biography, movie_id] 52 | 53 | 54 | target_url = 'https://movie.douban.com/top250' 55 | 56 | headers = { 57 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0', 58 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' 59 | } 60 | 61 | 62 | # response = requests.get(url=target_url, headers=headers) 63 | # html = response.text 64 | # 65 | # # 将文本内容保存到本地文件 66 | # with open('douban-top250.htmlhtml', 'w', encoding='utf-8') as file: 67 | # file.write(html) 68 | 69 | # status_code = response.status_code 70 | # status_code = 200 71 | 72 | 73 | def analysisDoubanTop1000part25(html: requests.Response.text): 74 | """ 75 | 一页电影列表 25部 76 | :param html: 77 | :return: 一页电影中的所有电影详情url 78 | """ 79 | soup = BeautifulSoup(html, 'html.parser') 80 | 81 | movies_info = soup.find(class_='article') 82 | movies_list = movies_info.findAll('div', class_='doulist-item') 83 | movies_url = [] 84 | for movie in movies_list: 85 | a = movie.findNext(class_='post').find_next('a') 86 | movie_url = a['href'] 87 | movies_url.append(movie_url) 88 | 89 | return movies_url 90 | 91 | 92 | def analysisActor(html: requests.Response.text, movie: Movie): 93 | """ 94 | 单个演员 95 | :param html: 96 | :param movie: 演员信息 追加到这里面 97 | """ 98 | # self.id = None 99 | # self.name = None 100 | # self.gender = None 101 | # self.birth = None 102 | # self.death = None 103 | # self.biography = None 104 | actor = Actor() 105 | 106 | soup = BeautifulSoup(html, 'html.parser') 107 | content = soup.find('div', id='content') 108 | 109 | # 追加img 110 | imgUrl = content.find('div', class_='pic').find('img')['src'] 111 | actor.imgUrl = imgUrl 112 | 113 | name = content.find_next('h1').text.strip() 114 | actor.name = name 115 | 116 | li_list = content.find('div', class_='info').find_all('li') 117 | for li in li_list: 118 | # gender 119 | if li.find_next('span').text.strip() == '性别': 120 | gender = li.text.split(':')[1].replace('\n', '').strip() 121 | actor.gender = gender 122 | if li.find_next('span').text.strip() == '出生日期': 123 | birth = li.text.split(':')[1].replace('\n', '').strip() 124 | actor.birth = birth 125 | 126 | if li.find_next('span').text.strip() == '生卒日期': 127 | date = li.text.split(':')[1].replace('\n', '').replace(' ', '').split('至') 128 | birth = date[0] 129 | death = date[1] 130 | actor.birth = birth 131 | actor.death = death 132 | 133 | if li.find_next('span').text.strip() == '出生地': 134 | birthplace = li.text.split(':')[1].replace('\n', '').strip() 135 | actor.birthplace = birthplace 136 | 137 | biographyEl = content.find('span', class_='short') 138 | 139 | bi = content.find('div', id='intro', class_='mod').find('div', class_='bd').find('span', class_='all hidden') 140 | if bi is not None: 141 | bi = bi.text.replace('
', '').replace("\n", '').strip() 142 | if biographyEl is not None: 143 | biography = replace_multiple_spaces(biographyEl.text.replace('
', '').replace("\n", '').strip()) 144 | else: 145 | biography = replace_multiple_spaces(content.find('div', id='intro', class_='mod') 146 | .find('div', class_='bd').text 147 | .replace('
', '').replace("\n", '').strip()) 148 | 149 | if bi is not None: 150 | actor.biography = bi 151 | else: 152 | actor.biography = biography 153 | 154 | movie.actor.append(actor) 155 | # 打印对象的属性信息 156 | # for key, value in actor.__dict__.items(): 157 | # print(f"{key}: {value}") 158 | 159 | 160 | def replace_multiple_spaces(string): 161 | # 使用正则表达式将多个连续空格替换为一个空格 162 | pattern = re.compile(r'\s+') 163 | replaced_string = re.sub(pattern, ' ', string) 164 | return replaced_string 165 | 166 | 167 | def analysisMovie(html: requests.Response.text, movie: Movie): 168 | """ 169 | 单部电影 170 | :param html: 171 | :param movie: 172 | """ 173 | soup = BeautifulSoup(html, 'html.parser') 174 | # 23-12-10 追加imgUrl 175 | imgUrl = soup.find('div', {'id': 'content'}).find('div', {'id': 'mainpic'}).find('img')['src'].strip() 176 | movie.imgUrl = imgUrl 177 | # movie name 178 | title = soup.find('head').find('title').text.strip().split("(")[0] 179 | movie.name = title 180 | # movie rating 181 | rating = soup.find(class_='ll rating_num').text 182 | movie.rating = rating 183 | # movie introduction 184 | spanBox = soup.find(class_='related-info').find(class_='indent').find_all('span') 185 | introduction = None 186 | for span in spanBox: 187 | if span.get('property') == 'v:summary': 188 | introduction = replace_multiple_spaces(span.text.replace('
', '').replace('\n', '').strip()) 189 | 190 | intro = soup.find(class_='related-info').find(class_='indent').find(class_='all hidden') 191 | if intro: 192 | intro = replace_multiple_spaces(intro.text.replace('
', '').replace('\n', '').strip()) 193 | movie.introduction = intro 194 | else: 195 | movie.introduction = introduction 196 | 197 | movie_subject = soup.find('div', class_='subject clearfix') 198 | spanBox = movie_subject.find_all('span') 199 | for span in spanBox: 200 | # movie releaseDate 201 | if span.get('property') == 'v:initialReleaseDate': 202 | movie.releaseDate.append(span.text) 203 | # movie genre 204 | if span.get('property') == 'v:genre': 205 | movie.genre.append(span.text) 206 | 207 | li_list = soup.find('ul', class_='celebrities-list from-subject __oneline').find_all('li') 208 | for li in li_list: 209 | try: 210 | personName = li.find_all('span')[0].find('a').text.strip() 211 | roleName = li.find_all('span')[1].text.strip() 212 | except IndexError: 213 | return 214 | # 导演 215 | if roleName == '导演': 216 | movie.director = personName 217 | continue 218 | # 演员 219 | a_url = li.find_next('a').get('href') 220 | response = requests.get(url=a_url, headers=headers) 221 | if response.status_code == 200: 222 | print(f'抓取演员页面成功') 223 | actor_html = response.text 224 | 225 | # 将文本内容保存到本地文件 226 | # with open('actor.html', 'r', encoding='utf-8') as file: 227 | # file.read() 228 | # file.write(actor_html) 229 | 230 | analysisActor(actor_html, movie) 231 | else: 232 | print(f'status_code is {response.status_code}') 233 | 234 | # 打印对象的属性信息 235 | # for key, value in movie.__dict__.items(): 236 | # print(f"{key}: {value}") 237 | 238 | 239 | def printMovieInfo(_movie: Movie): 240 | """ 241 | 打印对象的属性信息 242 | """ 243 | for key, value in _movie.__dict__.items(): 244 | if key == 'actor': 245 | print('[ ') 246 | for actor in value: 247 | for key1, value1 in actor.__dict__.items(): 248 | print(f"{key1}: {value1}") 249 | print(' ]') 250 | continue 251 | print(f"{key}: {value}") 252 | 253 | 254 | # 将电影信息写入CSV文件 255 | def write_movies_to_csv(movies, movie_file_name, actor_file_name): 256 | # return [self.id, self.name, self.rating, self.releaseDate, self.genre, self.director, self.introduction] 257 | with open(movie_file_name, 'a', newline='', encoding="utf-8") as csvfile: 258 | writer = csv.writer(csvfile) 259 | # writer.writerow(['id', 'name', 'rating', 'releaseDate', 'genre', 'director', 'introduction']) 260 | for movie in movies: 261 | writer.writerow(movie.to_csv()) 262 | for actor in movie.actor: 263 | write_actors_to_csv(actor, movie.id, actor_file_name) 264 | 265 | 266 | def write_actors_to_csv(actor, movie_id, filename): 267 | # [self.id, self.name, self.gender, self.birth, self.death, self.biography, movie_id] 268 | with open(filename, 'a', newline='', encoding="utf-8") as csvfile: 269 | writer = csv.writer(csvfile) 270 | # writer.writerow(['Name', 'Age', 'Gender']) 271 | writer.writerow(actor.to_csv(movie_id)) 272 | 273 | 274 | if __name__ == '__main__': 275 | # https://movie.douban.com/top250?start=75&filter= 276 | # 遍历Top1000的所有页面 277 | for idx in range(40): 278 | target_url = f'https://www.douban.com/doulist/109986428/?start={25 * idx}&sort=seq&playable=0&sub_type=' 279 | response = requests.get(url=target_url, headers=headers) 280 | html = response.text 281 | if response.status_code == 200: 282 | print(f'抓取part25页面成功') 283 | # with open("douban-top250.html", "r", encoding="utf-8") as file: 284 | # html = file.read() 285 | # 解析Top250网页的一页 => 每个具体电影的url链接 286 | movies_url = analysisDoubanTop1000part25(html) 287 | 288 | movies_list = [] 289 | for movie_url in movies_url: 290 | movie = Movie() 291 | res = requests.get(url=movie_url, headers=headers) 292 | if res.status_code == 200: 293 | print(f'抓取电影页面成功') 294 | movie_html = res.text 295 | # with open('movie.html', 'r', encoding='utf-8') as file: 296 | # # file.write(movie_detail.text) 297 | # movie_html = file.read() 298 | # 299 | analysisMovie(movie_html, movie) 300 | 301 | movies_list.append(movie) 302 | # break 303 | else: 304 | print(f'status_code {res.status_code}') 305 | 306 | movie_file_name = 'movie_file.csv' 307 | actor_file_name = 'actor_file.csv' 308 | write_movies_to_csv(movies_list, movie_file_name, actor_file_name) 309 | 310 | print(f'解析第{idx + 1}页结束') 311 | # break 312 | 313 | # with open('actor.html', 'r', encoding='utf-8') as file: 314 | # actor_html = file.read() 315 | # # file.write(actor_html) 316 | # 317 | # analysisActor(actor_html, movie) 318 | 319 | else: 320 | print('response is not 200') 321 | -------------------------------------------------------------------------------- /backend/spider/main_250.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import re 3 | 4 | import requests 5 | from bs4 import BeautifulSoup 6 | 7 | 8 | class Movie: 9 | """ 10 | Movie Object 11 | """ 12 | total_movies = 0 13 | 14 | def __init__(self): 15 | self.id = Movie.total_movies 16 | Movie.total_movies += 1 17 | 18 | self.imgUrl = None 19 | self.name = None 20 | self.rating = None 21 | self.introduction = None 22 | self.releaseDate = [] 23 | 24 | self.genre = [] 25 | self.director = None 26 | self.actor = [] 27 | 28 | def to_csv(self): 29 | return [self.id, self.name, self.rating, self.releaseDate, self.genre, self.director, self.imgUrl, self.introduction] 30 | 31 | 32 | class Actor: 33 | """ 34 | 演员 35 | """ 36 | total_actors = 0 37 | 38 | def __init__(self): 39 | self.id = Actor.total_actors 40 | Actor.total_actors += 1 41 | 42 | self.imgUrl = None 43 | self.name = None 44 | self.gender = None 45 | self.birth = None 46 | self.birthplace = None 47 | self.death = None 48 | self.biography = None 49 | 50 | def to_csv(self, movie_id): 51 | return [self.id, self.name, self.gender, self.birth, self.death, self.birthplace, self.imgUrl, self.biography, movie_id] 52 | 53 | 54 | target_url = 'https://movie.douban.com/top250' 55 | 56 | headers = { 57 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0', 58 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' 59 | } 60 | 61 | 62 | # response = requests.get(url=target_url, headers=headers) 63 | # html = response.text 64 | # 65 | # # 将文本内容保存到本地文件 66 | # with open('douban-top250.htmlhtml', 'w', encoding='utf-8') as file: 67 | # file.write(html) 68 | 69 | # status_code = response.status_code 70 | # status_code = 200 71 | 72 | 73 | def analysisDoubanTop250part25(html: requests.Response.text): 74 | """ 75 | 一页电影列表 25部 76 | :param html: 77 | :return: 一页电影中的所有电影详情url 78 | """ 79 | soup = BeautifulSoup(html, 'html.parser') 80 | 81 | movies_info = soup.find('ol', class_='grid_view') 82 | image_list = movies_info.findAll(class_='pic') 83 | movies_url = [] 84 | for image in image_list: 85 | a = image.findNext('a') 86 | movie_url = a['href'] 87 | movies_url.append(movie_url) 88 | 89 | return movies_url 90 | 91 | 92 | def analysisActor(html: requests.Response.text, movie: Movie): 93 | """ 94 | 单个演员 95 | :param html: 96 | :param movie: 演员信息 追加到这里面 97 | """ 98 | # self.id = None 99 | # self.name = None 100 | # self.gender = None 101 | # self.birth = None 102 | # self.death = None 103 | # self.biography = None 104 | actor = Actor() 105 | 106 | soup = BeautifulSoup(html, 'html.parser') 107 | content = soup.find('div', id='content') 108 | 109 | # 追加img 110 | imgUrl = content.find('div', class_='pic').find('img')['src'] 111 | actor.imgUrl = imgUrl 112 | 113 | name = content.find_next('h1').text.strip() 114 | actor.name = name 115 | 116 | li_list = content.find('div', class_='info').find_all('li') 117 | for li in li_list: 118 | # gender 119 | if li.find_next('span').text.strip() == '性别': 120 | gender = li.text.split(':')[1].replace('\n', '').strip() 121 | actor.gender = gender 122 | if li.find_next('span').text.strip() == '出生日期': 123 | birth = li.text.split(':')[1].replace('\n', '').strip() 124 | actor.birth = birth 125 | 126 | if li.find_next('span').text.strip() == '生卒日期': 127 | date = li.text.split(':')[1].replace('\n', '').replace(' ', '').split('至') 128 | birth = date[0] 129 | death = date[1] 130 | actor.birth = birth 131 | actor.death = death 132 | 133 | if li.find_next('span').text.strip() == '出生地': 134 | birthplace = li.text.split(':')[1].replace('\n', '').strip() 135 | actor.birthplace = birthplace 136 | 137 | biographyEl = content.find('span', class_='short') 138 | 139 | bi = content.find('div', id='intro', class_='mod').find('div', class_='bd').find('span', class_='all hidden') 140 | if bi is not None: 141 | bi = bi.text.replace('
', '').replace("\n", '').strip() 142 | if biographyEl is not None: 143 | biography = replace_multiple_spaces(biographyEl.text.replace('
', '').replace("\n", '').strip()) 144 | else: 145 | biography = replace_multiple_spaces(content.find('div', id='intro', class_='mod') 146 | .find('div', class_='bd').text 147 | .replace('
', '').replace("\n", '').strip()) 148 | 149 | if bi is not None: 150 | actor.biography = bi 151 | else: 152 | actor.biography = biography 153 | 154 | movie.actor.append(actor) 155 | # 打印对象的属性信息 156 | # for key, value in actor.__dict__.items(): 157 | # print(f"{key}: {value}") 158 | 159 | 160 | def replace_multiple_spaces(string): 161 | # 使用正则表达式将多个连续空格替换为一个空格 162 | pattern = re.compile(r'\s+') 163 | replaced_string = re.sub(pattern, ' ', string) 164 | return replaced_string 165 | 166 | 167 | def analysisMovie(html: requests.Response.text, movie: Movie): 168 | """ 169 | 单部电影 170 | :param html: 171 | :param movie: 172 | """ 173 | soup = BeautifulSoup(html, 'html.parser') 174 | # 23-12-10 追加imgUrl 175 | imgUrl = soup.find('div', {'id': 'content'}).find('div', {'id': 'mainpic'}).find('img')['src'].strip() 176 | movie.imgUrl = imgUrl 177 | # movie name 178 | title = soup.find('head').find('title').text.strip().split("(")[0] 179 | movie.name = title 180 | # movie rating 181 | rating = soup.find(class_='ll rating_num').text 182 | movie.rating = rating 183 | # movie introduction 184 | spanBox = soup.find(class_='related-info').find(class_='indent').find_all('span') 185 | introduction = None 186 | for span in spanBox: 187 | if span.get('property') == 'v:summary': 188 | introduction = replace_multiple_spaces(span.text.replace('
', '').replace('\n', '').strip()) 189 | 190 | intro = soup.find(class_='related-info').find(class_='indent').find(class_='all hidden') 191 | if intro: 192 | intro = replace_multiple_spaces(intro.text.replace('
', '').replace('\n', '').strip()) 193 | movie.introduction = intro 194 | else: 195 | movie.introduction = introduction 196 | 197 | movie_subject = soup.find('div', class_='subject clearfix') 198 | spanBox = movie_subject.find_all('span') 199 | for span in spanBox: 200 | # movie releaseDate 201 | if span.get('property') == 'v:initialReleaseDate': 202 | movie.releaseDate.append(span.text) 203 | # movie genre 204 | if span.get('property') == 'v:genre': 205 | movie.genre.append(span.text) 206 | 207 | li_list = soup.find('ul', class_='celebrities-list from-subject __oneline').find_all('li') 208 | for li in li_list: 209 | personName = li.find_all('span')[0].find('a').text.strip() 210 | roleName = li.find_all('span')[1].text.strip() 211 | # 导演 212 | if roleName == '导演': 213 | movie.director = personName 214 | continue 215 | # 演员 216 | a_url = li.find_next('a').get('href') 217 | response = requests.get(url=a_url, headers=headers) 218 | if response.status_code == 200: 219 | print(f'抓取演员页面成功') 220 | actor_html = response.text 221 | 222 | # 将文本内容保存到本地文件 223 | # with open('actor.html', 'r', encoding='utf-8') as file: 224 | # file.read() 225 | # file.write(actor_html) 226 | 227 | analysisActor(actor_html, movie) 228 | else: 229 | print(f'status_code is {response.status_code}') 230 | 231 | # 打印对象的属性信息 232 | # for key, value in movie.__dict__.items(): 233 | # print(f"{key}: {value}") 234 | 235 | 236 | def printMovieInfo(_movie: Movie): 237 | """ 238 | 打印对象的属性信息 239 | """ 240 | for key, value in _movie.__dict__.items(): 241 | if key == 'actor': 242 | print('[ ') 243 | for actor in value: 244 | for key1, value1 in actor.__dict__.items(): 245 | print(f"{key1}: {value1}") 246 | print(' ]') 247 | continue 248 | print(f"{key}: {value}") 249 | 250 | 251 | # 将电影信息写入CSV文件 252 | def write_movies_to_csv(movies, movie_file_name, actor_file_name): 253 | # return [self.id, self.name, self.rating, self.releaseDate, self.genre, self.director, self.introduction] 254 | with open(movie_file_name, 'a', newline='', encoding="utf-8") as csvfile: 255 | writer = csv.writer(csvfile) 256 | # writer.writerow(['id', 'name', 'rating', 'releaseDate', 'genre', 'director', 'introduction']) 257 | for movie in movies: 258 | writer.writerow(movie.to_csv()) 259 | for actor in movie.actor: 260 | write_actors_to_csv(actor, movie.id, actor_file_name) 261 | 262 | 263 | def write_actors_to_csv(actor, movie_id, filename): 264 | # [self.id, self.name, self.gender, self.birth, self.death, self.biography, movie_id] 265 | with open(filename, 'a', newline='', encoding="utf-8") as csvfile: 266 | writer = csv.writer(csvfile) 267 | # writer.writerow(['Name', 'Age', 'Gender']) 268 | writer.writerow(actor.to_csv(movie_id)) 269 | 270 | 271 | if __name__ == '__main__': 272 | # https://movie.douban.com/top250?start=75&filter= 273 | # 遍历Top250的所有页面 274 | for idx in range(10): 275 | if idx == 0: 276 | target_url = 'https://movie.douban.com/top250' 277 | else: 278 | target_url = f'https://movie.douban.com/top250?start={25 * idx}&filter=' 279 | response = requests.get(url=target_url, headers=headers) 280 | html = response.text 281 | if response.status_code == 200: 282 | print(f'抓取part25页面成功') 283 | # with open("douban-top250.html", "r", encoding="utf-8") as file: 284 | # html = file.read() 285 | # 解析Top250网页的一页 => 每个具体电影的url链接 286 | movies_url = analysisDoubanTop250part25(html) 287 | 288 | movies_list = [] 289 | for movie_url in movies_url: 290 | movie = Movie() 291 | res = requests.get(url=movie_url, headers=headers) 292 | if res.status_code == 200: 293 | print(f'抓取电影页面成功') 294 | movie_html = res.text 295 | # with open('movie.html', 'r', encoding='utf-8') as file: 296 | # # file.write(movie_detail.text) 297 | # movie_html = file.read() 298 | # 299 | analysisMovie(movie_html, movie) 300 | 301 | movies_list.append(movie) 302 | # break 303 | else: 304 | print(f'status_code {res.status_code}') 305 | 306 | movie_file_name = 'movie_file_1000.csv' 307 | actor_file_name = 'actor_file_1000.csv' 308 | write_movies_to_csv(movies_list, movie_file_name, actor_file_name) 309 | 310 | print(f'解析第{idx + 1}页结束') 311 | # break 312 | 313 | # with open('actor.html', 'r', encoding='utf-8') as file: 314 | # actor_html = file.read() 315 | # # file.write(actor_html) 316 | # 317 | # analysisActor(actor_html, movie) 318 | 319 | else: 320 | print('response is not 200') 321 | -------------------------------------------------------------------------------- /backend/spider/process_data.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | 3 | data_folder = './origin_data' 4 | output_folder = './database_1000' 5 | 6 | 7 | # ================= movie 8 | def gen_movie(): 9 | movie_column = ['id', 'name', 'rating', 'release_date', 'genre', 'director', 'image', 'introduction'] 10 | movie = pd.read_csv(f'{data_folder}/movie_file.csv', header=None) 11 | movie.columns = movie_column 12 | movie['name'] = movie['name'].str.strip() 13 | 14 | # movie_column = ['id', 'name', 'introduction', 'rating', 'release_date', 'image'] 15 | movie_final = movie[['id', 'name', 'introduction', 'rating', 'release_date', 'image']] 16 | movie_final.to_csv(f'{output_folder}/movie.csv', encoding='utf-8', index=False) 17 | 18 | 19 | # ================= actor 20 | def gen_actor(): 21 | actor_column = ['id', 'name', 'gender', 'birthday', 'deathday', 'birthplace', 'image', 'biography', 'movie_id'] 22 | actor = pd.read_csv(f'{data_folder}/actor_file.csv', header=None) 23 | actor.columns = actor_column 24 | 25 | actor[['name', 'english_name']] = actor['name'].str.split(n=1, expand=True) 26 | actor['name'] = actor['name'].str.strip() 27 | actor['english_name'] = actor['english_name'].str.strip() 28 | 29 | actor_column = ['id', 'name', 'english_name', 'birthplace', 'biography', 'birthday', 'deathday', 'image'] 30 | actor_final = actor[actor_column] 31 | actor_final.loc[actor_final['deathday'].isna(), 'deathday'] = '\\N' 32 | 33 | actor_final.loc[:, 'name'] = actor_final['name'].str.replace("、", '') 34 | actor_final.loc[:, 'name'] = actor_final['name'].str.replace("·", '') 35 | actor_final.loc[:, 'birthplace'] = actor_final['birthplace'].str.strip('\'"') 36 | actor_final.loc[:, 'birthplace'] = actor_final['birthplace'].str.replace('[“”‘’\"]', '', regex=True) 37 | actor_final.loc[:, 'birthplace'] = actor_final['birthplace'].str.strip('"') 38 | actor_final.loc[:, 'birthday'] = actor_final['birthday'].str.strip('\'"') 39 | actor_final.loc[:, 'birthday'] = actor_final['birthday'].str.replace('"', '') 40 | actor_final = actor_final.drop_duplicates(subset=['name']) 41 | actor_final.to_csv(f'{output_folder}/actor.csv', index=False, encoding='utf-8') 42 | 43 | 44 | # ================= genre genre_column = ['id', 'name'] 45 | def gen_genre(): 46 | movie_column = ['id', 'name', 'rating', 'release_date', 'genre', 'director', 'image', 'introduction'] 47 | movie = pd.read_csv(f'{data_folder}/movie_file.csv', header=None) 48 | movie.columns = movie_column 49 | movie['name'] = movie['name'].str.strip() 50 | movie = movie[['id', 'genre']] 51 | # print(movie.head()) 52 | # 将包含列表的字符串转换为实际的列表 53 | movie['genre'] = movie['genre'].apply(eval) 54 | # 使用 explode() 方法将列表中的元素展开成新行 55 | df_exploded = movie.explode('genre') 56 | # 使用 unique() 方法统计不重复的项 57 | unique_genres = df_exploded['genre'].unique() 58 | # print(unique_genres) 59 | data = {'id': [i for i in range(len(unique_genres))], 60 | 'name': unique_genres} 61 | genre_column = pd.DataFrame(data) 62 | genre_column.to_csv(f'{output_folder}/genre.csv', index=False) 63 | 64 | 65 | # movie_genre_column = ['movie_id', 'genre_id'] 66 | # ================= movie -> genre 67 | def gen_movie_genre(): 68 | movie_column = ['id', 'name', 'rating', 'release_date', 'genre', 'director', 'image', 'introduction'] 69 | movie = pd.read_csv(f'{data_folder}/movie_file.csv', header=None) 70 | movie.columns = movie_column 71 | movie['genre'] = movie['genre'].apply(eval) 72 | movie_exploded = movie.explode('genre') 73 | movie_exploded = movie_exploded[['id', 'genre']] 74 | 75 | genre = pd.read_csv(f'{output_folder}/genre.csv') 76 | 77 | final_data = pd.merge(movie_exploded, genre, left_on='genre', right_on='name', how='left', suffixes=('_movie', '_genre')) 78 | movie_genre_column = final_data[['id_movie', 'id_genre']] 79 | 80 | # print(movie_genre_column.head()) 81 | movie_genre_column.columns = ['movie_id', 'genre_id'] 82 | movie_genre_column.to_csv(f'{output_folder}/movie_genre.csv', index=False) 83 | 84 | 85 | # actor_movie_column = ['actor_id', 'movie_id'] 86 | # ===================== actor_movie_column 87 | def gen_actor_movie(): 88 | actor_column = ['id', 'name', 'gender', 'birthday', 'deathday', 'birthplace', 'image', 'biography', 'movie_id'] 89 | actor = pd.read_csv(f'{data_folder}/actor_file.csv', header=None) 90 | actor.columns = actor_column 91 | actor = actor[['id', 'movie_id']] 92 | actor.columns = ['actor_id', 'movie_id'] 93 | actor.to_csv(f'{output_folder}/actor_movie.csv', index=False) 94 | 95 | 96 | if __name__ == '__main__': 97 | # gen_movie() 98 | gen_actor() 99 | # gen_genre() 100 | # gen_movie_genre() 101 | # gen_actor_movie() 102 | -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | # 小程序前端代码注意事项 2 | 3 | ## 使用流程 4 | 5 | 1. 下载 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html) 6 | 7 | 2. 导入frontend项目 8 | 3. 修改 pages\chat\chat.js 9 | 10 | ```js 11 | const params = { 12 | // 腾讯云调用语音API的密钥 13 | secretkey: '', 14 | secretid: '', 15 | appid: 0, 16 | ... 17 | } 18 | ``` 19 | 20 | 4. 打包预览 -------------------------------------------------------------------------------- /frontend/app.js: -------------------------------------------------------------------------------- 1 | //app.js 2 | App({ 3 | 4 | getUserInfo:function(cb){ 5 | var that = this 6 | if(this.globalData.userInfo){ 7 | typeof cb == "function" && cb(this.globalData.userInfo) 8 | }else{ 9 | //调用登录接口 10 | wx.login({ 11 | success: function () { 12 | wx.getUserInfo({ 13 | success: function (res) { 14 | that.globalData.userInfo = res.userInfo 15 | typeof cb == "function" && cb(that.globalData.userInfo) 16 | } 17 | }) 18 | } 19 | }) 20 | } 21 | }, 22 | globalData:{ 23 | userInfo:null 24 | } 25 | 26 | 27 | }) -------------------------------------------------------------------------------- /frontend/app.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "lazyCodeLoading": "requiredComponents", 4 | "pages":[ 5 | "pages/index/index", 6 | "pages/chat/chat" 7 | ], 8 | "window":{ 9 | "backgroundTextStyle":"light", 10 | "navigationBarBackgroundColor": "#fff", 11 | "navigationBarTitleText": "电影知识问答系统", 12 | "navigationBarTextStyle":"black" 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /frontend/img/bot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SwimmingLiu/MovieKGQA/ba77aed8c4e1d71d54ffa37185ebc9da32f54a3e/frontend/img/bot.png -------------------------------------------------------------------------------- /frontend/img/chatbot.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/img/graphdatabase.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/img/knowledge_graph.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/img/send.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/img/stop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/img/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SwimmingLiu/MovieKGQA/ba77aed8c4e1d71d54ffa37185ebc9da32f54a3e/frontend/img/user.png -------------------------------------------------------------------------------- /frontend/img/voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SwimmingLiu/MovieKGQA/ba77aed8c4e1d71d54ffa37185ebc9da32f54a3e/frontend/img/voice.png -------------------------------------------------------------------------------- /frontend/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "weichatapp-master", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "@miniprogram-component-plus/select-text": "^1.0.1" 9 | } 10 | }, 11 | "node_modules/@miniprogram-component-plus/select-text": { 12 | "version": "1.0.1", 13 | "resolved": "https://registry.npmmirror.com/@miniprogram-component-plus/select-text/-/select-text-1.0.1.tgz", 14 | "integrity": "sha512-aJaDeqy3eSbi1Rc/EDU+2PomFf3PuCsQviXaoJqo7ms7GUlFBpBg4BeL+TmtaLkieNVB/v29CjEPaMGKAEW17g==" 15 | } 16 | }, 17 | "dependencies": { 18 | "@miniprogram-component-plus/select-text": { 19 | "version": "1.0.1", 20 | "resolved": "https://registry.npmmirror.com/@miniprogram-component-plus/select-text/-/select-text-1.0.1.tgz", 21 | "integrity": "sha512-aJaDeqy3eSbi1Rc/EDU+2PomFf3PuCsQviXaoJqo7ms7GUlFBpBg4BeL+TmtaLkieNVB/v29CjEPaMGKAEW17g==" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@miniprogram-component-plus/select-text": "^1.0.1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /frontend/pages/chat/chat.js: -------------------------------------------------------------------------------- 1 | // pages/contact/contact.js 2 | const app = getApp(); 3 | var inputVal = ''; 4 | var msgList = []; 5 | var showReminder = true; 6 | var imageUrl = '/img/voice.png' 7 | 8 | // 假设 asr.js 存放在 utils 目录下 9 | const asr = require('../../utils/asr.min.js'); 10 | /** asr.js **/ 11 | // 获取应用实例 12 | // 和使用插件调用方式有所区别: 13 | let speechRecognizerManager; 14 | // 引入asr.js实例时: 15 | speechRecognizerManager = asr.getRecorderSpeechRecognizer; // isLog 非必填参数,类型为boolean,当值 为true时可打印日志调试。 16 | 17 | // 若不需要录音,只调用识别功能的话,按如下方式调用,识别结果回调和使用 录音 + 识别回调一致: 18 | let speechRecognizer = new asr.SpeechRecognizer(); // isLog 非必填参数,类型为boolean 19 | let resultText = ''; 20 | var windowWidth = wx.getSystemInfoSync().windowWidth; 21 | var windowHeight = wx.getSystemInfoSync().windowHeight; 22 | var keyHeight = 0; 23 | 24 | var kgqa_url = "https://fish-sincere-yearly.ngrok-free.app/q/"; 25 | //var key='4df93a740973db51a50ff9dea1304f80.XwsWdfe2xyxYnvRy'; //存放API秘钥1 26 | var key='6e30fbcc202f5013028d92d7098fef3b.i22ixkhUroSuO6Yv'; //我的API秘钥 27 | var model="chatglm_lite"; //选择模型 轻量级 28 | // var _url= 'http://47.96.133.86:5000/'; //我的服务器接口 29 | // var _url= 'http://47.115.23.82:5000/'; //服务器接口 30 | var _url= 'https://ai.stdiet.top'; 31 | //var _url='https://open.bigmodel.cn/api/paas/v3/model-api/chatglm_lite/sse_invoke'; 32 | 33 | 34 | /** 35 | * 初始化数据 36 | */ 37 | function initData(that) { 38 | inputVal = ''; 39 | 40 | msgList = [ 41 | // { 42 | // speaker: 'server', 43 | // contentType: 'text', 44 | // content: '您好,我是您的电影知识问答助手。您可以随意问我与电影相关的问题,例如“成龙是谁?”' 45 | // }, 46 | // { 47 | // speaker: 'customer', 48 | // contentType: 'text', 49 | // content: '好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的好的' 50 | // } 51 | ] 52 | showReminder = true; 53 | that.setData({ 54 | msgList, 55 | inputVal, 56 | showReminder, 57 | imageUrl, 58 | socket: null, 59 | speechRecognizerManager: null, 60 | isCanSendData: false, 61 | result: '', 62 | res:'', 63 | recording: false, 64 | disabled: false, 65 | isRecognizeStop: false, 66 | recognizeResult: '' 67 | }) 68 | 69 | } 70 | 71 | /** 72 | * 计算msg总高度 73 | */ 74 | // function calScrollHeight(that, keyHeight) { 75 | // var query = wx.createSelectorQuery(); 76 | // query.select('.scrollMsg').boundingClientRect(function(rect) { 77 | // }).exec(); 78 | // } 79 | 80 | Page({ 81 | 82 | /** 83 | * 页面的初始数据 84 | */ 85 | data: { 86 | scrollHeight: '100vh', 87 | inputBottom: 0, 88 | zhanweiHeight:'100px', 89 | scrollTop: 10000, 90 | reminderList: [ 91 | { 92 | reminderText:'Stephen Chow是谁?' 93 | }, 94 | { 95 | reminderText:'张国荣演了多少电影?' 96 | }, 97 | { 98 | reminderText:'霸王别姬上映时间?' 99 | }, 100 | { 101 | reminderText:'梁朝伟的作品有哪些?' 102 | }, 103 | { 104 | reminderText:'周星驰演了哪些风格的电影?' 105 | }, 106 | { 107 | reminderText:'肖申克的救赎讲了什么?' 108 | }, 109 | { 110 | reminderText:'黄渤的家乡?' 111 | }, 112 | { 113 | reminderText:'周润发演过哪些喜剧类电影?' 114 | }, 115 | { 116 | reminderText:'阿甘正传的风格是什么?' 117 | } 118 | ] 119 | }, 120 | 121 | /** 122 | * 生命周期函数--监听页面加载 123 | */ 124 | onLoad: function (options) { 125 | initData(this); 126 | this.setData({ 127 | //cusHeadIcon: app.globalData.userInfo.avatarUrl, 128 | }); 129 | wx.showShareMenu({ 130 | withShareTicket:true, 131 | menus:['shareAppMessage','shareTimeline'] 132 | }) 133 | 134 | this.speechRecognizerManager = speechRecognizerManager(); 135 | 136 | // 开始识别 137 | this.speechRecognizerManager.OnRecognitionStart = (res) => { 138 | console.log('开始识别', res); 139 | this.isCanSendData = true; 140 | this.setData({ 141 | recording: true, 142 | disabled: true, 143 | result: '', 144 | }); 145 | }; 146 | 147 | // 一句话开始 148 | this.speechRecognizerManager.OnSentenceBegin = (res) => { 149 | console.log('一句话开始', res); 150 | }; 151 | // 识别变化时 152 | this.speechRecognizerManager.OnRecognitionResultChange = (res) => { 153 | console.log('识别变化时', res); 154 | this.setData({ 155 | result: `${resultText || ''}${res.result.voice_text_str}` 156 | }); 157 | }; 158 | // 一句话结束 159 | this.speechRecognizerManager.OnSentenceEnd = (res) => { 160 | console.log('一句话结束', res); 161 | resultText += res.result.voice_text_str; 162 | this.setData({ 163 | result: resultText 164 | }); 165 | }; 166 | // 识别结束 167 | this.speechRecognizerManager.OnRecognitionComplete = (res) => { 168 | console.log('识别结束', res); 169 | this.isRecognizeStop = true; 170 | this.setData({ 171 | recording: false, 172 | disabled: false 173 | }); 174 | }; 175 | // 识别错误 176 | this.speechRecognizerManager.OnError = (res) => { 177 | console.log(res); 178 | this.isCanSendData = false; 179 | this.setData({ 180 | recording: false, 181 | disabled: false 182 | }); 183 | }; 184 | }, 185 | startLy: async function(e){ 186 | const self = this; 187 | wx.getSetting({ 188 | success(res) { 189 | if (!res.authSetting['scope.record']) { 190 | wx.authorize({ 191 | scope: 'scope.record', 192 | success() { 193 | // 用户已经同意小程序使用录音功能,后续调用 record 接口不会弹窗询问 194 | self.startAsr(); 195 | }, fail() { 196 | wx.showToast({ title: '未获取录音权限', icon: 'none' }); 197 | // console.log("fail auth") 198 | } 199 | }); 200 | } else { 201 | self.startAsr(); 202 | // console.log("record has been authed") 203 | } 204 | }, 205 | fail(res) { 206 | // console.log("fail",res) 207 | } 208 | }); 209 | }, 210 | startAsr: function() { 211 | // wx.showToast({ 212 | // title: '建立连接中', 213 | // icon: 'none' 214 | // }); 215 | resultText = ''; 216 | const params = { 217 | // 用户参数 218 | secretkey: '', 219 | secretid: '', 220 | appid: 0, 221 | // 录音参数 222 | // duration: 100000, 223 | // frameSize: 1.28, //单位:k 224 | 225 | // 实时识别接口参数 226 | engine_model_type : '16k_zh', 227 | // 以下为非必填参数,可跟据业务自行修改 228 | // hotword_id : '08003a00000000000000000000000000', 229 | needvad: 1, 230 | filter_dirty: 1, 231 | filter_modal: 1, 232 | filter_punc: 1, 233 | // convert_num_mode : 1, 234 | word_info: 2, 235 | vad_silence_time: 200 236 | }; 237 | 238 | this.speechRecognizerManager.start(params); 239 | wx.vibrateShort(); 240 | }, 241 | endLy: function(e){ 242 | this.setData({ 243 | recording: false, 244 | disabled: false 245 | }); 246 | this.speechRecognizerManager.stop(); 247 | }, 248 | 249 | /** 250 | * 生命周期函数--监听页面显示 251 | */ 252 | onShow: function() { 253 | this.setData({ 254 | scrollTop: 10000 255 | }) 256 | }, 257 | 258 | /** 259 | * 页面相关事件处理函数--监听用户下拉动作 260 | */ 261 | onPullDownRefresh: function() { 262 | 263 | }, 264 | 265 | /** 266 | * 页面上拉触底事件的处理函数 267 | */ 268 | onReachBottom: function() { 269 | 270 | }, 271 | /** 272 | * 获取聚焦 273 | */ 274 | focus: function(e) { 275 | 276 | keyHeight = e.detail.height; 277 | this.setData({ 278 | zhanweiHeight:keyHeight + 100 + 'px', 279 | scrollHeight: (windowHeight - keyHeight - 100) + 'px' 280 | }); 281 | this.setData({ 282 | toView: 'msg-' + (msgList.length - 1), 283 | inputBottom: keyHeight + 'px', 284 | showReminder : false 285 | }) 286 | //计算msg高度 287 | // calScrollHeight(this, keyHeight); 288 | this.pageScrollToBottom(); 289 | }, 290 | 291 | //失去聚焦(软键盘消失) 292 | blur: function(e) { 293 | this.setData({ 294 | zhanweiHeight: '100px', 295 | scrollHeight: '100vh', 296 | inputBottom: 0, 297 | showReminder : true 298 | }); 299 | this.pageScrollToBottom(); 300 | }, 301 | onTextareaInput:function(e){ 302 | this.setData({ 303 | inputVal:e.detail.value, 304 | toView: 'msg-' + (msgList.length - 1) 305 | }) 306 | }, 307 | 308 | //页面自动滚动到底部 309 | pageScrollToBottom: function() { 310 | this.setData({ 311 | scrollTop: windowHeight + 10000 312 | }) 313 | // wx.createSelectorQuery().select('#scrollpage').boundingClientRect(function(rect){ 314 | // wx.pageScrollTo({ 315 | // scrollTop: rect.bottom, // 设置一个足够大的值,以确保能够滚动到页面底部 316 | // duration: 100 // 滚动持续时间 317 | // }); 318 | // }).exec(); 319 | }, 320 | /* 321 | 监听提示语 322 | */ 323 | handleClick: function (e) { 324 | const text = e.currentTarget.dataset.text; // 获取view中存储的文本内容 325 | const inputText = text; // 将文本内容赋值给input的值 326 | // 使用选择器获取textarea组件,并设置其内容 327 | // 更新 textarea 的值 328 | this.setData({ 329 | inputVal: inputText 330 | }); 331 | }, 332 | gptRequest:function(inputvalue){ 333 | let that = this; 334 | inputVal = ''; 335 | wx.request({ 336 | url: _url, 337 | data:{ 338 | APIModel:model, 339 | APIkey:key, 340 | info: inputvalue 341 | }, 342 | 343 | //封装返回数据格式 344 | header: { 345 | 'Content-Type': 'application/json' 346 | }, 347 | //请求成功的回调 348 | success: function(res) { 349 | // console.log(res.data); 350 | 351 | let data = res.data; 352 | // console.log(res.data); 353 | msgList.push({ 354 | speaker: 'server', 355 | contentType: 'text', 356 | content: res.data + "(made by chatgpt)" 357 | }) 358 | //调用set方法,告诉系统数据已经改变 启动循环,循环聊天信息 359 | that.setData({ 360 | msgList, 361 | inputVal, 362 | }) 363 | that.pageScrollToBottom(); 364 | wx.setNavigationBarTitle({ 365 | title: "电影知识系统小助手" 366 | }) 367 | }, 368 | fail: function (res) { 369 | msgList.push({ 370 | speaker: 'server', 371 | contentType: 'text', 372 | content: "发送请求失败,请检查你的网络。" + res.errMsg, 373 | }) 374 | //调用set方法,告诉系统数据已经改变 启动循环,循环聊天信息 375 | that.setData({ 376 | msgList, 377 | inputVal 378 | }) 379 | that.pageScrollToBottom(); 380 | wx.setNavigationBarTitle({ 381 | title: "电影知识系统小助手" 382 | }) 383 | } 384 | 385 | }) 386 | 387 | }, 388 | /** 389 | * 发送点击监听 390 | */ 391 | sendClick: function(e) { 392 | if (this.data.inputVal != ''){ 393 | let inputvalue = this.data.inputVal; 394 | wx.setNavigationBarTitle({ 395 | title: "对方正在输入中" 396 | }) 397 | msgList.push({ 398 | speaker: 'customer', 399 | contentType: 'text', 400 | content: this.data.inputVal 401 | }) 402 | let that = this; 403 | inputVal = ''; 404 | wx.request({ 405 | url: kgqa_url + this.data.inputVal, 406 | method: 'POST', // 请求方法为 POST 407 | // data:{ 408 | // data : 409 | // }, 410 | //封装返回数据格式 411 | // header: { 412 | // 'Content-Type': 'application/json' 413 | // }, 414 | //请求成功的回调 415 | success: function(res) { 416 | // console.log(res.data); 417 | 418 | let data = res.data; 419 | if (res.statusCode == 200 && typeof(res.data.answer) == "string"){ 420 | if (res.data.answer.includes("没有找到答案。") || res.data.answer.includes("抱歉,我无法理解这个问题")){ 421 | that.gptRequest(inputvalue); 422 | return -1; 423 | }else{ 424 | msgList.push({ 425 | speaker: 'server', 426 | contentType: 'text', 427 | content: res.data.answer, 428 | }) 429 | } 430 | 431 | //调用set方法,告诉系统数据已经改变 启动循环,循环聊天信息 432 | }else if (res.statusCode == 200 && typeof(res.data.answer) == "object"){ 433 | msgList.push({ 434 | speaker: 'server', 435 | contentType: 'text', 436 | content: res.data.answer.introduction, 437 | image: res.data.answer.image 438 | }) 439 | } 440 | else{ 441 | that.gptRequest(inputvalue); 442 | return -1; 443 | } 444 | that.setData({ 445 | msgList, 446 | inputVal, 447 | }) 448 | that.pageScrollToBottom(); 449 | wx.setNavigationBarTitle({ 450 | title: "电影知识系统小助手" 451 | }) 452 | }, 453 | fail: function (res) { 454 | msgList.push({ 455 | speaker: 'server', 456 | contentType: 'text', 457 | content: "发送请求失败,请检查你的网络。" + res.errMsg, 458 | }) 459 | //调用set方法,告诉系统数据已经改变 启动循环,循环聊天信息 460 | that.setData({ 461 | msgList, 462 | inputVal 463 | }) 464 | that.pageScrollToBottom(); 465 | wx.setNavigationBarTitle({ 466 | title: "电影知识系统小助手" 467 | }) 468 | } 469 | }); 470 | inputVal = ''; 471 | this.setData({ 472 | msgList, 473 | inputVal, 474 | }); 475 | that.pageScrollToBottom(); 476 | } 477 | }, 478 | 479 | /** 480 | * 退回上一页 481 | */ 482 | toBackClick: function() { 483 | wx.navigateBack({}) 484 | }, 485 | voiceStart:function(e){ 486 | let that = this; 487 | if (imageUrl == "/img/voice.png"){ 488 | imageUrl = "/img/stop.svg" 489 | this.setData({ 490 | imageUrl: imageUrl 491 | }); 492 | this.startLy(); 493 | this.setData({ 494 | recording: true, 495 | scrollHeight: (windowHeight - 200) + 'px' 496 | }, () => { 497 | console.log("进入底部事件"); 498 | this.pageScrollToBottom(); 499 | }); 500 | } 501 | else{ 502 | imageUrl = "/img/voice.png" 503 | this.setData({ 504 | imageUrl: imageUrl 505 | }) 506 | this.endLy(); 507 | inputVal = this.data.result; 508 | console.log(inputVal); 509 | this.setData({ 510 | inputVal: inputVal 511 | }); 512 | this.setData({ 513 | scrollHeight: (windowHeight - 100) + 'px' 514 | }); 515 | } 516 | 517 | }, 518 | 519 | }) 520 | -------------------------------------------------------------------------------- /frontend/pages/chat/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } -------------------------------------------------------------------------------- /frontend/pages/chat/chat.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | AI 提问 11 | 12 | 13 | 14 | 知识图谱 15 | 16 | 17 | 18 | 图数据库 19 | 20 | 21 | 22 | 23 | 24 | {{reminder.reminderText}} 26 | 27 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | {{item.content}} 59 | 60 | 61 | 62 | 63 | {{item.content}} 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /frontend/pages/chat/chat.wxss: -------------------------------------------------------------------------------- 1 | /* pages/contact/contact.wxss */ 2 | 3 | page { 4 | background-color: white; 5 | box-sizing: border-box; 6 | position: absolute; 7 | width: 100%; 8 | height: 100%; 9 | left: 0; 10 | top: 0; 11 | /* 在右侧添加阴影效果 */ 12 | } 13 | .content-wrapper{ 14 | box-sizing: border-box; 15 | display: flex; 16 | flex-direction: column; 17 | height: 100%; 18 | justify-content: space-between; 19 | align-items: flex-end; 20 | align-self: end; 21 | 22 | } 23 | .zhanwei{ 24 | width: 100%; 25 | /* height: 75px; */ 26 | background-color: white; 27 | } 28 | scroll-view{ 29 | /* flex: 1; */ 30 | max-height: calc(100vh - 100px); 31 | /* box-sizing: border-box; */ 32 | } 33 | .mainBox{ 34 | /* height: calc(100% - 160rpx); */ 35 | padding-top: 50rpx; 36 | margin-left: 10rpx; 37 | margin-right: 10rpx; 38 | display: flex; 39 | flex-direction: column; 40 | /* border: 1px solid red; */ 41 | } 42 | .titleBox{ 43 | height: 300rpx; 44 | display: flex; 45 | flex-direction: row; 46 | /* border: 1px solid blue; */ 47 | } 48 | .KG{ 49 | padding-top: 10rpx; 50 | display: flex; 51 | flex-direction: column; 52 | align-items: center; 53 | width: 33%; 54 | /* border:1px red solid; */ 55 | } 56 | .GD{ 57 | padding-top: 10rpx; 58 | display: flex; 59 | flex-direction: column; 60 | align-items: center; 61 | width: 33%; 62 | /* border:1px blue solid; */ 63 | } 64 | .CB{ 65 | padding-top: 10rpx; 66 | display: flex; 67 | flex-direction: column; 68 | align-items: center; 69 | width: 33%; 70 | /* border:1px green solid; */ 71 | } 72 | 73 | .leftMsg { 74 | box-sizing: border-box; 75 | font-size: 30rpx; 76 | color: black; 77 | line-height: 7vw; 78 | padding: 2vw 2.5vw; 79 | background-color: #8EC5FC; 80 | background-image: linear-gradient(90deg, #8EC5FC 12%, #E0C3FC 100%); 81 | /* 在右侧添加阴影效果 */ 82 | background-clip: padding-box; /* 设置背景仅填充内容框 */ 83 | margin-left: 0.5vw; 84 | border-radius: 20px; 85 | z-index: 10; 86 | } 87 | .leftMsg_img{ 88 | margin-bottom: 10rpx; 89 | box-sizing: border-box; 90 | width: 100%; 91 | height: 0; 92 | padding-bottom: 100%; 93 | border-radius: 5%; 94 | background-size: cover; 95 | } 96 | .rightMsg { 97 | box-sizing: border-box; 98 | font-size: 30rpx; 99 | color: black; 100 | line-height: 7vw; 101 | padding: 2vw 2.5vw; 102 | background-color: #8EC5FC; 103 | background-image: linear-gradient(270deg, #8EC5FC 12%, #E0C3FC 100%); 104 | /* 在右侧添加阴影效果 */ 105 | border-radius: 10rpx; 106 | z-index: 10; 107 | } 108 | .left_img{ 109 | width: 11vw; 110 | height: 11vw; 111 | border-radius: 10rpx; 112 | } 113 | .inputRoom { 114 | width: 100vw; 115 | min-height: 120rpx; 116 | border-top: 1px solid #cdcdcd; 117 | background-color: white; 118 | position: fixed; 119 | /* position: fixed; */ 120 | bottom: 0; 121 | display: flex; 122 | align-items: center; 123 | z-index: 20; 124 | padding-top: 10rpx; 125 | margin-bottom: 25rpx; 126 | } 127 | .inputBox{ 128 | width: 580rpx; 129 | display: flex; 130 | justify-content: center; 131 | align-items: center; 132 | background-color: white; 133 | border:5rpx solid #f1f1f1; 134 | border-radius: 40rpx; 135 | margin-left: 10rpx; 136 | margin-right: 10rpx; 137 | padding: 0 30rpx; 138 | } 139 | .voice_bottom{ 140 | width: 60rpx; 141 | margin-left: 3.2vw; 142 | border-radius: 30rpx; 143 | /* border:1rpx solid #f1f1f1; */ 144 | cursor: pointer; 145 | } 146 | .inputBar { 147 | display: felx; 148 | justify-content: center; 149 | width: 500rpx; 150 | min-height: 80rpx; 151 | line-height: 40rpx; 152 | font-size: 40rpx; 153 | color: #444; 154 | overflow-y: hidden; 155 | padding-top: 5rpx; 156 | } 157 | .inputBar_placeHolder{ 158 | font-size: 40rpx; 159 | font-family: '华文宋体'; 160 | color: #7c7c7c; 161 | } 162 | .btn_submit{ 163 | display: flex; 164 | justify-content: center; 165 | align-items: center; 166 | border: none; 167 | width: 75rpx; 168 | height: 75rpx; 169 | background-color: black; 170 | text-align: center; 171 | font-size: 30rpx; 172 | font-weight: bold; 173 | padding: -10rpx; 174 | border-radius: 20rpx; 175 | box-shadow: 0 0.3rpx #f1f1f1; /* 为了更像立方体,在按钮下方加上小小的阴影 */ 176 | text-shadow: 1rpx 1rpx #f1f1f1; /* 按钮上的文字也以加上小小的阴影 */ 177 | z-index: 999; 178 | } 179 | 180 | .send_img{ 181 | height: 50rpx; 182 | width: 50rpx; 183 | } 184 | 185 | .remindBox{ 186 | margin-top: 30rpx; 187 | box-sizing: border-box; 188 | width: 100%; 189 | padding: 20rpx 20rpx; 190 | /* border: 1px red solid; */ 191 | display: flex; 192 | justify-content: space-between; 193 | /* justify-content: space-around; */ 194 | flex-direction: row; 195 | flex-wrap: wrap; 196 | } 197 | .reminderBlock{ 198 | box-sizing: border-box; 199 | width: 31%; 200 | min-height: 150rpx; 201 | padding: 5rpx; 202 | margin-bottom: 40rpx; 203 | display: flex; 204 | text-align: center; 205 | align-items: center; 206 | justify-content: center; 207 | font-size: 35rpx; 208 | color: #535353; 209 | border:2px #f1f1f1 solid; 210 | border-radius: 30rpx; /* 圆角 */ 211 | /* box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); 立体效果的阴影 */ 212 | } 213 | 214 | .reminder1{ 215 | display: flex; 216 | flex-direction: column; 217 | /* border:1px solid red; */ 218 | width:33%; 219 | } 220 | .reminder2{ 221 | display: flex; 222 | flex-direction: column; 223 | /* border:1px solid blue; */ 224 | width:33%; 225 | } 226 | .reminder3{ 227 | display: flex; 228 | flex-direction: column; 229 | /* border:1px solid green; */ 230 | width:33%; 231 | } 232 | .voiceBox{ 233 | display: flex; 234 | justify-content: center; 235 | /* border:1px solid red; */ 236 | box-sizing: border-box; 237 | width:100%; 238 | position: fixed; 239 | bottom: 100px; 240 | z-index: 99; 241 | } 242 | .loading{ 243 | display: none; 244 | vertical-align: middle; 245 | margin-bottom: 50rpx; 246 | } 247 | .loading{ 248 | display: inline-block; 249 | } 250 | .loading > view{ 251 | display: inline-block; 252 | vertical-align: middle; 253 | width: 12rpx; 254 | background-color: #006EFF; 255 | margin-right: 16rpx; 256 | border-radius:50rpx; 257 | } 258 | .loading > view:last-child{ 259 | margin-right: 0; 260 | } 261 | .line1{ 262 | animation: lines 0.5s infinite ease-in-out alternate; 263 | } 264 | .line2{ 265 | animation: lines 0.3s infinite ease-in-out alternate; 266 | } 267 | .line3{ 268 | animation: lines 0.4s infinite ease-in-out alternate; 269 | } 270 | .line4{ 271 | animation: lines 0.2s infinite ease-in-out alternate; 272 | } 273 | .line5{ 274 | animation: lines 0.6s infinite ease-in-out alternate; 275 | } 276 | 277 | @keyframes lines { 278 | from,10% { 279 | height: 4rpx; 280 | } 281 | to,90%{ 282 | height: 60rpx; 283 | } 284 | } 285 | @-webkit-keyframes lines { 286 | from,10% { 287 | height: 4rpx; 288 | } 289 | to,90%{ 290 | height: 60rpx; 291 | } 292 | } -------------------------------------------------------------------------------- /frontend/pages/index/index.js: -------------------------------------------------------------------------------- 1 | //index.js 2 | //获取应用实例 3 | var app = getApp() 4 | Page({ 5 | data: { 6 | motto: 'Hello World', 7 | avatarUrl:'', 8 | nickName:'' 9 | }, 10 | //事件处理函数 11 | bindViewTap: function() { 12 | wx.navigateTo({ 13 | url: '../logs/logs' 14 | }) 15 | }, 16 | loginCenterIndex: function(){ 17 | 18 | wx.navigateTo({ 19 | url: '../chat/chat' 20 | }) 21 | }, 22 | 23 | onLoad: function () { 24 | //console.log('onLoad') 25 | var that = this 26 | //调用应用实例的方法获取全局数据 27 | app.getUserInfo(function(userInfo){ 28 | //更新数据 29 | that.setData({ 30 | userInfo:userInfo 31 | }) 32 | }); 33 | wx.showShareMenu({ 34 | withShareTicket:true, 35 | menus:['shareAppMessage','shareTimeline'] 36 | }) 37 | }, 38 | /** 39 | * 退回上一页 40 | */ 41 | toBackClick: function() { 42 | wx.navigateBack({}) 43 | }, 44 | onShow: function () { 45 | let that = this; 46 | wx.getUserInfo({ 47 | success: function (res) { 48 | that.setData({ 49 | avatarUrl: res.userInfo.avatarUrl, 50 | nickName: res.userInfo.nickName 51 | }); 52 | }, 53 | fail: function (res) { 54 | // 用户拒绝授权或其他失败情况处理 55 | } 56 | }); 57 | } 58 | 59 | }) 60 | -------------------------------------------------------------------------------- /frontend/pages/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "navigationBarBackgroundColor": "#8EC5FC" 3 | } -------------------------------------------------------------------------------- /frontend/pages/index/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Movie KQGA 6 | 7 | 8 | 9 | Start 10 | 11 | -------------------------------------------------------------------------------- /frontend/pages/index/index.wxss: -------------------------------------------------------------------------------- 1 | /**index.wxss**/ 2 | 3 | .container { 4 | display: flex; 5 | flex-direction: column; 6 | padding-top: 0; 7 | height: 100vh; 8 | background-color: #8EC5FC; 9 | background-image: linear-gradient(180deg, #8EC5FC 12%, #E0C3FC 100%); 10 | /* 在右侧添加阴影效果 */ 11 | } 12 | .mainBox { 13 | margin-top: 30rpx; 14 | display: flex; 15 | flex-direction: column; 16 | align-items: center; 17 | height: 80vh; 18 | width: 100%; 19 | } 20 | .title{ 21 | font-size: 120rpx; 22 | text-align: center; 23 | font-family: 'Shojumaru'; 24 | font-weight:bold; 25 | color: black; 26 | } 27 | .StartBox { 28 | display: flex; 29 | flex-direction: column; 30 | justify-content: center; 31 | align-items: center; 32 | text-align: center; 33 | width: 100vw; 34 | margin-bottom: 20rpx; 35 | } 36 | .botImg{ 37 | margin:30rpx; 38 | height:620rpx; 39 | width: 580rpx; 40 | } 41 | .loginBtn { 42 | width: 300rpx; 43 | border-radius: 28px; 44 | /* 圆角半径,可以根据需要调整 */ 45 | background-color: black; 46 | /* 设置背景颜色为黑色 */ 47 | color: white; 48 | /* 设置文字颜色为白色,以便于对比 */ 49 | padding: 10px 20px; 50 | /* 设置内边距,调整按钮大小 */ 51 | border: none; 52 | /* 可以去掉边框 */ 53 | outline: none; 54 | /* 去掉按钮点击时的外边框 */ 55 | font-size: 35px; 56 | font-weight: bold; 57 | font-family: 'Shojumaru'; 58 | } -------------------------------------------------------------------------------- /frontend/project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "appid": "wx3c83c9f89fd38a15", 3 | "compileType": "miniprogram", 4 | "libVersion": "2.25.3", 5 | "packOptions": { 6 | "ignore": [], 7 | "include": [] 8 | }, 9 | "setting": { 10 | "coverView": true, 11 | "es6": true, 12 | "postcss": true, 13 | "minified": true, 14 | "enhance": true, 15 | "showShadowRootInWxmlPanel": true, 16 | "packNpmRelationList": [], 17 | "babelSetting": { 18 | "ignore": [], 19 | "disablePlugins": [], 20 | "outputPath": "" 21 | }, 22 | "condition": false, 23 | "uglifyFileName": false 24 | }, 25 | "condition": {}, 26 | "editorSetting": { 27 | "tabIndent": "insertSpaces", 28 | "tabSize": 2 29 | }, 30 | "simulatorPluginLibVersion": {} 31 | } -------------------------------------------------------------------------------- /frontend/project.private.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", 3 | "projectname": "weichatapp-master", 4 | "setting": { 5 | "compileHotReLoad": true, 6 | "urlCheck": false, 7 | "bigPackageSizeSupport": true 8 | }, 9 | "libVersion": "3.2.3" 10 | } -------------------------------------------------------------------------------- /frontend/utils/asr.min.js: -------------------------------------------------------------------------------- 1 | const recorderManager=wx.getRecorderManager();let recorderSpeechRecognizeInstance;const guid=()=>{return"xxxxxxxx-xxxx-5xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=Math.random()*16|0,n=e==="x"?t:t&3|8;return n.toString(16)})};function formatSignString(e,t){let n="";let i="asr.cloud.tencent.com/asr/v2/";if(e["appid"]){i+=e["appid"]}else{return""}const r=Object.keys(t);r.sort();for(const s in r){n+=`&${r[s]}=${t[r[s]]}`}return`${i}?${n.slice(1)}`}function getServerTime(e){return new Promise((t,n)=>{try{wx.request({url:"https://asr.cloud.tencent.com/server_time",data:e,method:"GET",dataType:"json",success:e=>{if(e&&e.data){t(e&&e.data)}else{n(e)}},fail:e=>{n(e)}})}catch(e){n(e)}})}async function createQuery(e,t){const n={};const i=await getServerTime();n["secretid"]=e.secretid||"";n["engine_model_type"]=e.engine_model_type||"16k_zh";n["timestamp"]=parseInt(i);n["expired"]=parseInt(i)+24*60*60;n["nonce"]=Math.round(i/100);n["voice_id"]=t;n["voice_format"]=e["voice_format"]||8;e.hasOwnProperty("hotword_id")&&(n["hotword_id"]=e.hotword_id);e.hasOwnProperty("customization_id")&&(n["customization_id"]=e.customization_id);e.hasOwnProperty("needvad")&&(n["needvad"]=e.needvad);e.hasOwnProperty("filter_dirty")&&(n["filter_dirty"]=e.filter_dirty);e.hasOwnProperty("filter_modal")&&(n["filter_modal"]=e.filter_modal);e.hasOwnProperty("filter_punc")&&(n["filter_punc"]=e.filter_punc);e.hasOwnProperty("convert_num_mode")&&(n["convert_num_mode"]=e.convert_num_mode);e.hasOwnProperty("word_info")&&(n["word_info"]=e.word_info);e.hasOwnProperty("vad_silence_time")&&(n["vad_silence_time"]=e.vad_silence_time);e.hasOwnProperty("hotword_list")&&(n["hotword_list"]=e.hotword_list);e.hasOwnProperty("reinforce_hotword")&&(n["reinforce_hotword"]=e.reinforce_hotword);return n}async function getSignStr(e,t){const n=await createQuery(e,t);return formatSignString(e,n)}export class SpeechRecognizer{constructor(e){this.appid="";this.secretid="";this.socket=null;this.isSignSuccess=false;this.isSentenceBegin=false;this.query={};this.signCallback=null;this.voiceId="";this.isLog=e}stop(){if(this.socket&&this.socket.readyState===1){this.socket.send({data:JSON.stringify({type:"end"})})}}async getUrl(e,t){const n=await getSignStr(e,t);if(!n){return false}return`${n}&signature=${encodeURIComponent(this.signCallback(n))}`}async start(r){this.appid=r.appid||"";this.secretid=r.secretid||"";this.socket=null;this.isSignSuccess=false;this.isSentenceBegin=false;this.query={...r};this.voiceId=guid();function s(e){const t=e.words;const n=e.sigBytes;const i=new Uint8Array(n);for(let e=0;e>>2]>>>24-e%4*8&255}return i}function e(e){const t=r.secretkey;const n=CryptoJS.HmacSHA1(e,t);const i=s(n);return wx.arrayBufferToBase64(i)}this.signCallback=r.signCallback||e;const t=await this.getUrl(this.query,this.voiceId);this.isLog&&console.log("get url",t,this.voiceId);if(!t){this.OnError({code:6002,message:"鉴权失败",voice_id:this.voiceId});return}const n={url:`wss://${t}`,header:{}};if(r.token){n["header"]["X-TC-Token"]=r.token}this.socket=wx.connectSocket(n);this.socket.onMessage(e=>{const t=JSON.parse(e.data||null);if(t.code!==0){this.OnError(t);this.socket&&this.socket.close()}else{if(!this.isSignSuccess){this.OnRecognitionStart(t);this.isSignSuccess=true}if(t.final===1){this.OnRecognitionComplete(t);return}if(t.result){if(t.result.slice_type===0){this.OnSentenceBegin(t);this.isSentenceBegin=true}else if(t.result.slice_type===2){if(!this.isSentenceBegin){this.OnSentenceBegin(t)}this.OnSentenceEnd(t)}else{this.OnRecognitionResultChange(t)}}}});this.socket.onError(e=>{this.isLog&&console.log("socket onError",e,this.voiceId);this.socket&&this.socket.close();this.OnError({code:6e3,message:e,voice_id:this.voiceId});this.socket=null});this.socket.onClose(e=>{this.socket=null})}write(e){if(!this.socket||this.socket.readyState!==1){return}this.socket.send({data:e,success:e=>{},fail:e=>{this.isLog&&console.log("socket send error",e,this.voiceId);this.OnError({code:6e3,message:e,voice_id:this.voiceId})}})}OnRecognitionStart(e){}OnSentenceBegin(e){}OnRecognitionResultChange(){}OnSentenceEnd(){}OnRecognitionComplete(){}OnError(){}}class Recorder{constructor(){this.canStop=false;if(!Recorder.instance){Recorder.instance=this}return Recorder.instance}start(e,t){this.isLog=t;function n(e){switch(String(e)){case"1":return"pcm";case"8":return"mp3";default:return"mp3"}}const i={duration:e.duration||6e5,sampleRate:16e3,numberOfChannels:1,encodeBitRate:64e3,format:n(e.voice_format),frameSize:e.frameSize||.32};this.isLog&&console.log("recorderParams: ",i);recorderManager.start(i);recorderManager.onStart(e=>{this.isLog&&console.log("recorderManager is start");this.canStop=true});recorderManager.onStop(e=>{this.isLog&&console.log("recorderManager is stop: ",e);this.canStop=false;this.OnStop(e)});recorderManager.onError(e=>{this.isLog&&console.log("recorderManager is error: ",e);this.canStop=false;this.OnError(e);this.stop()});recorderManager.onFrameRecorded(e=>{this.OnReceivedData(e.frameBuffer);this.OnFrameRecorded(e)});recorderManager.onInterruptionBegin(()=>{this.stop();this.OnInterruptionBegin()});recorderManager.onInterruptionEnd(()=>{this.stop();this.OnInterruptionEnd()})}stop(){if(recorderManager&&this.canStop){recorderManager.stop()}}OnReceivedData(e){}OnError(e){}OnStop(e){}OnInterruptionBegin(){}OnInterruptionEnd(){}OnFrameRecorded(){}}class RecorderSpeechRecognizer{constructor(e){this.isLog=e}init(){this.speechRecognizer=null;this.isCanSendData=false;this.audioData=[]}start(r){this.isLog&&console.log("start function is click");if(this.recorder){return false}this.init();this.recorder=new Recorder;const e={duration:r.duration,frameSize:r.frameSize,voice_format:r.voice_format};this.recorder.start(e,this.isLog);this.audioData=[];this.recorder.OnReceivedData=e=>{this.audioData.push(...new Int8Array(e));const t=r["engine_model_type"].includes("8k")?640:1280;if(this.isCanSendData&&this.audioData.length>t){const n=this.audioData.splice(0,t);const i=new Int8Array(n);this.speechRecognizer.write(i.buffer)}};this.recorder.OnFrameRecorded=e=>{this.OnFrameRecorded(e)};this.recorder.OnInterruptionBegin(()=>{this.isLog&&console.log("recorderOnInterruptionBegin");this.OnInterruptionBegin()});this.recorder.OnInterruptionEnd(()=>{this.isLog&&console.log("recorderOnInterruptionEnd");this.OnInterruptionEnd()});this.recorder.OnStop=e=>{this.recorder=null;if(this.isCanSendData&&this.audioData.length>0){this.speechRecognizer&&this.speechRecognizer.write(new Int8Array(this.audioData).buffer);this.audioData=[]}this.OnRecorderStop(e);if(this.speechRecognizer){this.speechRecognizer.stop()}};this.recorder.OnError=e=>{this.stop();this.OnError(e)};if(!this.speechRecognizer){this.speechRecognizer=new SpeechRecognizer(this.isLog)}this.speechRecognizer.OnRecognitionStart=e=>{this.isLog&&console.log("OnRecognitionStart",e);this.OnRecognitionStart(e);this.isCanSendData=true};this.speechRecognizer.OnSentenceBegin=e=>{this.isLog&&console.log("OnSentenceBegin",e);this.OnSentenceBegin(e)};this.speechRecognizer.OnRecognitionResultChange=e=>{this.OnRecognitionResultChange(e)};this.speechRecognizer.OnSentenceEnd=e=>{this.OnSentenceEnd(e)};this.speechRecognizer.OnRecognitionComplete=e=>{this.isLog&&console.log("OnRecognitionComplete",e);this.OnRecognitionComplete(e);this.isCanSendData=false};this.speechRecognizer.OnError=e=>{this.isLog&&console.log("OnError",e);this.OnError(e);this.isCanSendData=false;setTimeout(()=>{if(this.recorder){this.recorder.stop()}},500)};this.speechRecognizer.start(r)}stop(){this.isLog&&console.log("stop function is click");if(this.recorder){this.recorder.stop()}}OnRecognitionStart(e){}OnSentenceBegin(e){}OnRecognitionResultChange(){}OnSentenceEnd(){}OnRecognitionComplete(){}OnError(){}OnRecorderStop(){}OnInterruptionBegin(){}OnInterruptionEnd(){}OnFrameRecorded(){}}export function getRecorderSpeechRecognizer(e){if(!recorderSpeechRecognizeInstance){recorderSpeechRecognizeInstance=new RecorderSpeechRecognizer(e)}return recorderSpeechRecognizeInstance}var CryptoJS=CryptoJS||function(c,n){var e={},t=e.lib={},i=function(){},r=t.Base={extend:function(e){i.prototype=this;var t=new i;e&&t.mixIn(e);t.hasOwnProperty("init")||(t.init=function(){t.$super.init.apply(this,arguments)});t.init.prototype=t;t.$super=this;return t},create:function(){var e=this.extend();e.init.apply(e,arguments);return e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},a=t.WordArray=r.extend({init:function(e,t){e=this.words=e||[];this.sigBytes=t!=n?t:4*e.length},toString:function(e){return(e||o).stringify(this)},concat:function(e){var t=this.words,n=e.words,i=this.sigBytes;e=e.sigBytes;this.clamp();if(i%4)for(var r=0;r>>2]|=(n[r>>>2]>>>24-8*(r%4)&255)<<24-8*((i+r)%4);else if(65535>>2]=n[r>>>2];else t.push.apply(t,n);this.sigBytes+=e;return this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-8*(t%4);e.length=c.ceil(t/4)},clone:function(){var e=r.clone.call(this);e.words=this.words.slice(0);return e},random:function(e){for(var t=[],n=0;n>>2]>>>24-8*(i%4)&255;n.push((r>>>4).toString(16));n.push((r&15).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-4*(i%8);return new a.init(n,t/2)}},h=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],i=0;i>>2]>>>24-8*(i%4)&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],i=0;i>>2]|=(e.charCodeAt(i)&255)<<24-8*(i%4);return new a.init(n,t)}},d=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},l=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new a.init;this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e));this._data.concat(e);this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,i=t.sigBytes,r=this.blockSize,s=i/(4*r),s=e?c.ceil(s):c.max((s|0)-this._minBufferSize,0);e=s*r;i=c.min(4*e,i);if(e){for(var o=0;oa;a++){if(16>a)d[a]=e[t+a]|0;else{var h=d[a-3]^d[a-8]^d[a-14]^d[a-16];d[a]=h<<1|h>>>31}h=(i<<5|i>>>27)+c+d[a];h=20>a?h+((r&s|~r&o)+1518500249):40>a?h+((r^s^o)+1859775393):60>a?h+((r&s|r&o|s&o)-1894007588):h+((r^s^o)-899497514);c=o;o=s;s=r<<30|r>>>2;r=i;i=h}n[0]=n[0]+i|0;n[1]=n[1]+r|0;n[2]=n[2]+s|0;n[3]=n[3]+o|0;n[4]=n[4]+c|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32;t[(i+64>>>9<<4)+14]=Math.floor(n/4294967296);t[(i+64>>>9<<4)+15]=n;e.sigBytes=4*t.length;this._process();return this._hash},clone:function(){var e=i.clone.call(this);e._hash=this._hash.clone();return e}});e.SHA1=i._createHelper(t);e.HmacSHA1=i._createHmacHelper(t)})();(function(){var e=CryptoJS,h=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init;"string"==typeof t&&(t=h.parse(t));var n=e.blockSize,i=4*n;t.sigBytes>i&&(t=e.finalize(t));t.clamp();for(var r=this._oKey=t.clone(),s=this._iKey=t.clone(),o=r.words,c=s.words,a=0;a