Compare commits

...

6 Commits

Author SHA1 Message Date
a5ceb76e43 use with to simplify the code 2024-08-06 14:49:58 +02:00
e26fced271 fix: typo 2024-08-06 14:48:28 +02:00
007811bde6 add: screenshot to readme 2024-08-06 14:45:49 +02:00
5177238a53 add: author 2024-08-06 14:45:37 +02:00
2ca297e68c change css, add thead 2024-08-06 14:04:44 +02:00
a6b0eb17e7 add: reading date and release date 2024-08-06 13:12:55 +02:00
7 changed files with 73 additions and 25 deletions

View File

@ -1,19 +1,25 @@
class Book: class Book:
def __init__(self, name: str, description: str, image: str, review: str) -> None: def __init__(self, name: str, author: str, description: str, image: str, review: str, release_date: str, reading_date: str) -> None:
self.name: str = name self.name: str = name
self.description: str = description self.description: str = description
self.image: str = image self.image: str = image
self.review: str = review self.review: str = review
self.release_date: str = release_date
self.reading_date: str = reading_date
self.author: str = author
def to_html(self) -> str: def to_html(self) -> str:
return f""" return f"""
<tr> <tr>
<td class="image-div"><img src="img/{self.image}"></td> <td class="image-div"><img src="img/{self.image}"></td>
<td class="namedesc-div"> <td class="namedesc-div">
<p class="author">{self.author}</p>
<p class="name">{self.name}</p> <p class="name">{self.name}</p>
<p class="description">{self.description}</p> <p class="description">{self.description}</p>
<p class="release-date">{self.release_date}</p>
</td> </td>
<td class="review-div">{self.review}</td> <td class="review-div">{self.review}</td>
<td class="reading-date">{self.reading_date}</td>
</tr> </tr>
""" """

View File

@ -2,7 +2,7 @@
A script to generate a static book review page A script to generate a static book review page
## images ## images
![](./screenshots/1.png)
## usage ## usage
- fill the ![constructor.json](./constructor.json) like the ![constructor.json](./constructor_example.json) - fill the ![constructor.json](./constructor.json) like the ![constructor.json](./constructor_example.json)

View File

@ -11,6 +11,16 @@
<body> <body>
<h1>My Readings</h1> <h1>My Readings</h1>
<table id="table"> <table id="table">
<thead>
<tr>
<th>Image</th>
<th>Name and description</th>
<th>My opignon</th>
<th>Reading date</th>
</tr>
</thead>
<tbody>
{{books}} {{books}}
</tbody>
</table> </table>
</body> </body>

View File

@ -2,9 +2,12 @@
"books": [ "books": [
{ {
"name": "1984", "name": "1984",
"author": "George Orwell",
"description": "1984 est un roman dystopique de l'écrivain britannique George Orwell. Publié le 8 juin 1949 par Secker & Warburg, il s'agit du neuvième et dernier livre d'Orwell achevé de son vivant", "description": "1984 est un roman dystopique de l'écrivain britannique George Orwell. Publié le 8 juin 1949 par Secker & Warburg, il s'agit du neuvième et dernier livre d'Orwell achevé de son vivant",
"image": "1984.jpg", "image": "1984.jpg",
"review": "ct pas mal" "review": "ct pas mal",
"reading_date": "08/2024",
"release_date": "08/06/1949"
} }
] ]
} }

15
main.py
View File

@ -4,27 +4,24 @@ from Book import Book
# Opening JSON file # Opening JSON file
f = open('constructor.json', encoding='utf-8') with open('constructor.json', encoding='utf-8') as f:
data = json.load(f) data = json.load(f)
f.close()
f = open("style.css") with open('style.css', encoding='utf-8') as f:
style = f.read() style = f.read()
f.close()
books = data['books'] books = data['books']
html = "" html = ""
for book_data in books: for book_data in books:
book = Book(book_data["name"], book_data["description"], book_data["image"], book_data["review"]) book = Book(book_data["name"], book_data["author"], book_data["description"], book_data["image"], book_data["review"], book_data["release_date"], book_data["reading_date"])
html += book.to_html() html += book.to_html()
f = open("cast.html") with open('cast.html', encoding='utf-8') as f:
text = f.read().replace("{{books}}", html).replace("{{style}}", style) text = f.read().replace("{{books}}", html).replace("{{style}}", style)
f.close()
if len(sys.argv) > 1: if len(sys.argv) > 1:
f = open(sys.argv[1], "w", encoding='utf-8') with open(sys.argv[1], "w", encoding='utf-8') as f:
f.write(text) f.write(text)
f.close()
else: else:
print(text) print(text)

BIN
screenshots/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

View File

@ -1,19 +1,47 @@
body{ :root{
background-color: #586e75; --bg1: #002b36;
--bg2: #073642;
--content1: #586e75;
--content2: #657b83;
--content3: #839496;
--content4: #93a1a1;
--lbg1: #eee8d5;
--lbg2: #fdf6e3;
} }
h1, #table { table tbody tr:nth-child(odd){
background-color: var(--content1);
}
table tbody tr:nth-child(even) {
background-color: var(--content4);
}
body{
background-color: var(--bg1);
color: white;
}
h1 {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
#table { table {
background-color: green; border-collapse:collapse;
background-color: var(--bg2);
}
thead {
background-color: var(--base1);
}
tbody {
background-color: var(--base0);
} }
tr { tr {
max-height: 250px; max-height: 250px;
background-color: green; background-color: inherit;
} }
img { img {
@ -30,9 +58,13 @@ img {
width: 30%; width: 30%;
} }
.reading-date {
width: 5%;
}
td { td {
background-color: red; text-align: center;
border: 2px solid; background-color: none;
} }
.name { .name {