Advertisement
keinen87

Untitled

Feb 1st, 2023
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.53 KB | None | 0 0
  1. import json
  2. import os
  3. import urllib
  4. from pathlib import Path
  5.  
  6. from dotenv import load_dotenv
  7. from jinja2 import Environment, FileSystemLoader, select_autoescape
  8. from livereload import Server
  9. from more_itertools import chunked
  10.  
  11.  
  12.  
  13.  
  14.  
  15. def on_reload():
  16.     load_dotenv()
  17.     books_repository = os.environ.setdefault('BOOKS_REPOSITORY', 'media/books_about.json')
  18.  
  19.     env = Environment(
  20.         loader=FileSystemLoader('.'),
  21.         autoescape=select_autoescape(['html', 'xml'])
  22.         )
  23.    
  24.     template = env.get_template('template.html')
  25.     with open(books_repository, 'r', encoding='utf8') as json_file:
  26.         books_descriptions = json.load(json_file)
  27.  
  28.     books_per_page = 10
  29.     chunked_books = list(chunked(books_descriptions, books_per_page))
  30.  
  31.     chunked_books_per_page = 1
  32.     chunked_pages = list(chunked(chunked_books, chunked_books_per_page))
  33.  
  34.     pages_path = Path('pages')
  35.     pages_path.mkdir(parents=True, exist_ok=True)
  36.  
  37.     for page_num, books in enumerate(chunked_pages, 1):
  38.         rendered_page = template.render(
  39.             books_per_page=books,
  40.             pages_count=len(chunked_books),
  41.             current_page=page_num
  42.         )
  43.         with open(f'{pages_path}/index{page_num}.html', 'w', encoding='utf-8') as html_file:
  44.             html_file.write(rendered_page)
  45.  
  46.  
  47. def main():
  48.  
  49.     on_reload()
  50.  
  51.     server = Server()
  52.     server.watch('template.html', on_reload)
  53.     server.serve(root='.', default_filename='pages/index1.html')
  54.  
  55.  
  56. if __name__ == '__main__':
  57.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement