136 lines
4.2 KiB
Python
136 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
""" Author: Hendrik Schutter, mail@hendrikschutter.com
|
|
Date of creation: 2022/07/20
|
|
Date of last modification: 2022/07/20
|
|
"""
|
|
|
|
from datetime import datetime
|
|
import os
|
|
import template_html as thtml
|
|
import shutil
|
|
|
|
|
|
class exporter:
|
|
export_dir = ""
|
|
tsStart = 0
|
|
counter = 0
|
|
|
|
def __init__(self, path):
|
|
self.export_dir = path
|
|
self.tsStart = datetime.now() # set start time for exporting
|
|
try:
|
|
os.mkdir(self.export_dir)
|
|
except FileExistsError:
|
|
pass
|
|
try:
|
|
os.mkdir(os.path.join(self.export_dir, "compare/"))
|
|
except FileExistsError:
|
|
pass
|
|
|
|
self.copy_static_export()
|
|
|
|
def copy_static_export(self):
|
|
try:
|
|
os.mkdir(os.path.join(self.export_dir, "css/"))
|
|
except FileExistsError:
|
|
pass
|
|
try:
|
|
os.mkdir(os.path.join(self.export_dir, "data/"))
|
|
except FileExistsError:
|
|
pass
|
|
|
|
shutil.copy(
|
|
"./html/css/w3.css", os.path.join(self.export_dir, "css/", "w3.css")
|
|
)
|
|
shutil.copy(
|
|
"./html/data/favicon.ico",
|
|
os.path.join(self.export_dir, "data/", "favicon.ico"),
|
|
)
|
|
shutil.copy(
|
|
"./html/data/icon.png", os.path.join(self.export_dir, "data/", "icon.png")
|
|
)
|
|
|
|
def export_comparison(self, seller_listing, competitor_listings):
|
|
self.counter += 1
|
|
f = open(
|
|
os.path.join(self.export_dir, "compare/", str(self.counter) + ".html"), "a"
|
|
)
|
|
|
|
f.write(thtml.html_comparison_head())
|
|
f.write("<body>")
|
|
f.write(thtml.html_comparison_navigation(self.counter))
|
|
f.write(thtml.html_comparison_seller_listing(seller_listing))
|
|
f.write(thtml.html_comparison_competitor_list_header())
|
|
competitor_listing_counter = 0
|
|
for competitor_listing in competitor_listings:
|
|
competitor_listing_counter += 1
|
|
f.write(
|
|
thtml.html_comparison_competitor_listing(
|
|
competitor_listing, competitor_listing_counter
|
|
)
|
|
)
|
|
f.write(thtml.html_comparison_trailer())
|
|
f.close()
|
|
|
|
def export_startpage(
|
|
self, seller_listings_count, cheaper_listings_count, compare_time, date
|
|
):
|
|
|
|
duration_export = datetime.now() - self.tsStart
|
|
hours, remainder = divmod(duration_export.total_seconds(), 3600)
|
|
minutes, seconds = divmod(remainder, 60)
|
|
duration_export = (
|
|
str(hours) + "h " + str(minutes) + "m " + str(round(seconds, 2)) + "s"
|
|
)
|
|
|
|
f = open(os.path.join(self.export_dir, "index.html"), "a")
|
|
f.write(thtml.html_startpage_head())
|
|
f.write(
|
|
thtml.html_startpage_info(
|
|
seller_listings_count,
|
|
cheaper_listings_count,
|
|
compare_time,
|
|
duration_export,
|
|
date,
|
|
)
|
|
)
|
|
f.write(thtml.html_startpage_trailer())
|
|
f.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
seller_listing_dummy = {
|
|
"title": "Seller Title",
|
|
"price": float(42.42),
|
|
"image": "https://i.ebayimg.com/images/g/7lAAAOSw~ixieBVP/s-l500.jpg",
|
|
"url": "https://www.ebay.de/itm/165508291809",
|
|
}
|
|
|
|
competitor_listings_dummy = [
|
|
{
|
|
"title": "Competitor Title 01",
|
|
"price": float(40.42),
|
|
"image": "https://i.ebayimg.com/images/g/7lAAAOSw~ixieBVP/s-l500.jpg",
|
|
"url": "https://www.ebay.de/itm/165508291809",
|
|
},
|
|
{
|
|
"title": "Competitor Title 02",
|
|
"price": float(41.42),
|
|
"image": "https://i.ebayimg.com/images/g/7lAAAOSw~ixieBVP/s-l500.jpg",
|
|
"url": "https://www.ebay.de/itm/165508291809",
|
|
},
|
|
{
|
|
"title": "Competitor Title 03",
|
|
"price": float(42.00),
|
|
"image": "https://i.ebayimg.com/images/g/7lAAAOSw~ixieBVP/s-l500.jpg",
|
|
"url": "https://www.ebay.de/itm/165508291809",
|
|
},
|
|
]
|
|
|
|
exp = exporter("./html_out/")
|
|
exp.export_comparison(seller_listing_dummy, competitor_listings_dummy)
|
|
|
|
exp.export_startpage(10, 2, 0, "d")
|