Beispiel #1
0
def search_actor(name):
    """
    Searches for actors in IMDb and return a list of Actor.
    """
    imdb_access = imdb.IMDb()
    result = imdb_access.search_person(name)
    actors = [Actor.create(r, False) for r in result] if result else []
    return actors
Beispiel #2
0
def get_actor_info(actor_id):
    """
    Returns Actor with full info from IMDb.
    """
    cache_key = ACTOR_CACHE_KEY_PREFIX + str(actor_id)
    actor = cache.get(cache_key)
    if not actor:
        imdb_access = imdb.IMDb()
        result = imdb_access.get_person(actor_id)
        actor = Actor.create(result, True) if result.data else None
        cache.set(cache_key, actor, CACHE_EXPIRATION_TIME)
    return actor
Beispiel #3
0
class TestParseActor(TestCase):
    id = "id"
    name = "name"
    url = "url"
    actor_details = {
        "id": id,
        "name": name,
        "url": url
    }
    expected = Actor(fid=id, name=name, url=url)

    def test_parses_successfully(self):
        self.assertEqual(self.expected, parse_actor(self.actor_details))
Beispiel #4
0
def add_film():
    form = add_film_form.AddFilmForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        movie = Movie(id=form.kp_id.data)
        if_exist = False
        try:
            movie.get_content('main_page')
        except Exception:
            if_exist = False
        else:
            if_exist = True

        if if_exist and len(session.query(Film.Film).filter(Film.Film.kp_id == form.kp_id.data).all()) == 0:
            film = Film.Film(movie.id, movie.title, movie.title_en, movie.plot, movie.year)
            session.add(film)
            session.commit()

            session = db_session.create_session()
            actors_list = movie.actors
            actors_to_add = actors_list.copy()
            actors_list = list(map(str, actors_list))
            for actor in session.query(Actor.Actor).filter(Actor.Actor.name.in_(actors_list)):
                actors_list.remove(str(actor.name))
                if actor.films != None:
                    actor.films = str(actor.films) + str(film.id) + '/'
                else:
                    actor.films = str(film.id) + '/'
            for i in actors_list:
                actor = Actor.Actor(str(i))
                actor.films = str(film.id) + '/'
                session.add(actor)
            session.commit()

            session = db_session.create_session()
            actors_str = ""
            for i in actors_to_add:
                actor_id = str(session.query(Actor.Actor).filter(Actor.Actor.name == str(i)).first().id)
                actors_str += "/" + actor_id

            film = session.query(Film.Film).filter(Film.Film.id == film.id).first()
            if not film.actors:
                film.actors = actors_str
            else:
                film.actors = str(film.actors) + actors_str
            session.commit()
            return redirect('/add_film')
    return render_template("add_film.html", form=form)
Beispiel #5
0
def parse_actor(actor_details):
    return Actor(fid=actor_details["id"],
                 name=actor_details["name"],
                 url=actor_details["url"])