import re import json import unicodedata from typing import List, Dict, Any import requests from bs4 import BeautifulSoup from rapidfuzz import fuzz, process
# ---------------------------------------------------------------------- # 5️⃣ Command‑line interface (nice for quick testing) # ---------------------------------------------------------------------- if __name__ == "__main__": import argparse parser = argparse.ArgumentParser( description="Search Hindi movies on FilmyFly / Filmy4wap / Filmywap." ) parser.add_argument( "title", nargs="+", help="Movie title (e.g. 'Da-unaloda stainda apa rahula 2022 hindi')", ) parser.add_argument( "-o", "--output", default="movie_search_result.json", help="File to write JSON output to (default: %(default)s)", ) args = parser.parse_args() import re import json import unicodedata from typing
# Sort by most‑popular (higher source_count) → higher quality quality_order = "4k": 4, "1080p": 3, "720p": 2, "480p": 1, None: 0 matches.sort( key=lambda x: ( -x["source_count"], -quality_order.get(x["quality"].lower() if x["quality"] else None, 0), ) ) ) parser.add_argument( "-o"
@classmethod def search(cls, query: str) -> List[Dict[str, Any]]: url = cls.SEARCH_URL.format(query=query.replace(" ", "-")) soup = BeautifulSoup(cls._get(url).text, "html.parser") cards = soup.select("article.movie-item") results = [] for c in cards: a = c.select_one("h3 a") if not a: continue title = a.get_text(strip=True) href = cls._clean_link(a["href"]) ) ) @classmethod def search(cls