from flask import Flask, request, jsonify
from bs4 import BeautifulSoup
import requests
import re
import webbrowser
app = Flask(__name__)
html_content = """
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)