web.py 833 B

123456789101112131415161718192021222324
  1. from flask import Flask, render_template, make_response
  2. from bookworm import s3, constants
  3. s3client = s3.client()
  4. app = Flask(__name__)
  5. @app.route('/')
  6. def index():
  7. objects = s3client.list_objects_v2(Bucket=constants.PROCESSED_FILE_BUCKET)['Contents']
  8. objects = sorted(objects, key=lambda x: x['LastModified'], reverse=True)
  9. books = [obj['Key'] for obj in objects]
  10. return render_template('kindle-index.j2', books=books)
  11. @app.route('/books/<path:book>')
  12. def serve_books(book):
  13. obj = s3client.get_object(Bucket=constants.PROCESSED_FILE_BUCKET, Key=book)
  14. data = obj['Body'].read()
  15. response = make_response(data)
  16. response.headers.set('Content-Disposition', 'attachment', filename=book)
  17. response.headers.set('Content-Length', len(data))
  18. return response
  19. if __name__ == '__main__':
  20. app.run()