from flask import Flask, render_template, request, jsonify import requests import os import random app = Flask(__name__) # Huggingface URL list HUGGINGFACE_URLS = [ "https://huggingface.co/spaces/ginipick/Tech_Hangman_Game", "https://huggingface.co/spaces/openfree/deepseek_r1_API", "https://huggingface.co/spaces/ginipick/open_Deep-Research", "https://huggingface.co/spaces/aiqmaster/open-deep-research", "https://huggingface.co/spaces/seawolf2357/DeepSeek-R1-32b-search", "https://huggingface.co/spaces/ginigen/LLaDA", "https://huggingface.co/spaces/VIDraft/PHI4-Multimodal", "https://huggingface.co/spaces/ginigen/Ovis2-8B", "https://huggingface.co/spaces/ginigen/Graph-Mind", "https://huggingface.co/spaces/ginigen/Workflow-Canvas", "https://huggingface.co/spaces/ginigen/Design", "https://huggingface.co/spaces/ginigen/Diagram", "https://huggingface.co/spaces/ginigen/Mockup", "https://huggingface.co/spaces/ginigen/Infographic", "https://huggingface.co/spaces/ginigen/Flowchart", "https://huggingface.co/spaces/aiqcamp/FLUX-Vision", "https://huggingface.co/spaces/ginigen/VoiceClone-TTS", "https://huggingface.co/spaces/openfree/Perceptron-Network", "https://huggingface.co/spaces/openfree/Article-Generator", ] # Transform Huggingface URL to direct space URL def transform_url(url): prefix = "https://huggingface.co/spaces/" if url.startswith(prefix): rest = url[len(prefix):] return f"https://{rest.replace('/', '-')}.hf.space" return url # Extract model/space info from URL def extract_model_info(url): parts = url.split('/') if len(parts) < 6: return None if parts[3] == 'spaces' or parts[3] == 'models': return { 'type': parts[3], 'owner': parts[4], 'repo': parts[5], 'full_id': f"{parts[4]}/{parts[5]}" } elif len(parts) >= 5: # Other URL format return { 'type': 'models', # Default 'owner': parts[3], 'repo': parts[4], 'full_id': f"{parts[3]}/{parts[4]}" } return None # Extract title from the last part of URL def extract_title(url): parts = url.split("/") title = parts[-1] if parts else "" return title.replace("_", " ").replace("-", " ") # Generate random likes count (since we're removing the actual likes functionality) def generate_likes_count(): return random.randint(10, 500) # Homepage route @app.route('/') def home(): return render_template('index.html') # URL list API @app.route('/api/urls', methods=['GET']) def get_urls(): search_query = request.args.get('search', '').lower() results = [] for url in HUGGINGFACE_URLS: title = extract_title(url) model_info = extract_model_info(url) transformed_url = transform_url(url) if not model_info: continue if search_query and search_query not in url.lower() and search_query not in title.lower(): continue # Generate random likes count likes_count = generate_likes_count() results.append({ 'url': url, 'embedUrl': transformed_url, 'title': title, 'model_info': model_info, 'likes_count': likes_count, 'owner': model_info['owner'] # Include owner ID }) return jsonify(results) if __name__ == '__main__': # Create templates folder os.makedirs('templates', exist_ok=True) # Create index.html file with open('templates/index.html', 'w', encoding='utf-8') as f: f.write(''' 허깅페이스 스페이스 그리드

허깅페이스 스페이스 임베딩 뷰어

''') # Use port 7860 for Huggingface Spaces app.run(host='0.0.0.0', port=7860)