def json_to_movie(node): run_time = node.get('runtime', None) if not run_time: run_time = 0 title = node.get('title', None) if not title: title = node.get('original_title', None) if not title: title = 'Unknown' release_date = node.get('release_date', None) if release_date: release_date = dateutil.parser.parse(release_date) return models.Movie(title=title, description=node.get('overview', 'N/A'), poster_path=node.get('poster_path', None), release_date=release_date, run_time=run_time, box_office=int(node.get('revenue', 0)), genres=json_to_genres(node.get('genres', [])), budget=int(node.get('budget', 0)), production_company=json_to_company( node.get('production_companies', [])))
def add_movie(): body = request.get_json(force=True) m = models.Movie() m.name = body['name'] m.director = body['director'] m.popularity = body['99popularity'] m.imdb_score = body['imdb_score'] for genre in body['genre']: genre = genre.strip() genre_obj = db.session.query( models.Genre).filter_by(name=genre).one_or_none() if not genre_obj: genre_obj = models.Genre() genre_obj.name = genre db.session.add(genre_obj) db.session.commit() m.genre.append(genre_obj) db.session.add(m) db.session.commit() return jsonify({'success': True}), 200, {'ContentType': 'application/json'}
def create_movies(db: Session, movies: List[MovieCreate]): db_movies = [models.Movie(**movie.dict()) for movie in movies] db.add_all(db_movies) db.commit() for movie in db_movies: db.refresh(movie) return db_movies
def create_movie(db: Session, movie: schemas.MovieCreate): # convert schema object from rest api to db model object db_movie = models.Movie(title=movie.title, year=movie.year) # add in db cache and force insert db.add(db_movie) db.commit() # retreive object from db (to read at least generated id) db.refresh(db_movie) return db_movie
def pipeline(self, item): movie = models.Movie(title=item["name"], img_url=item["icon"], download_url=item["url"]) session = models.Session() session.add(movie) session.commit() session.close() print("保存数据成功")
def post(self): name = self.request.get("name") rating = int(self.request.get("rating")) piclink = self.request.get("piclink") movie = models.Movie( name=name, rating=rating, piclink=piclink, ) movie.put() return self.render_template("add-post.html")
def create_movie(): if not request.json: abort(400) # validate user input assert request.json['name'] assert request.json['major_genre'] # TODO: sanitize user input movie_name = request.json.get('name', '') movie_major_genre = request.json.get('major_genre', '') new_movie = models.Movie(name=movie_name, major_genre_id=movie_major_genre) new_movie.save() return jsonify(movie=new_movie.serialize(), status=201)
def add(): if request.method == 'POST': p_title = request.form.get('title', None) p_year = request.form.get('year', None) if not p_title or not p_year: flash('input error.') return redirect(url_for('show_all')) newobj = models.Movie(title=p_title, year=p_year) db.session.add(newobj) db.session.commit() Movies = models.Movie.query.all() flash('新增成功.') return redirect(url_for('show_all')) Movies = models.Movie.query.all() return render_template('movieAdd.html', admins=Movies, user=name)
def real_mapper(queryset): this = Message.objects(task=queryset.task, payload=queryset.payload) STATE = True Model = getattr(models, queryset.task) this.update(set__inprocess=True) if queryset.task == 'Movie': for process in queryset.payload: ret = parse.get_movie_info(process) ret['movieid'] = process models.Movie(**ret).save() return Parse = getattr(parse, queryset.task + 'Parse') for process in queryset.payload: try: p = Parse(process) count = 1 while 1: haspage = p() if haspage is None: # 很可能404 break result, hasnext = haspage Model(**result).save() # 别名体系, 这样只需要全局记录一个人物就知道他们的全部别名 for k, v in p._alias.items(): models.AliasName.objects.get_or_create(name=k)[0].update( add_to_set__alias=v) if hasnext: count += 1 url = p.original_url p.set_url(url.replace('.html', '-{}.html'.format(count))) else: #没有下一页就退出循环 break except: raise STATE = False else: models.IdFinished.objects(year=queryset.year).update( add_to_set__ids=[process]) if STATE: this.update(set__state=2) else: this.update(set__state=3) this.update(set__inprocess=False)
def mutate(root: object, info: graphene.ResolveInfo, movie_data=None): session = info.context["session"] newMovie = models.Movie() newMovie.frenchTitle = movie_data.frenchTitle newMovie.originalTitle = movie_data.originalTitle # Recherche correspondance ID status for movieStatus in session.query(models.MovieStatus): if movieStatus.description == movie_data.status: newMovie.statusId = movieStatus.id break if not newMovie.statusId: raise RuntimeError # Ajout en base session.add(newMovie) session.commit() return CreateMovie(movie=newMovie)
def addMovie(): if request.method == 'POST': title = request.form['title'] year = int(request.form['year']) genre = request.form['genre'] runtime = int(request.form['runtime']) overview = request.form['overview'] castList = list(request.form['cast'].split('\n')) cast = [tuple(c.split(',')) for c in castList] # Add movie to db m = models.Movie(title=title, year=year, genre=genre, runtime=runtime, overview=overview) db.session.add(m) db.session.commit() db.session.refresh(m) # Add any new cast members with their roles only if new name for name, role in cast: # Check if the actor already exists exists = models.Talent.query.filter_by(name=name).first() if not exists: t = models.Talent(name=name) db.session.add(t) db.session.commit() db.session.refresh(t) statement = models.stars.insert().values(movieId=m.id, talentId=t.tid, role=role) else: statement = models.stars.insert().values(movieId=m.id, talentId=exists.tid, role=role) db.session.execute(statement) db.session.commit() return redirect('/movie/' + str(m.id)) return render_template('addMovie.html')
def create_requests_and_save_datas(type, tag, sort): session = sqla['session'] cookies['bid'] = random_str(11) params = { 'type': type, 'tag': tag, 'sort': sort, 'page_limit': 2000, 'page_start': 0 } r = requests.get(douban_movie_api_url, params=params, cookies=cookies, timeout=20) if r.status_code != 200: return datas = parsers.douban_api.start_parser(r.text) for data in datas: douban_id = data.get('douban_id') if douban_id in video_douban_ids: continue data['subtype'] = type data['crawler_tag'] = tag data['crawler_sort'] = sort if type == 'movie': video = models.Movie(**data) elif type == 'tv' and tag == '日本动画': video = models.Animation(**data) else: video = models.TV(**data) session.add(video) session.commit() video_douban_ids.add(douban_id) print(','.join([douban_id, data.get('title')]))
def create_movie(db: Session, movie: schemas.MovieCreate): db_movie = models.Movie(**movie.dict()) db.add(db_movie) db.commit() db.refresh(db_movie) return db_movie
def parse(): print("\nJob started\n") data = { "song": [], "movie": [], "app": [], } files_name = [] data_file = requests.get(f"{URL}/files_list.data") files_list = set(data_file.text.split("\n")) engine = sa.create_engine(DB_PATH) # print('!!! Dropping all tables !!!') # models.Base.metadata.drop_all(engine, models.Base.metadata.tables.values()) # print('!!! All tables dropped !!!') models.Base.metadata.create_all(engine, models.Base.metadata.tables.values()) Session = sessionmaker(bind=engine) with Session.begin() as session: processed_df = {df.name for df in session.query(models.DataFile).all()} for f in files_list - processed_df: print("-" * 42) print(f"New file ::: {f}") content = requests.get(f"{URL}/{f}").json() print(f"{len(content)} elements") for obj in content: t = obj["type"] if t == "song": data["song"].append( obj["data"] | {"ingestion_time": datetime.datetime.now()}) if t == "movie": data["movie"].append( obj["data"] | { "original_title_normalized": func_title(obj["data"]["original_title"]) }) if t == "app": data["app"].append(obj["data"] | {"is_awesome": func_rate(obj["data"])}) files_name.append(f) print("*" * 42) print(f"Data files parsed: {len(files_name)}") print(f"New song objects: {len(data['song'])}") print(f"New movie objects: {len(data['movie'])}") print(f"New app objects: {len(data['app'])}") if len(files_name): print("Inserting into db......") Session = sessionmaker(bind=engine) with Session() as session: session.add_all([models.Song(**song) for song in data["song"]]) session.add_all([models.Movie(**movie) for movie in data["movie"]]) session.add_all([models.App(**app) for app in data["app"]]) session.add_all( [models.DataFile(name=file_name) for file_name in files_name]) session.commit() print("^" * 42) print( f"Total song objects in db: {session.query(models.Song).count()}") print( f"Total movie objects in db: {session.query(models.Movie).count()}" ) print(f"Total app objects in db: {session.query(models.App).count()}") print( f"Total data files parsed: {session.query(models.DataFile).count()}" ) print("-" * 42)
def addMovie(self, title, desc, comments, rating, info): self.database.append(models.Movie(title.decode('utf-8'), desc, comments, rating.decode('utf-8'), info.decode('utf-8'))) self.database_object.save(self.database)
import models # Contains models used to populate the site generator. movies = [ models.Movie( "Toy Story", "A story of a boy and his toys that come to life.", "http://img.lum.dolimg.com/v1/images/open-uri20150422-20810-m8zzyx_5670999f.jpeg", "Pixar Animation Studios", "1995", "https://www.youtube.com/watch?v=KYz2wyBy3kc"), models.Movie( "Spirited Away", "Chihiro Ogino, a sullen ten-year-old girl who, while moving to " "a new neighborhood, enters the spirit world.", "https://upload.wikimedia.org/wikipedia/en/thumb/3/30/Spirited_Away_poster.JPG/220px-Spirited_Away_poster.JPG", "Hayao Miyazaki", "2008", "https://www.youtube.com/watch?v=ByXuk9QqQkk"), models.Movie( "The Shawshank Redemption", "Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.", "http://ia.media-imdb.com/images/M/MV5BODU4MjU4NjIwNl5BMl5BanBnXkFtZTgwMDU2MjEyMDE@._V1_SY1000_CR0,0,672,1000_AL_.jpg", "Frank Darabont", "1994", "https://www.youtube.com/watch?v=6hB3S9bIaco"), models.Movie( "Pulp Fiction", "The lives of two mob hit men, a boxer, a gangster's wife, and a pair of diner bandits intertwine in four tales of violence and redemption.", "http://ia.media-imdb.com/images/M/MV5BMTkxMTA5OTAzMl5BMl5BanBnXkFtZTgwNjA5MDc3NjE@._V1_UX182_CR0,0,182,268_AL_.jpg", "Quentin Tarantino", "1994", "https://www.youtube.com/watch?v=wZBfmBvvotE"), models.Movie( "Inception", "A thief, who steals corporate secrets through use of dream-sharing technology, is given the inverse task of planting an idea into the mind of a CEO.",
def make_movie(db: Session, star: schemas.MovieCreate): db_movies = models.Movie(title=movie.title, year=movie.year) db.add(db_movies) db.commit() db.refresh(db_movies) return db_movies