faiaz-halim

gdg-stjohns-python

Jul 22nd, 2025
599
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.21 KB | None | 0 0
  1. import os
  2.  
  3. from flask import Flask, render_template, request
  4. from google import genai
  5. from google.genai import types
  6.  
  7. app = Flask(__name__)
  8.  
  9. PROJECT_ID = "REPLACE_WITH_YOUR_PROJECT_ID"
  10.  
  11. client = genai.Client(
  12.    vertexai=True,
  13.    project=PROJECT_ID,
  14.    location="us-central1",
  15. )
  16.  
  17. # Define the home page route.
  18. @app.route('/', methods=['GET'])
  19. def index():
  20.    '''
  21.   Renders the home page.
  22.   Returns:The rendered template.
  23.   '''
  24.    return render_template('index.html')
  25.  
  26.  
  27. def generate(youtube_link, model, additional_prompt):
  28.  
  29.    # Prepare youtube video using the provided link
  30.    youtube_video = types.Part.from_uri(
  31.        file_uri=youtube_link,
  32.        mime_type="video/*",
  33.    )
  34.  
  35.    # If addtional prompt is not provided, just append a space
  36.    if not additional_prompt:
  37.        additional_prompt = " "
  38.  
  39.    # Prepare content to send to the model
  40.    contents = [
  41.        youtube_video,
  42.        types.Part.from_text(text="""Provide a summary of the video."""),
  43.        additional_prompt,
  44.    ]
  45.  
  46.    # Define content configuration
  47.    generate_content_config = types.GenerateContentConfig(
  48.        temperature = 1,
  49.        top_p = 0.95,
  50.        max_output_tokens = 8192,
  51.        response_modalities = ["TEXT"],
  52.    )
  53.  
  54.    return client.models.generate_content(
  55.        model = model,
  56.        contents = contents,
  57.        config = generate_content_config,
  58.    ).text
  59.  
  60. @app.route('/summarize', methods=['GET', 'POST'])
  61. def summarize():
  62.    '''
  63.   Summarize the user provided YouTube video.
  64.   Returns: Summary.
  65.   '''
  66.  
  67.    # If the request is a POST request, process the form data.
  68.    if request.method == 'POST':
  69.        youtube_link = request.form['youtube_link']
  70.        model = request.form['model']
  71.        additional_prompt = request.form['additional_prompt']
  72.      
  73.        # Generate the summary.
  74.        try:
  75.            summary = generate(youtube_link, model, additional_prompt)
  76.            return summary
  77.  
  78.        except ValueError as e:
  79.            raise e
  80.  
  81.    # If the request is a GET request, redirect to the home page.
  82.    else:
  83.        return redirect('/')
  84.  
  85.  
  86. if __name__ == '__main__':
  87.    server_port = os.environ.get('PORT', '8080')
  88.    app.run(debug=False, port=server_port, host='0.0.0.0')
Advertisement
Add Comment
Please, Sign In to add comment