示例#1
0
def get_image_list_from_subtitles(path, subs=[], dar=None):
    """
    :param path: video path
    :param subs: list of subtitle dictionaries
    :param dar: display aspect ratio from video
    """
    sanity_checks(subs)

    logger.info(f"Subtitles found: {len(subs)}")

    capture = cv2.VideoCapture(path)
    if not dar:
        dar = get_dar(path)

    fps = capture.get(cv2.CAP_PROP_FPS)
    for subtitle in subs:
        start, end = start_end_gif(fps, sub_dict=subtitle)
        end += 10

        logger.info(f"Start: {start} - end: {end}; diff: {start - end}")
        for i in range(start, end, 3):
            capture.set(1, i)
            pil = scale_to_gif(
                cv2_to_pil(fix_dar(path,
                                   capture.read()[1], dar)))
            yield draw_quote(center_crop_image(pil), subtitle["message"])
示例#2
0
文件: db.py 项目: Galante-hub/kinobot
def insert_movie(movie_dict):
    """
    :param movie_dict: Movie dictionary from Radarr
    """
    # pylint: disable=E1101
    i = movie_dict

    filename = i["movieFile"]["path"]
    to_srt = Path(filename).with_suffix("")
    srt = f"{to_srt}.en.srt"
    display_aspect_ratio = get_dar(filename)

    logger.info("Getting movie info from TheMovieDatabase.org")
    movie = tmdb.Movies(i["tmdbId"])
    movie.info()
    country_list = ", ".join([i["name"] for i in movie.production_countries])
    movie.credits()
    dirs = [m["name"] for m in movie.crew if m["job"] == "Director"]
    logger.info("Ok")

    values = (
        movie.title,
        getattr(movie, "original_title", movie.title),
        movie.release_date.split("-")[0],
        ", ".join(dirs),
        country_list,
        input(f"Category for '{movie.title}':\n- ") or "Certified Kino",
        f"{IMAGE_BASE}{getattr(movie, 'poster_path', 'Unknown')}",
        f"{IMAGE_BASE}{getattr(movie, 'backdrop_path', 'Unknown')}",
        filename,
        srt,
        i["tmdbId"],
        i["overview"],
        movie.popularity,
        movie.budget,
        i["movieFile"]["quality"]["quality"]["name"].split("-")[0],
        i["imdbId"],
        i["movieFile"]["mediaInfo"]["runTime"],
        display_aspect_ratio,
    )

    insert_into_table(values)

    logger.info(f"Added: {movie.title}")
示例#3
0
文件: db.py 项目: Galante-hub/kinobot
def update_dar_from_table(table="movies"):
    """
    Update all files with missing DAR from table.

    :param table
    """
    with sqlite3.connect(KINOBASE) as conn:
        paths = conn.execute(
            f"select path from {table} where dar=0").fetchall()
        logger.info(f"Files with missing DAR: {len(paths)}")
        for path in paths:
            dar = get_dar(path[0])
            conn.execute(
                f"update {table} set dar=? where path=?",
                (
                    dar,
                    path[0],
                ),
            )
            conn.commit()
示例#4
0
def get_image_list_from_range(path, range_=(0, 7), dar=None):
    """
    :param path: video path
    :param subs: range of seconds
    :param dar: display aspect ratio from video
    """
    sanity_checks(range_=range_)

    logger.info("About to extract GIF for range %s", range_)

    capture = cv2.VideoCapture(path)
    if not dar:
        dar = get_dar(path)

    fps = capture.get(cv2.CAP_PROP_FPS)
    start, end = start_end_gif(fps, range_=range_)

    logger.info(f"Start: {start} - end: {end}; diff: {start - end}")
    for i in range(start, end, 3):
        capture.set(1, i)
        yield scale_to_gif(
            center_crop_image(cv2_to_pil(fix_dar(path,
                                                 capture.read()[1], dar))))