Spaces:
Running
Running
File size: 4,302 Bytes
e342171 23b82dc e342171 23b82dc e342171 23b82dc e342171 23b82dc 398bf5b 23b82dc 398bf5b 23b82dc 398bf5b 23b82dc e342171 23b82dc c86ac88 23b82dc e342171 23b82dc 398bf5b 23b82dc 398bf5b 23b82dc 398bf5b 23b82dc e342171 23b82dc e342171 23b82dc 398bf5b 23b82dc 398bf5b 23b82dc 398bf5b 23b82dc 398bf5b e342171 23b82dc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
from flask import Flask, render_template, request, jsonify, send_file
from .core import create_markdown_document
import markdown
import os
import pkg_resources
import sys
def find_template_path():
"""Find the templates directory, either from installed package or source."""
try:
# Try to use pkg_resources for installed packages
template_path = pkg_resources.resource_filename("repo_to_md", "templates")
except Exception as e:
# Fallback for running from source (development)
current_dir = os.path.dirname(os.path.abspath(__file__))
template_path = os.path.join(current_dir, "../templates")
template_path = os.path.abspath(template_path)
# Check if the template path exists
if not os.path.exists(template_path):
# Try an alternative path within the package directory
package_dir = os.path.dirname(os.path.abspath(__file__))
alternative_path = os.path.join(package_dir, "templates")
if os.path.exists(alternative_path):
template_path = alternative_path
else:
# One last attempt: check if installed but in a different structure
site_packages = os.path.join(os.path.dirname(sys.executable), "site-packages")
installed_path = os.path.join(site_packages, "repo_to_md", "templates")
if os.path.exists(installed_path):
template_path = installed_path
else:
raise FileNotFoundError(
f"Template directory not found at: {template_path}, {alternative_path}, or {installed_path}"
)
return template_path
def run_demo(host="0.0.0.0", port=7860, debug=True):
# Get the correct template path
template_path = find_template_path()
# Create Flask app with the resolved template folder
app = Flask(__name__, template_folder=template_path)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/process', methods=['POST'])
def process():
response_data = {'markdown': '', 'html': '', 'filename': '', 'error': None}
try:
if 'files[]' in request.files:
files = request.files.getlist('files[]')
if not files:
response_data['error'] = 'No files uploaded'
return jsonify(response_data), 400
markdown_content = create_markdown_document(files=files)
response_data['markdown'] = markdown_content
response_data['html'] = markdown.markdown(markdown_content)
response_data['filename'] = "uploaded_files_summary.md"
else:
repo_url = request.json.get('repo_url', '').strip()
if not repo_url:
response_data['error'] = 'Please provide a repository URL or upload files'
return jsonify(response_data), 400
markdown_content = create_markdown_document(repo_url)
if markdown_content.startswith("Error:"):
response_data['error'] = markdown_content
return jsonify(response_data), 400
response_data['markdown'] = markdown_content
response_data['html'] = markdown.markdown(markdown_content)
owner, repo = repo_url.rstrip('/').split('/')[-2:]
response_data['filename'] = f"{owner}_{repo}_summary.md"
except Exception as e:
response_data['error'] = f"Server error processing request: {str(e)}"
return jsonify(response_data), 500
return jsonify(response_data)
@app.route('/download', methods=['POST'])
def download():
markdown_content = request.json.get('markdown', '')
filename = request.json.get('filename', 'document.md')
buffer = io.BytesIO()
buffer.write(markdown_content.encode('utf-8'))
buffer.seek(0)
return send_file(
buffer,
as_attachment=True,
download_name=filename,
mimetype='text/markdown'
)
app.run(host=host, port=port, debug=debug)
if __name__ == '__main__':
run_demo() |