Video python snippets

Get up to speed with the video API

Generate 20 captions

import requests
import json

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

url = "https://" + X_RapidAPI_Host + "/generate_video_frame_prompt"

files = {
    'image': ('test.jpg', open('./test.jpg', 'rb'), 'image/jpeg')   
}

data = {
  "standard_filter_id": "0", # 1-20, 0 is disabled 
  "artistic_filter_id": "0", # 1-100, 0 is disabled
  "all_standard_filters": "true", # return all 20 prompts
  "all_artistic_filters": "false", # return all 100 prompts
  "raw_captions": "false" # remove pre and post fix to the caption
}

response = requests.post(url, files=files, data=data, headers=headers)
prompts = data = json.loads(response.text)

Create 20 versions of one frame

import requests

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"

data = {
      "resolution": "sd", #sd, full-hd, or 4k
      "prompt": "", # The prompt to colorize an image
      "auto_color": "false", # Apply automatic color balancing
      "white_balance": "false", # Apply automatic white balancing
      "temperature": "0.0", # -1.0 - 1.0, Apply color temperature
      "saturation": "1.0" # 0.0 - 2.0, Change saturation 
    }

for i, prompt in enumerate(prompts):
    
    files = {
        'image': ('test.jpg', open('./test.jpg', 'rb'), 'image/jpeg')   
    }

    data['prompt'] = prompt

    response = requests.post(url, files=files, data=data, headers=headers)
    f = open(str(i) + ".jpg", 'wb')
    f.write(response.content)
    f.close()

Extract all the frames from a video

import cv2
import os

def extract_images_from_video(video_path, output_folder):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # Open the video file
    video = cv2.VideoCapture(video_path)

    # Check if the video was opened successfully
    if not video.isOpened():
        print("Error: Could not open the video file.")
        return

    # Extract images from the video
    frame_number = 0
    while True:
        ret, frame = video.read()

        # Break the loop if we have reached the end of the video
        if not ret:
            break

        # Save the current frame as an image
        output_filename = os.path.join(output_folder, f"frame{frame_number}.png")
        cv2.imwrite(output_filename, frame)
        frame_number += 1

    # Release the video object and close all windows
    video.release()
    cv2.destroyAllWindows()
    print(f"Images extracted and saved in the folder: {output_folder}")

Colorize all the frames with the same prompt

import os
import time
import requests

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

def colorize_image(input_file, output_file, prompt):
  
    url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"
    
    files = {
        'image': (input_file, open(input_file, 'rb'), 'image/jpeg')
    }
    data = {
        "resolution": "sd",
        "prompt": prompt,
        "auto_color": "false",
        "white_balance": "false",
        "temperature": "0.0",
        "saturation": "1.0"
    }
    response = requests.post(url, files=files, data=data, headers=headers)
    
    with open(output_file, 'wb') as f:
        f.write(response.content)

def process_files(input_folder, output_folder, prompt):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for filename in os.listdir(input_folder):
        input_file = os.path.join(input_folder, filename)
        output_file = os.path.join(output_folder, f'colorized_{filename}')
        success = False
        retries = 0

        while not success and retries < 10:
            try:
                colorize_image(input_file, output_file, prompt)
                success = True
            except Exception as e:
                print(f"Error processing {input_file}: {e}")
                time.sleep(60)
                retries += 1

input_folder = './input'
output_folder = './output'
prompt = "Your selected prompt"
process_files(input_folder, output_folder, prompt)

Colorize all the images with the same reference image

import os
import time
import requests
from pathlib import Path

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

def colorize_files(input_folder, output_folder, ref_image_path):
    
    url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"
   
    data = {
        "resolution": "sd",
        "auto_color": "false",
        "white_balance": "false",
        "temperature": "0.0",
        "saturation": "1.0"
    }
    
    Path(output_folder).mkdir(parents=True, exist_ok=True)
    
    for file_name in os.listdir(input_folder):
        if file_name.lower().endswith(('.jpg', '.jpeg')):
            input_file_path = os.path.join(input_folder, file_name)
            output_file_path = os.path.join(output_folder, f'colorized_{file_name}')
            
            for _ in range(10):
                try:
                    files = {
                        'image': (file_name, open(input_file_path, 'rb'), 'image/jpeg'),
                        'image_ref': ('ref_image.jpg', open(ref_image_path, 'rb'), 'image/jpeg')
                    }
                    response = requests.post(url, files=files, data=data, headers=headers)
                    response.raise_for_status()
                    
                    with open(output_file_path, 'wb') as f:
                        f.write(response.content)
                    
                    print(f"Colorized {file_name} and saved as {output_file_path}")
                    break
                except Exception as e:
                    print(f"Error while processing {file_name}: {e}")
                    time.sleep(60)

input_folder = './input_folder'
output_folder = './output_folder'
ref_image_path = 'ref_image.jpg'

colorize_files(input_folder, output_folder, ref_image_path)

Use the previous frame to colorize one after each other

import os
import time
import requests
from pathlib import Path

X_RapidAPI_Key = '4116843d07msh704be0dfa337826p108b3fj43524'
X_RapidAPI_Host = 'colorize-video.p.rapidapi.com'

headers = {
    'X-RapidAPI-Key': '4116843d07msh704be0dfa337826p108b3fjsn7ab402961f9f',
    'X-RapidAPI-Host': 'colorize-video.p.rapidapi.com',
}

def colorize_images(folder_path):
    
    url = "https://" + X_RapidAPI_Host + "/colorize_video_frame_with_prompt"
   
    data = {
        "resolution": "sd",
        "auto_color": "false",
        "white_balance": "false",
        "temperature": "0.0",
        "saturation": "1.0"
    }
    
    output_folder = Path(folder_path) / "colorized"
    output_folder.mkdir(parents=True, exist_ok=True)

    reference_image = Path(folder_path) / "the_first_reference.jpg"

    for file in os.listdir(folder_path):
        if file.endswith(".jpg") or file.endswith(".jpeg"):
            input_file = Path(folder_path) / file

            retries = 10
            while retries > 0:
                try:
                    files = {
                        'image': (file, open(input_file, 'rb'), 'image/jpeg'),
                        'image_ref': ('ref_image.jpg', open(reference_image, 'rb'), 'image/jpeg')
                    }

                    response = requests.post(url, files=files, data=data, headers=headers)
                    response.raise_for_status()

                    colorized_file = output_folder / f'colorized_{file}'
                    with open(colorized_file, 'wb') as f:
                        f.write(response.content)

                    reference_image = colorized_file
                    break

                except requests.exceptions.RequestException:
                    retries -= 1
                    time.sleep(60)
                    
colorize_images("path/to/your/folder")

Last updated