safety, glbs now have no sanitizing of file names; png & webP conversions work
This commit is contained in:
parent
358dd3eac0
commit
8181c9b2d4
11 changed files with 267 additions and 878 deletions
89
parse_table.pl
Normal file
89
parse_table.pl
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
#
|
||||
# $Id: parse_table.pl 9 2026-03-03 18:33:36Z jlpoole $
|
||||
# $HeadURL: https://ares/svn/workstation/trunk/perl/Voron/parse_table.pl $
|
||||
#
|
||||
# Usage:
|
||||
# perl parse_table.pl
|
||||
# or
|
||||
# perl parse_tables.pl >manifest.txt
|
||||
#
|
||||
# Parses the HTML provided by the printer of parts and creates
|
||||
# a manifest of the STL files
|
||||
# 2 formats selectable by remming code below:
|
||||
#
|
||||
# PATH + FILE NAME [TAB] COUNT
|
||||
#
|
||||
# PATH [TAB] FILE NAME [TAB] SUFFIX
|
||||
#
|
||||
# See examples below
|
||||
#
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use File::Basename;
|
||||
use HTML::TableExtract;
|
||||
|
||||
my %names;
|
||||
|
||||
#
|
||||
# ick: spaces in file names
|
||||
#
|
||||
my $file = '/home/jlpoole/Nextcloud2/Voron/West3D V2.4 LDO Rev D Printed Parts.html';
|
||||
#
|
||||
# <tbody><tr><th>STL Preview</th><th>Filename</th><th>Quantity Needed</th></tr>
|
||||
#
|
||||
my $html_string;
|
||||
{
|
||||
local $/;
|
||||
open(IN,"$file") or die "Could not open $file";
|
||||
$html_string = <IN>;
|
||||
close(IN);
|
||||
}
|
||||
my $te = HTML::TableExtract->new( headers => ['STL Preview','Filename','Quantity Needed'] );
|
||||
$te->parse($html_string);
|
||||
# Examine all matching tables
|
||||
foreach my $ts ($te->tables) {
|
||||
print "Table (", join(',', $ts->coords), "):\n";
|
||||
foreach my $row ($ts->rows) {
|
||||
#print join(',', @$row), "\n";
|
||||
my $path_file = @$row[1];
|
||||
my ($name,$path,$ext) = fileparse($path_file, '\..*');
|
||||
$names{$name}++;
|
||||
print "Warning: duplicate name found: $name\n" if $names{$name} > 1;
|
||||
my $quantity = @$row[2];
|
||||
$quantity =~ /.*?(\d+).*?/;
|
||||
my $count = $1;
|
||||
if (defined $count){
|
||||
#
|
||||
# Below is used for creating manifest.txt used by extract_first_path.pl
|
||||
#
|
||||
print "$path_file\t$count\n";
|
||||
#
|
||||
# Below is for QA
|
||||
#
|
||||
#print "$path\t$name\t$ext\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
1) Example output when printing with: "$path\t$name\t$ext\n"
|
||||
|
||||
jlpoole@jp ~/workstation/perl/Voron $ perl parse_table.pl
|
||||
Table (0,1):
|
||||
Voron-2/STLs/Test_Prints/ Heatset_Practice .stl
|
||||
Voron-2/STLs/Electronics_Bay/ lrs_200_psu_bracket_x2 .stl
|
||||
Voron-2/STLs/Electronics_Bay/ pcb_din_clip_x3 .stl
|
||||
Voron-2/STLs/Electronics_Bay/ wago_221-415_mount_3by5 .stl
|
||||
|
||||
2) Example output when printing with: "$path_file\t$count\n
|
||||
jlpoole@jp ~/workstation/perl/Voron $ perl parse_table.pl
|
||||
Table (0,1):
|
||||
Voron-2/STLs/Test_Prints/Heatset_Practice.stl 1
|
||||
Voron-2/STLs/Electronics_Bay/lrs_200_psu_bracket_x2.stl 2
|
||||
Voron-2/STLs/Electronics_Bay/pcb_din_clip_x3.stl 3
|
||||
Voron-2/STLs/Electronics_Bay/wago_221-415_mount_3by5.stl 1
|
||||
|
||||
=cut
|
||||
Loading…
Add table
Add a link
Reference in a new issue