Added support for vinted labels
All checks were successful
DNSControl / build (push) Successful in 3m26s

This commit is contained in:
fleaz 2025-05-25 15:55:42 +02:00
parent 125d6eaf7c
commit ef3421ff97
Signed by: fleaz
GPG key ID: 935474624265FE8F
4 changed files with 54 additions and 3 deletions

6
cli.py
View file

@ -1,13 +1,13 @@
#! /usr/bin/env python3
from sys import argv
from convert import convert_dhl, convert_hermes
from convert import *
if __name__ == "__main__":
if len(argv) != 3:
print("Usage:")
print("./cli.py <method> <id>")
print("Method can be 'hermes' or 'dhl'")
print("Method can be 'hermes', 'dhl' or 'vinted'")
exit(1)
method = argv[1]
@ -18,6 +18,8 @@ if __name__ == "__main__":
convert_dhl(id)
case "hermes":
convert_hermes(id)
case "vinted":
convert_vinted(id)
case _:
print("Unknown method")

View file

@ -50,3 +50,27 @@ def convert_hermes(id):
with open(f"./downloads/{id}.pdf", "wb") as fh:
writer.write(fh)
def convert_vinted(id):
with open(f"./uploads/{id}.pdf", "rb") as fh:
reader = PdfReader(fh)
writer = PdfWriter()
numPages = len(reader.pages)
if numPages != 1:
exit(1)
#page = reader.pages[0].rotate(90)
page = reader.pages[0]
left = 18
bottom = 150
right = 315
# calculate last value to get a 3:2 rectangle
top = bottom+((right-left)/2)*3
page.mediabox = RectangleObject((left, bottom,right,top))
writer.add_page(page)
with open(f"./downloads/{id}.pdf", "wb") as fh:
writer.write(fh)

17
main.py
View file

@ -3,7 +3,7 @@ from bottle import route, request, static_file, run, redirect, HTTPResponse, hoo
from random import randint
from os import remove
from convert import convert_dhl, convert_hermes
from convert import *
@route('/')
def root():
@ -39,6 +39,21 @@ def hermes():
return redirect(f"/download/{id}")
@route('/vinted', method='POST')
def vinted():
upload = request.files.get('upload')
if upload.content_type != "application/pdf":
return HTTPResponse(status=400, body="Bad file")
id = randint(100000,999999)
upload.save(f"./uploads/{id}.pdf")
convert_vinted(id)
print(f"converted {upload.filename} as {id}.pdf")
# delete upload file
remove(f"./uploads/{id}.pdf")
return redirect(f"/download/{id}")
@route('/download/<id>')
def download(id):
filename = f"{id}.pdf"

View file

@ -22,6 +22,7 @@
<button>Convert!</button>
</form>
</div>
<div class="variant_box">
<b>Variante 2</b><br>
Hermes Paketschein DIN A4 &#8594; 100mmx150mm
@ -30,6 +31,15 @@
<button>Convert!</button>
</form>
</div>
<div class="variant_box">
<b>Variante 3</b><br>
Vinted Paketschein DIN A4 &#8594; 100mmx150mm
<form action="/vinted" method="post" enctype="multipart/form-data">
<input name="upload" type="file" size="50" accept="application/pdf">
<button>Convert!</button>
</form>
</div>
</main>
</body>
</html>