def delete(mov_id): print('***** MOVIE DELETE *****') movie = MovieDao.find_by_id(mov_id) # Primary Key로 삭제하려는 리뷰의 Row를 불러옴. try: MovieDao.delete_movie(movie.mov_id) # 해당 리뷰를 데이터베이스에서 삭제 return {'code': 0, 'message': 'SUCCESS'}, 200 except: return {'message': 'An error occured deleting the movie'}, 500
def find_all(cls): sql = cls.query df = pd.read_sql(sql.statement, sql.session.bind) df_movie_id = df['mov_id'] print(df_movie_id[0]) print(len(df['mov_id'])) count = 0 for movie in df_movie_id: df_movie_id[count] = MovieDao.find_by_id(movie).title_kor print(MovieDao.find_by_id(movie).title_kor) count += 1 return json.loads(df.to_json(orient='records'))
def get(self, title): print('***** MOVIE SEARCH *****') movie = MovieDao.find_by_title(title) movielist = [] for d in movie: movielist.append(d.json()) return movielist
def post(): print('*****') parser = reqparse.RequestParser() parser.add_argument('mov_id', type=str, required=True, help='This field should be a movieid') args = parser.parse_args() print('*********') print(f'{args}') print('*********') movieid = args['mov_id'] print(movieid) try: MovieDao.delete_movie(movieid) return{'code':0, 'message':'SUCCESS'}, 200 except: return {'message':'An error occured registering the movie'}, 500
def find_by_movie_title(cls, movie_title): print("FIND BY MOVIE TITLE 진입 !") Session = openSession() session = Session() mov_id = MovieDao.find_by_title_return_id(movie_title) newtables = session.query(cls, MovieDto.title_kor, UserDto.fname).filter(MovieDto.mov_id.like(mov_id))\ .filter(cls.mov_id.like(mov_id)).filter(cls.usr_id.like(UserDto.usr_id)) df = pd.read_sql(newtables.statement, newtables.session.bind) print(df) return json.loads(df.to_json(orient='records'))
def get(id: str): print('##### get #####') print(id) try: reco_movie = MovieDao.find_by_title(id) data = reco_movie.json() print(data) return data, 200 except: print('fail') return {'message': 'Title not found'}, 404
def get(): print("Top Movie 진입") rank = ReviewDao.group_by_for_top( ) # 영화 = Key, 점수 = Value로 분류한 Dict를 받아옴. movie_top_by_review = max(rank, key=rank.get) # Dict내 Value 점수가 가장 높은 영화 찾기. print(movie_top_by_review) top_movie_info = MovieDao.find_by_title( movie_top_by_review) # 해당 영화의 정보를 받아옴 print('# * 30') return top_movie_info[0].json( ) # 해당 정보가 리스트에 담겨 있어 인덱싱으로 꺼내온 후 json화하여 리턴한다.
def get(self, title): print("SEARCH 진입") print(f'타이틀 : {title}') movie = MovieDao.find_by_title(title) # review = {review[i]: review[i + 1] for i in range(0, len(review), 2)} # review = json.dump(review) movielist = [] # for review in reviews: # reviewdic for rev in movie: movielist.append(rev.json()) # print(f'Review type : {type(review[0])}') print(f'Review List : {movielist}') return movielist[:]
def get(self, title_naver_eng): print("영화 추천") print(f'ID : {title_naver_eng}') ai = self.movieai recommendation_df = ai.hook(title_naver_eng) print(recommendation_df) recommendation_mov_id = recommendation_df['id'] print(recommendation_mov_id) mov_id_list = recommendation_df['id'].tolist() print(mov_id_list) # a = MovieDao.find_by_id(mov_id_list[0]) # print(a) # print(a.json()) movie_list = [] for i in mov_id_list: print(i) try: movie = MovieDao.find_by_id(i) movie_list.append(movie) except: print('없는 영화') if len(movie_list) >= 6: break movie_json_list = [] for d in movie_list: movie_json_list.append(d.json()) print('***** end *****') print(movie_json_list) return movie_json_list # if __name__ == "__main__": # t = MovieRecommendation() # t.hook()
def put(): parser = reqparse.RequestParser() parser.add_argument('mov_id', type=int, required=True, help='This field should be a movieid') parser.add_argument('title_kor', type=str, required=True, help='This field should be a title_kor') parser.add_argument('title_naver_eng', type=str, required=True, help='This field should be a title_naver_eng') parser.add_argument('genres_kor', type=str, required=True, help='This field should be a genres_kor') parser.add_argument('keyword_kor', type=str, required=True, help='This field should be a keyword_kor') parser.add_argument('running_time_kor', type=int, required=True, help='This field should be a running_time_kor') parser.add_argument('year_kor', type=str, required=True, help='This field should be a year_kor') parser.add_argument('director_naver_kor', type=str, required=True, help='This field should be a director_naver_kor') parser.add_argument('actor_naver_kor', type=str, required=True, help='This field should be a actor_naver_kor') parser.add_argument('movie_l_rating', type=float, required=True, help='This field should be a movie_l_rating') parser.add_argument('movie_l_rating_count', type=int, required=True, help='This field should be a movie_l_rating_count') parser.add_argument('movie_l_popularity', type=float, required=True, help='This field should be a movie_l_popularity') parser.add_argument('link_naver', type=str, required=True, help='This field should be a link_naver') parser.add_argument('image_naver', type=str, required=True, help='This field should be a image_naver') args = parser.parse_args() print(args) movies = MovieDto(args['mov_id'], \ args['title_kor'], \ args['title_naver_eng'], \ args['genres_kor'], \ args['keyword_kor'], \ args['running_time_kor'], \ args['year_kor'], \ args['director_naver_kor'], \ args['actor_naver_kor'], \ args['movie_l_rating'], \ args['movie_l_rating_count'], \ args['movie_l_popularity'], \ args['link_naver'], \ args['image_naver']) print('*********') print(f'{args}') try: MovieDao.modify_movie(args) return {'code': 0, 'message': 'SUCCESS'}, 200 except: return {'message': 'An error occured registering the movie'}, 500
def get(): data = MovieDao.find_all() print(data[0]) return data, 200
def post(): rmd = MovieDao() rmd.bulk()
app = Flask(__name__) CORS(app, resources={r'/api/*': {"origins": "*"}}) app.config['SQLALCHEMY_DATABASE_URI'] = url app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) api = Api(app) with app.app_context(): db.create_all() with app.app_context(): print('***** 데이터 DB 삽입 *****') count_user = UserDao.count() count_actor = ActorDao.count() count_movie = MovieDao.count() count_rating = RatingDao.count() count_review = ReviewDao.count() print(f'USR TABLE COUNT : {count_user[0]:6}') print(f'ACT TABLE COUNT : {count_actor[0]:6}') print(f'MOV TABLE COUNT : {count_movie[0]:6}') print(f'RAT TABLE COUNT : {count_rating[0]:6}') print(f'REV TABLE COUNT : {count_review[0]:6}') if count_user[0] == 0: print('***** USR DATA INSERT *****') UserDao.bulk() if count_actor[0] == 0: print('***** ACT DATA INSERT *****')
def get(): print('***** MOVIE ALL LIST RANDOM *****') data = MovieDao.find_all_sort_random() return data, 200
def post(): print('***** MOVIE DB INSERT *****') rmd = MovieDao() rmd.bulk()
def post(): print('***** MOVIE REGISTER *****') parser.add_argument('mov_id', type=int, required=False, help='This field should be a movieid') parser.add_argument('title_kor', type=str, required=True, help='This field should be a title_kor') parser.add_argument('title_naver_eng', type=str, required=True, help='This field should be a title_naver_eng') parser.add_argument('genres_kor', type=str, required=True, help='This field should be a genres_kor') parser.add_argument('keyword_kor', type=str, required=True, help='This field should be a keyword_kor') parser.add_argument('running_time_kor', type=int, required=True, help='This field should be a running_time_kor') parser.add_argument('year_kor', type=str, required=True, help='This field should be a year_kor') parser.add_argument('director_naver_kor', type=str, required=True, help='This field should be a director_naver_kor') parser.add_argument('actor_naver_kor', type=str, required=True, help='This field should be a actor_naver_kor') parser.add_argument('movie_l_rating', type=float, required=True, help='This field should be a movie_l_rating') parser.add_argument('movie_l_rating_count', type=int, required=True, help='This field should be a movie_l_rating_count') parser.add_argument('movie_l_popularity', type=float, required=True, help='This field should be a movie_l_popularity') parser.add_argument('link_naver', type=str, required=True, help='This field should be a link_naver') parser.add_argument('image_naver', type=str, required=True, help='This field should be a image_naver') args = parser.parse_args() try: MovieDao.register_movie(args) return {'code': 0, 'message': 'SUCCESS'}, 200 except: return {'message': 'An error occured registering the movie'}, 500