Skip to content

Commit d854147

Browse files
committed
Ready for a new release
Added a feature that reads the given gcode file and returns the duration of the print and the material used in metric units. Fixed a bug which makes the program execute the md5 function before creating the byte version of the original gcode.
1 parent 947da8a commit d854147

2 files changed

Lines changed: 43 additions & 22 deletions

File tree

gcode2zaxe/convert.py

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import zipfile
44
import hashlib
55
import tempfile
6+
import datetime
67
from argparse import ArgumentParser
78

89
TMP = tempfile.gettempdir()
@@ -63,29 +64,50 @@ def md5():
6364
return hash_md5.hexdigest()
6465

6566

67+
def read_gcode():
68+
gcode_info = {}
69+
with open(args.gcode, "r") as f:
70+
for line in f.readlines():
71+
if line.startswith(";TIME:"):
72+
time = int(line.split(";TIME:")[1].strip())
73+
gcode_info["time"] = str(datetime.timedelta(seconds=time))
74+
75+
with open(args.gcode, "r") as f:
76+
for line in f.readlines():
77+
if line.startswith(";Filament used:"):
78+
filament_used = round(
79+
float(line.split(";Filament used:")[1].strip().replace("m", "")), 2
80+
)
81+
gcode_info["filament_used"] = f"{str(filament_used)}m"
82+
83+
return gcode_info
84+
85+
86+
def make_info():
87+
return {
88+
"material": args.filament,
89+
"nozzle_diameter": args.nozzle_diameter,
90+
"filament_used": read_gcode()["filament_used"],
91+
"model": args.model,
92+
"checksum": md5(),
93+
"name": args.name,
94+
"duration": read_gcode()["time"],
95+
"extruder_temperature": 220,
96+
"bed_temperature": 60,
97+
"version": "1.0.4",
98+
}
99+
100+
66101
def main():
67-
with open(os.path.join(TMP, "info.json"), "w") as f:
68-
f.write(json.dumps(info))
69102

70103
encoded = convert_to_bytes(args.gcode)
71104

72105
with open(os.path.join(TMP, "o.gcode"), "wb") as f:
73106
f.write(encoded)
74107

108+
with open(os.path.join(TMP, "info.json"), "w") as f:
109+
f.write(json.dumps(make_info()))
110+
75111
open(os.path.join(TMP, "snapshot.png"), "w").close()
76112

77113
create_zaxe()
78-
79-
80-
info = {
81-
"material": args.filament,
82-
"nozzle_diameter": args.nozzle_diameter,
83-
"filament_used": 1000.0,
84-
"model": args.model,
85-
"checksum": md5(),
86-
"name": args.name,
87-
"duration": "00:20:00",
88-
"extruder_temperature": 220,
89-
"bed_temperature": 60,
90-
"version": "1.0.4",
91-
}

setup.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1+
import contextlib
12
import json
23
import urllib.request
34
from setuptools import setup, find_packages
45

56

67
def latest_version(package_name):
78
url = f"https://pypi.python.org/pypi/{package_name}/json"
8-
try:
9+
with contextlib.suppress(Exception):
910
response = urllib.request.urlopen(urllib.request.Request(url), timeout=1)
1011
data = json.load(response)
1112
versions = data["releases"].keys()
1213
versions = sorted(versions)
13-
return ">={}".format(versions[-1])
14-
except Exception:
15-
pass
14+
return f">={versions[-1]}"
1615
return ""
1716

1817

@@ -27,9 +26,9 @@ def latest_version(package_name):
2726
description="Gcode to Zaxe Converter | executable: g2z",
2827
long_description=long_description,
2928
long_description_content_type="text/markdown",
30-
version="2022.3.15-2",
29+
version="2022.3.30",
3130
license="AGPLv3",
32-
download_url="https://github.com/egeakman/gcode2zaxe/archive/2022.3.15-2.tar.gz",
31+
download_url="https://github.com/egeakman/gcode2zaxe/archive/2022.3.30.tar.gz",
3332
packages=find_packages(where=".", exclude=["tests"]),
3433
python_requires=">=3.5",
3534
entry_points={

0 commit comments

Comments
 (0)