from flask import Flask, request, jsonify from bs4 import BeautifulSoup import requests import re import webbrowser app = Flask(__name__) html_content = """ Torrent

Torrent

""" def get_game_name(html): soup = BeautifulSoup(html, 'html.parser') anchor = soup.find('a', {'href': re.compile(r'\/torrent\/\d+\/')}) if anchor: return anchor.text.strip() return None def get_game_size(html): soup = BeautifulSoup(html, 'html.parser') size_td = soup.find("td", align="right", text=re.compile(r'\d+\.\d+\s*(GB|MB)')) if size_td: return size_td.text.strip() return None def search_games(category, query): if not query: return [] if category == "all": url = f"https://rutor.info/search/0/0/000/0/{query}/" elif category == "movies": urls = [ f"https://rutor.info/search/0/1/000/0/{query}/", # Зарубежные фильмы f"https://rutor.info/search/0/5/000/0/{query}/", # Наши фильмы f"https://rutor.info/search/0/12/000/0/{query}/" # Научно-популярные фильмы ] games = [] for url in urls: response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, "html.parser") torrents = soup.find_all("tr", class_="tum") for torrent in torrents: name = get_game_name(str(torrent)) if name: size = get_game_size(str(torrent)) seeders = torrent.find("span", class_="green").text.strip() leechers = torrent.find("span", class_="red").text.strip() download_link = torrent.find("a", class_="downgif")["href"] game_info = {'name': name, 'size': size, 'seeders': seeders, 'leechers': leechers, 'download_link': download_link} games.append(game_info) return games elif category == "series": urls = [ f"https://rutor.info/search/0/4/000/0/{query}/", # Зарубежные сериалы f"https://rutor.info/search/0/16/000/0/{query}/" # Наши сериалы ] games = [] for url in urls: response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, "html.parser") torrents = soup.find_all("tr", class_="tum") for torrent in torrents: name = get_game_name(str(torrent)) if name: size = get_game_size(str(torrent)) seeders = torrent.find("span", class_="green").text.strip() leechers = torrent.find("span", class_="red").text.strip() download_link = torrent.find("a", class_="downgif")["href"] game_info = {'name': name, 'size': size, 'seeders': seeders, 'leechers': leechers, 'download_link': download_link} games.append(game_info) return games else: url = f"https://rutor.info/search/0/{category}/000/0/{query}/" response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, "html.parser") torrents = soup.find_all("tr", class_="tum") games = [] for torrent in torrents: name = get_game_name(str(torrent)) if name: size = get_game_size(str(torrent)) seeders = torrent.find("span", class_="green").text.strip() leechers = torrent.find("span", class_="red").text.strip() download_link = torrent.find("a", class_="downgif")["href"] game_info = {'name': name, 'size': size, 'seeders': seeders, 'leechers': leechers, 'download_link': download_link} games.append(game_info) return games return [] @app.route('/') def index(): return html_content @app.route('/search//') def search_endpoint(category, query): games = search_games(category, query) return jsonify(games) if __name__ == '__main__': app.run(debug=True)