mirror of
				https://github.com/simon987/od-database.git
				synced 2025-10-28 04:36:51 +00:00 
			
		
		
		
	Exports are downloadable
This commit is contained in:
		
							parent
							
								
									0b1d76f478
								
							
						
					
					
						commit
						7ac7972fd6
					
				
							
								
								
									
										20
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								app.py
									
									
									
									
									
								
							| @ -1,6 +1,7 @@ | |||||||
| from flask import Flask, render_template, redirect, request, flash, abort, Response | from flask import Flask, render_template, redirect, request, flash, abort, Response | ||||||
| import os | import os | ||||||
| import json | import json | ||||||
|  | import time | ||||||
| from database import Database, Website, InvalidQueryException | from database import Database, Website, InvalidQueryException | ||||||
| from flask_recaptcha import ReCaptcha | from flask_recaptcha import ReCaptcha | ||||||
| import od_util | import od_util | ||||||
| @ -23,6 +24,23 @@ app.jinja_env.globals.update(get_mime=od_util.get_mime) | |||||||
| tm = TaskManager() | tm = TaskManager() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @app.template_filter("datetime_format") | ||||||
|  | def datetime_format(value, format='%Y-%m-%d %H:%M UTC'): | ||||||
|  |     return time.strftime(format, time.gmtime(value)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @app.route("/dl") | ||||||
|  | def downloads(): | ||||||
|  | 
 | ||||||
|  |     try: | ||||||
|  |         export_file_stats = os.stat("static/out.csv.xz") | ||||||
|  |     except FileNotFoundError: | ||||||
|  |         print("No export file") | ||||||
|  |         export_file_stats = None | ||||||
|  | 
 | ||||||
|  |     return render_template("downloads.html", export_file_stats=export_file_stats) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @app.route("/website/<int:website_id>/") | @app.route("/website/<int:website_id>/") | ||||||
| def website_info(website_id): | def website_info(website_id): | ||||||
| 
 | 
 | ||||||
| @ -109,7 +127,7 @@ def submit(): | |||||||
| 
 | 
 | ||||||
| @app.route("/enqueue", methods=["POST"]) | @app.route("/enqueue", methods=["POST"]) | ||||||
| def enqueue(): | def enqueue(): | ||||||
|     if not recaptcha.verify(): |     if recaptcha.verify(): | ||||||
| 
 | 
 | ||||||
|         url = os.path.join(request.form.get("url"), "") |         url = os.path.join(request.form.get("url"), "") | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								export.sh
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								export.sh
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| sqlite3 -header -csv db.sqlite3 < export.sql > out.csv | sqlite3 -header -csv db.sqlite3 < export.sql > static/out.csv | ||||||
| echo "Exported $(wc -l < out.csv) files" | echo "Exported $(wc -l < static/out.csv) files" | ||||||
| rm out.csv.xz | rm static/out.csv.xz | ||||||
| xz out.csv | xz static/out.csv | ||||||
| echo "Compressed to $(stat --printf="%s" out.csv.xz) bytes" | echo "Compressed to $(stat --printf="%s" static/out.csv.xz) bytes" | ||||||
							
								
								
									
										37
									
								
								templates/downloads.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								templates/downloads.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | |||||||
|  | {% extends "layout.html" %} | ||||||
|  | {% set title = "Downloads - OD-Database" %} | ||||||
|  | {% set current_page = "dl" %} | ||||||
|  | 
 | ||||||
|  | {% block body %} | ||||||
|  |     <div class="container"> | ||||||
|  |         <div class="card"> | ||||||
|  |             <div class="card-header">Downloads</div> | ||||||
|  |             <div class="card-body"> | ||||||
|  | 
 | ||||||
|  |                 <p>The entire database is exported to CSV every ±30min</p> | ||||||
|  | 
 | ||||||
|  |                 <table class="table table-striped"> | ||||||
|  | 
 | ||||||
|  |                     <thead> | ||||||
|  |                     <tr> | ||||||
|  |                         <th>Description</th> | ||||||
|  |                         <th>Size</th> | ||||||
|  |                         <th>Date</th> | ||||||
|  |                     </tr> | ||||||
|  |                     </thead> | ||||||
|  | 
 | ||||||
|  |                     <tbody> | ||||||
|  |                     {% if export_file_stats %} | ||||||
|  |                     <tr> | ||||||
|  |                         <td>out.csv.xz</td> | ||||||
|  |                         <td>{{ export_file_stats.st_size }}</td> | ||||||
|  |                         <td>{{ export_file_stats.st_mtime|datetime_format }}</td> | ||||||
|  |                     </tr> | ||||||
|  |                     {% endif %} | ||||||
|  |                     </tbody> | ||||||
|  | 
 | ||||||
|  |                 </table> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | {% endblock body %} | ||||||
| @ -1,5 +1,5 @@ | |||||||
| {% extends "layout.html" %} | {% extends "layout.html" %} | ||||||
| 
 | {% set current_page = "home" %} | ||||||
| {% set title = "OD-Database - Home" %} | {% set title = "OD-Database - Home" %} | ||||||
| 
 | 
 | ||||||
| {% block body %} | {% block body %} | ||||||
|  | |||||||
| @ -37,6 +37,9 @@ | |||||||
|             <li class="nav-item"> |             <li class="nav-item"> | ||||||
|                 <a class="nav-link {{ "active" if current_page == "contribute" else "" }}" href="/contribute">Contribute</a> |                 <a class="nav-link {{ "active" if current_page == "contribute" else "" }}" href="/contribute">Contribute</a> | ||||||
|             </li> |             </li> | ||||||
|  |             <li class="nav-item"> | ||||||
|  |                 <a class="nav-link {{ "active" if current_page == "dl" else "" }}" href="/dl">Downloads</a> | ||||||
|  |             </li> | ||||||
|         </ul> |         </ul> | ||||||
|     </div> |     </div> | ||||||
| </nav> | </nav> | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| {% extends "layout.html" %} | {% extends "layout.html" %} | ||||||
|  | {% set current_page = "search" %} | ||||||
| 
 | 
 | ||||||
| {% set title = "OD-Database - Search" %} | {% set title = "OD-Database - Search" %} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| {% extends "layout.html" %} | {% extends "layout.html" %} | ||||||
| {% set title = "OD-Database - Submit website" %} | {% set title = "OD-Database - Submit website" %} | ||||||
|  | {% set current_page = "submit" %} | ||||||
| 
 | 
 | ||||||
| {% block body %} | {% block body %} | ||||||
|     <div class="container" > |     <div class="container" > | ||||||
| @ -12,7 +13,7 @@ | |||||||
|                         </div> |                         </div> | ||||||
|                     <div class="row"> |                     <div class="row"> | ||||||
|                         <div class="col"> |                         <div class="col"> | ||||||
| {#                            {{ recaptcha.get_code()|safe }}#} |                             {{ recaptcha.get_code()|safe }} | ||||||
|                         </div> |                         </div> | ||||||
|                         <div class="col"> |                         <div class="col"> | ||||||
|                             <input class="btn btn-primary" type="submit" value="Submit" title="Submit open directory"> |                             <input class="btn btn-primary" type="submit" value="Submit" title="Submit open directory"> | ||||||
| @ -23,8 +24,8 @@ | |||||||
| 
 | 
 | ||||||
|                 <hr> |                 <hr> | ||||||
| 
 | 
 | ||||||
|                 <p class="text-muted"> |                 <p class="text-muted">By submitting this form you agree that your IP address and User Agent will be | ||||||
|                     Note: TODO note |                     saved (for debugging purposes only). | ||||||
|                 </p> |                 </p> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| {% extends "layout.html" %} | {% extends "layout.html" %} | ||||||
| {% set title = "OD-Datase - Websites" %} | {% set title = "OD-Datase - Websites" %} | ||||||
|  | {% set current_page = "website" %} | ||||||
| 
 | 
 | ||||||
| {% block body %} | {% block body %} | ||||||
|     <div class="container"> |     <div class="container"> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user