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', [])))
Example #2
0
File: app.py Project: Hardik44/imdb
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'}
Example #3
0
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
Example #4
0
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
Example #5
0
    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("保存数据成功")
Example #6
0
 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)
Example #8
0
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)
Example #9
0
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)
Example #10
0
    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)
Example #11
0
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')
Example #12
0
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')]))
Example #13
0
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
Example #14
0
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.",
Example #17
0
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