yusufgundogdu commited on
Commit
d119adc
·
verified ·
1 Parent(s): 87c889e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +90 -2
app.py CHANGED
@@ -1,17 +1,36 @@
1
- from flask import Flask
2
  import os
3
  import sys
 
 
4
  from database import init_db, close_db, get_db_path
5
 
6
  # Import yollarını kontrol et
7
  sys.path.append(os.path.dirname(os.path.abspath(__file__)))
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  try:
10
  from get_methods import get_users, get_user
11
  from post_methods import add_user
12
  from consume_method import consume_user
 
 
 
13
  except ImportError as e:
14
- print(f"Import hatası: {e}")
15
  raise
16
 
17
  app = Flask(__name__)
@@ -21,11 +40,80 @@ init_db(app)
21
  def home():
22
  return "StableDiffusionAPI Türkçe"
23
 
 
24
  app.route('/users', methods=['GET'])(get_users)
25
  app.route('/user/<string:udid>', methods=['GET'])(get_user)
26
  app.route('/add-user', methods=['POST'])(add_user)
27
  app.route('/consume/<string:udid>', methods=['POST'])(consume_user)
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  @app.teardown_appcontext
30
  def shutdown_session(exception=None):
31
  close_db()
 
1
+ from flask import Flask, request, send_file, jsonify
2
  import os
3
  import sys
4
+ import io
5
+ import logging
6
  from database import init_db, close_db, get_db_path
7
 
8
  # Import yollarını kontrol et
9
  sys.path.append(os.path.dirname(os.path.abspath(__file__)))
10
 
11
+ # Environment setup
12
+ os.environ['NUMBA_DISABLE_JIT'] = '1'
13
+ os.environ['TORCH_HOME'] = '/tmp/torch_cache'
14
+ os.environ['U2NET_HOME'] = '/tmp/.u2net'
15
+
16
+ # Create cache directories if they don't exist
17
+ os.makedirs('/tmp/torch_cache', exist_ok=True)
18
+ os.makedirs('/tmp/.u2net', exist_ok=True)
19
+
20
+ # Configure logging
21
+ logging.basicConfig(level=logging.INFO)
22
+ logger = logging.getLogger(__name__)
23
+
24
+ # Import methods
25
  try:
26
  from get_methods import get_users, get_user
27
  from post_methods import add_user
28
  from consume_method import consume_user
29
+ from animegan_method import generate_anime
30
+ from rembg_method import remove_background
31
+ from halftone_method import apply_halftone
32
  except ImportError as e:
33
+ logger.error(f"Import hatası: {e}")
34
  raise
35
 
36
  app = Flask(__name__)
 
40
  def home():
41
  return "StableDiffusionAPI Türkçe"
42
 
43
+ # Existing routes
44
  app.route('/users', methods=['GET'])(get_users)
45
  app.route('/user/<string:udid>', methods=['GET'])(get_user)
46
  app.route('/add-user', methods=['POST'])(add_user)
47
  app.route('/consume/<string:udid>', methods=['POST'])(consume_user)
48
 
49
+ # New image processing routes
50
+ @app.route('/generate', methods=['POST'])
51
+ def generate():
52
+ try:
53
+ if 'image' not in request.files:
54
+ logger.error("No file provided")
55
+ return jsonify({'error': 'No image provided'}), 400
56
+
57
+ file = request.files['image']
58
+ if file.filename == '':
59
+ logger.error("Empty file provided")
60
+ return jsonify({'error': 'No selected file'}), 400
61
+
62
+ img_io = generate_anime(file.read())
63
+ return send_file(img_io, mimetype='image/png')
64
+ except Exception as e:
65
+ logger.error(f"Unexpected error: {str(e)}", exc_info=True)
66
+ return jsonify({'error': str(e)}), 500
67
+
68
+ @app.route('/remove-bg', methods=['POST'])
69
+ def remove_bg():
70
+ try:
71
+ if 'image' not in request.files:
72
+ logger.error("No file provided")
73
+ return jsonify({'error': 'No image provided'}), 400
74
+
75
+ file = request.files['image']
76
+ if file.filename == '':
77
+ logger.error("Empty file provided")
78
+ return jsonify({'error': 'No selected file'}), 400
79
+
80
+ max_size = 10 * 1024 * 1024 # 10MB
81
+ file_data = file.read()
82
+ if len(file_data) > max_size:
83
+ logger.error(f"File too large: {len(file_data)} bytes")
84
+ return jsonify({'error': 'File too large (max 10MB)'}), 400
85
+
86
+ img_io = remove_background(file_data)
87
+ return send_file(img_io, mimetype='image/png')
88
+ except Exception as e:
89
+ logger.error(f"Unexpected error: {str(e)}", exc_info=True)
90
+ return jsonify({'error': str(e)}), 500
91
+
92
+ @app.route('/halftone', methods=['POST'])
93
+ def halftone():
94
+ try:
95
+ if 'image' not in request.files:
96
+ logger.error("No file provided")
97
+ return jsonify({'error': 'No image provided'}), 400
98
+
99
+ file = request.files['image']
100
+ if file.filename == '':
101
+ logger.error("Empty file provided")
102
+ return jsonify({'error': 'No selected file'}), 400
103
+
104
+ max_size = 10 * 1024 * 1024 # 10MB
105
+ file_data = file.read()
106
+ if len(file_data) > max_size:
107
+ logger.error(f"File too large: {len(file_data)} bytes")
108
+ return jsonify({'error': 'File too large (max 10MB)'}), 400
109
+
110
+ dot_size = int(request.form.get('dot_size', 10))
111
+ img_io = apply_halftone(file_data, dot_size)
112
+ return send_file(img_io, mimetype='image/png')
113
+ except Exception as e:
114
+ logger.error(f"Unexpected error: {str(e)}", exc_info=True)
115
+ return jsonify({'error': str(e)}), 500
116
+
117
  @app.teardown_appcontext
118
  def shutdown_session(exception=None):
119
  close_db()