You've already forked LibreTranslate
							
							
				mirror of
				https://github.com/LibreTranslate/LibreTranslate.git
				synced 2025-10-30 23:37:48 +02:00 
			
		
		
		
	Save suggestions in a database
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -131,3 +131,4 @@ installed_models/ | ||||
|  | ||||
| # Misc | ||||
| api_keys.db | ||||
| suggestions.db | ||||
| @@ -9,6 +9,7 @@ from app import flood | ||||
| from app.language import detect_languages, transliterate | ||||
|  | ||||
| from .api_keys import Database | ||||
| from .suggestions import Database as SuggestionsDatabase | ||||
|  | ||||
| from translatehtml import translate_html | ||||
|  | ||||
| @@ -617,7 +618,12 @@ def create_app(args): | ||||
|     @app.route("/suggest", methods=["POST"]) | ||||
|     @limiter.exempt | ||||
|     def suggest(): | ||||
|         # TODO: | ||||
|         q = request.values.get("q") | ||||
|         s = request.values.get("s") | ||||
|         source_lang = request.values.get("source") | ||||
|         target_lang = request.values.get("target") | ||||
|  | ||||
|         SuggestionsDatabase().add(q, s, source_lang, target_lang) | ||||
|         return jsonify({"success": True}) | ||||
|  | ||||
|     SWAGGER_URL = "/docs"  # URL for exposing Swagger UI (without trailing '/') | ||||
|   | ||||
							
								
								
									
										31
									
								
								app/suggestions.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								app/suggestions.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| import sqlite3 | ||||
| import uuid | ||||
|  | ||||
| from expiringdict import ExpiringDict | ||||
|  | ||||
| DEFAULT_DB_PATH = "suggestions.db" | ||||
|  | ||||
|  | ||||
| class Database: | ||||
|     def __init__(self, db_path=DEFAULT_DB_PATH, max_cache_len=1000, max_cache_age=30): | ||||
|         self.db_path = db_path | ||||
|         self.cache = ExpiringDict(max_len=max_cache_len, max_age_seconds=max_cache_age) | ||||
|  | ||||
|         # Make sure to do data synchronization on writes! | ||||
|         self.c = sqlite3.connect(db_path, check_same_thread=False) | ||||
|         self.c.execute( | ||||
|             """CREATE TABLE IF NOT EXISTS suggestions ( | ||||
|             "q"	TEXT NOT NULL, | ||||
|             "s"	TEXT NOT NULL, | ||||
|             "source"	TEXT NOT NULL, | ||||
|             "target"	TEXT NOT NULL | ||||
|         );""" | ||||
|         ) | ||||
|  | ||||
|     def add(self, q, s, source, target): | ||||
|         self.c.execute( | ||||
|             "INSERT INTO suggestions (q, s, source, target) VALUES (?, ?, ?, ?)", | ||||
|             (q, s, source, target), | ||||
|         ) | ||||
|         self.c.commit() | ||||
|         return True | ||||
		Reference in New Issue
	
	Block a user