from flask import Flask, request, jsonify import requests from bs4 import BeautifulSoup as bs app = Flask(__name__) API_URL = 'https://api.gplinks.com/api' API_TOKEN = 'dc9faf9392e2665facf1a6dec42a91600773fc5f' STATUS = False @app.route('/') def root(): welcomes = """Welcome To MovieSeries API V2. Check Docs To Learn How To Download Movies at movseries.onrender.com/docs""" return welcomes @app.route('/search', methods=['GET']) def search_movies(): query = request.args.get('query') try: results = fetch_results(query) return jsonify(results) except Exception as e: return jsonify({'error': str(e)}), 500 @app.route('/getmovie', methods=['GET']) def get_movie(): movie_id = request.args.get('id') try: main_link = get_main_link(movie_id) Shortner = f'{API_URL}?api={API_TOKEN}&url={main_link}' r = requests.get(Shortner) data = r.json() shorted = (data['shortenedUrl']) return jsonify({'download_link': shorted}) except Exception as e: return jsonify({'error': str(e)}), 500 @app.route('/noad', methods=['GET']) def noads(): movie_id = request.args.get('id') try: main_link = get_main_link(movie_id) return jsonify({'download_link': main_link}) except Exception as e: return jsonify({'error': str(e)}), 500 def fetch_results(query): headers = { # your headers } params = { 'search': query, } try: r = requests.get('http://scloud.starkflix.cloud/', params=params, headers=headers) r.raise_for_status() print(r.text) # Debug print soup = bs(r.content, 'html.parser') results = [] for row in soup.find_all('tr'): title_tag = row.find('td', class_='title') link_tag = row.find('a') if title_tag and link_tag: title = title_tag.text.strip() file_id = link_tag['href'].split('/')[-1] results.append({'id': file_id, 'title': title}) return results except requests.exceptions.RequestException as e: raise Exception(f"Request error: {str(e)}") except Exception as e: raise Exception(f"Response parsing error: {str(e)}") def get_main_link(movie_id): url = f"http://scloud.starkflix.cloud/file/{movie_id}" try: r = requests.get(url) r.raise_for_status() # Raise an error for bad responses (4xx or 5xx) data = r.content soup = bs(data, 'html5lib') links = soup.find('a') if links: link = links.get('href') return link else: raise Exception(f"No download link found for movie_id: {movie_id}") except requests.exceptions.RequestException as e: raise Exception(f"Request error: {str(e)}") except (AttributeError, TypeError, ValueError) as e: raise Exception(f"Response parsing error: {str(e)}") if __name__ == '__main__': app.run(host='0.0.0.0', port=7860)