<div id="player"></div>
@app.route("/search", methods=["GET"]) def search(): q = request.args.get("q", "") if not q: return jsonify("error": "missing query"), 400 try: videos = youtube_search(q) return jsonify("videos": videos) except Exception as exc: return jsonify("error": str(exc)), 500 havoc brother song tamil latest
app = Flask(__name__)
# ---------------------------------------------------------------------- # CONFIG – put your YouTube API key in an environment variable for safety # ---------------------------------------------------------------------- YOUTUBE_API_KEY = os.getenv("YT_API_KEY") YOUTUBE_SEARCH_URL = "https://www.googleapis.com/youtube/v3/search" <div id="player"></div> @app
# ---------------------------------------------------------------------- # Routes # ---------------------------------------------------------------------- @app.route("/", methods=["GET"]) def index(): # Render empty page – the UI will fetch results via AJAX. return render_template("index.html") methods=["GET"]) def search(): q = request.args.get("q"
def youtube_search(query, max_results=5): """Call YouTube Data API and return a list of dicts with video info.""" params = "part": "snippet", "q": query, "type": "video", "order": "date", # newest first "maxResults": max_results, "key": YOUTUBE_API_KEY, "regionCode": "IN", # focus on Indian region (Tamil content) "relevanceLanguage": "ta" # Tamil language bias resp = requests.get(YOUTUBE_SEARCH_URL, params=params) resp.raise_for_status() data = resp.json()
results = [] for item in data.get("items", []): video_id = item["id"]["videoId"] snippet = item["snippet"] results.append( "video_id": video_id, "title": snippet["title"], "channel": snippet["channelTitle"], "thumb": snippet["thumbnails"]["medium"]["url"], "published": snippet["publishedAt"] ) return results