Thanks to the kind permission of both Mike and Scott, I've combined all the tags required for the Printable Weather Flyer, Alternative Dashboard and High/Low/Average page into one testtags.txt .
I used this Perl program to spot any duplicated tags in the set, and remove them so your testtags.txt->testtags.php will be of smaller size, and WD will have less work to do the substitutions. Don't know if the latter will make much difference, but a smaller-sized testtags.php will make for improved upload times (and maybe just a skosh improvement in page loads).
Here's the Perl script I used to generate the new testtags.txt file
#!/usr/bin/perl
#
# purpose: read testtags.txt file and spot duplicate tags
# Generate two output files:
# testtags-commented.txt with each line with a duplicated tag commented out
# testtags-nodupes.txt with duplicated tag lines omitted.
#
# author: Ken True - Saratoga-weather@org
#
# Version 1.00 - 11-Jul-2009 -- initial release
# Versuib 1.01 - 12-Jul-2009 -- replace " with ' in strings, formatted output better
#
$inFile = "testtags-original.txt";
$outFile = "testtags-commented.txt";
$newFile = "testtags.txt";
%tags = ();
%duptags = ();
$lineCount = 0;
$outCount = 0;
$newCount = 0;
$tagCount = 0;
$dupTagCount = 0;
$commentCount = 0;
print "Opening $inFile for analysis.\n";
open (IN,"<$inFile") or die "--Unable to open for reading $inFile: $! \n";
open (OUT,">$outFile") or die "--Unable to open for writing $outFile: $! \n";
open (NEW,">$newFile") or die "--Unable to open for writing $newFile: $! \n";
while (<IN>) {
chomp;
$inrec = $_;
$inrec =~ s/=\s*"(.*)"/= '$1'/g;
$lineCount++;
if ( $inrec =~ m/^\s*\/\// ) {
print OUT "$inrec\n";
$outCount++;
print NEW "$inrec\n";
$newCount++;
next;
}
if ($inrec =~ m/^\s*#/ ) {
print OUT "$inrec\n";
$outCount++;
print NEW "$inrec\n";
$newCount++;
next;
}
if ( $inrec !~ m/^\$(\S+)\s*=\s*[\'|\"](\S+)[\'|\"]/) {
print OUT "$inrec\n";
$outCount++;
print NEW "$inrec\n";
$newCount++;
next;
}
$phpname = $1;
$wdname = $2;
if ($tags{$phpname}) {
$dupTagCount++;
$tags{$phpname} .= "\tdup=$wdname:$lineCount";
$duptags{$phpname}++;
$commentCount++;
$inrec = "//--duplicate-- " . $inrec;
} else {
$tags{$phpname} = "first=$wdname:$lineCount";
$tagCount++;
print NEW "$inrec\n";
$newCount++;
}
print OUT "$inrec\n";
$outCount++;
}
close IN;
close OUT;
print "..$lineCount lines in $inFile.\n";
print "..$tagCount tags found.\n";
print "..$outCount lines written to $outFile with $commentCount duplicated tags commented out.\n";
print "..$newCount lines written to $newFile with duplicated lines removed.\n";
print "..$dupTagCount duplicate tags found (first=WDTAG:lineno dup=WDTAG:lineno ):\n";
foreach $key (sort keys %duptags) {
print "\$$key\t" . $tags{$key} . "\n";
}
which returned the following results
Opening testtags-original.txt for analysis.
..1079 lines in testtags-original.txt.
..602 tags found.
..1079 lines written to testtags-commented.txt with 207 duplicated tags commented out.
..872 lines written to testtags.txt with duplicated lines removed.
..207 duplicate tags found (first=WDTAG:lineno dup=WDTAG:lineno ):
$VPet first=%VPet%:403 dup=%VPet%:989
$VPetmonth first=%VPetmonth%:404 dup=%VPetmonth%:677 dup=%VPetmonth%:854 dup=%VPetmonth%:990
$WUmaxtemp first=%WUmaxtemp%:135 dup=%WUmaxtemp%:657 dup=%WUmaxtemp%:834
$WUmaxtempr first=%WUmaxtempr%:138 dup=%WUmaxtempr%:659 dup=%WUmaxtempr%:836
$WUmaxtempryr first=%WUmaxtempryr%:140 dup=%WUmaxtempryr%:661 dup=%WUmaxtempryr%:838
$WUmintemp first=%WUmintemp%:136 dup=%WUmintemp%:658 dup=%WUmintemp%:835
$WUmintempr first=%WUmintempr%:139 dup=%WUmintempr%:660 dup=%WUmintempr%:837
$WUmintempryr first=%WUmintempryr%:141 dup=%WUmintempryr%:662 dup=%WUmintempryr%:839
$airdensity first=%airdensity%:653 dup=%airdensity%:830
$apparentsolartempc first=%apparentsolartempc%:131 dup=%apparentsolartempc%:685 dup=%apparentsolartempc%:747
$apparentsolartempf first=%apparentsolartempf%:133 dup=%apparentsolartempf%:684 dup=%apparentsolartempf%:746
$avtempweek first=%avtempweek%:625 dup=%avtempweek%:784
$burntime first=%burntime%:230 dup=%burntime%:708 dup=%burntime%:762
$cddday first=%cddday%:644 dup=%cddday%:817
$cddmonth first=%cddmonth%:645 dup=%cddmonth%:818
$cddyear first=%cddyear%:646 dup=%cddyear%:819
$chandler first=%chandler%:709 dup=%chandler%:763
$changeinday first=%changeinday%:655 dup=%changeinday%:832
$coldestdayonrecord first=%coldestdayonrecord%:627 dup=%coldestdayonrecord%:786
$coldestnightonrecord first=%coldestnightonrecord%:629 dup=%coldestnightonrecord%:788
$dayswithrain first=%dayswithrain%:203 dup=%dayswithrain%:932
$dayswithrainyear first=%dayswithrainyear%:204 dup=%dayswithrainyear%:933
$etcurrentweek first=%etcurrentweek%:680 dup=%etcurrentweek%:858
$firewi first=%FWIfwi%:624 dup=%FWIfwi%:783
$fullmoondate first=%fullmoondate%:65 dup=%fullmoondate%:690 dup=%fullmoondate%:752
$hddday first=%hddday%:641 dup=%hddday%:814
$hddmonth first=%hddmonth%:642 dup=%hddmonth%:815
$hddyear first=%hddyear%:643 dup=%hddyear%:816
$highbaro first=%highbaro%:406 dup=%highbaro%:879
$highbarot first=%highbarot%:407 dup=%highbarot%:881
$highsolaryest first=%highsolaryest%:408 dup=%highsolaryest%:906
$highsolaryesttime first=%highsolaryesttime%:409 dup=%highsolaryesttime%:925
$highuvyest first=%highuvyest%:228 dup=%highuvyest%:913
$highuvyesttime first=%highuvyesttime%:229 dup=%highuvyesttime%:926
$lighteningcountlast12hour first=%lighteningcountlast12hour%:699 dup=%lighteningcountlast12hour%:757
$lighteningcountlast30minutes first=%lighteningcountlast30minutes%:700 dup=%lighteningcountlast30minutes%:758
$lighteningcountlast5minutes first=%lighteningcountlast5minutes%:698 dup=%lighteningcountlast5minutes%:756
$lighteningcountlasthour first=%lighteningcountlasthour%:696 dup=%lighteningcountlasthour%:754
$lighteningcountlastminute first=%lighteningcountlastminute%:697 dup=%lighteningcountlastminute%:755
$lighteningcountlasttime first=%lighteningcountlasttime%:701 dup=%lighteningcountlasttime%:759
$lighteningcountmonth first=%lighteningcountmonth%:702 dup=%lighteningcountmonth%:760
$lighteningcountyear first=%lighteningcountyear%:703 dup=%lighteningcountyear%:761
$maxaverageyest first=%maxaverageyest%:411 dup=%maxaverageyest%:871 dup=%maxaverageyest%:928
$maxaverageyestt first=%maxaverageyestt%:412 dup=%maxaverageyestt%:927
$maxbaroyest first=%maxbaroyest%:416 dup=%maxbaroyest%:564 dup=%maxbaroyest%:883
$maxbaroyestt first=%maxbaroyestt%:417 dup=%maxbaroyestt%:565 dup=%maxbaroyestt%:930
$maxgustyest first=%maxgustyest%:419 dup=%maxgustyest%:554 dup=%maxgustyest%:872
$maxgustyestt first=%maxgustyestt%:420 dup=%maxgustyestt%:555 dup=%maxgustyestt%:929
$maxheatweek first=%maxheatweek%:651 dup=%maxheatweek%:712
$maxsolarfortime first=%maxsolarfortime%:688 dup=%maxsolarfortime%:750 dup=%maxsolarfortime%:857
$maxtempyestt first=%maxtempyestt%:148 dup=%maxtempyestt%:921
$minbaroyest first=%minbaroyest%:566 dup=%minbaroyest%:884
$minbaroyestt first=%minbaroyestt%:567 dup=%minbaroyestt%:931
$minchillweek first=%minchillweek%:648 dup=%minchillweek%:821
$minchillyest first=%minchillyest%:423 dup=%minchillyest%:650 dup=%minchillyest%:825
$minchillyestt first=%minchillyestt%:424 dup=%minchillyestt%:923
$mintempyestt first=%mintempyestt%:150 dup=%mintempyestt%:922
$minwindch first=%minwindch%:425 dup=%minwindch%:647 dup=%minwindch%:820
$minwindcht first=%minwindcht%:426 dup=%minwindcht%:649 dup=%minwindcht%:822
$monthname first=%monthname%:42 dup=%monthname%:91
$monthrn first=%monthrn%:200 dup=%monthrn%:678 dup=%monthrn%:855
$mrecordhighavwindday first=%mrecordhighavwindday%:427 dup=%mrecordhighavwindday%:965
$mrecordhighavwindmonth first=%mrecordhighavwindmonth%:428 dup=%mrecordhighavwindmonth%:966
$mrecordhighbaro first=%mrecordhighbaro%:430 dup=%mrecordhighbaro%:579
$mrecordhighbaroday first=%mrecordhighbaroday%:431 dup=%mrecordhighbaroday%:580 dup=%mrecordhighbaroday%:973
$mrecordhighbaromonth first=%mrecordhighbaromonth%:432 dup=%mrecordhighbaromonth%:581 dup=%mrecordhighbaromonth%:974
$mrecordhighbaroyear first=%mrecordhighbaroyear%:433 dup=%mrecordhighbaroyear%:582
$mrecordhighgustday first=%mrecordhighgustday%:246 dup=%mrecordhighgustday%:969
$mrecordhighgustmonth first=%mrecordhighgustmonth%:434 dup=%mrecordhighgustmonth%:556 dup=%mrecordhighgustmonth%:970
$mrecordhighgustyear first=%mrecordhighgustyear%:435 dup=%mrecordhighgustyear%:557
$mrecordhightemp first=%mrecordhightemp%:436 dup=%mrecordhightemp%:569 dup=%mrecordhightemp%:859
$mrecordhightempday first=%mrecordhightempday%:437 dup=%mrecordhightempday%:570 dup=%mrecordhightempday%:941
$mrecordhightempmonth first=%mrecordhightempmonth%:438 dup=%mrecordhightempmonth%:571 dup=%mrecordhightempmonth%:942
$mrecordhightempyear first=%mrecordhightempyear%:439 dup=%mrecordhightempyear%:572
$mrecordlowbaroday first=%mrecordlowbaroday%:585 dup=%mrecordlowbaroday%:977
$mrecordlowbaromonth first=%mrecordlowbaromonth%:586 dup=%mrecordlowbaromonth%:978
$mrecordlowchill first=%mrecordlowchill%:440 dup=%mrecordlowchill%:863
$mrecordlowchillday first=%mrecordlowchillday%:441 dup=%mrecordlowchillday%:949
$mrecordlowchillmonth first=%mrecordlowchillmonth%:442 dup=%mrecordlowchillmonth%:950
$mrecordlowtemp first=%mrecordlowtemp%:444 dup=%mrecordlowtemp%:574 dup=%mrecordlowtemp%:860
$mrecordlowtempday first=%mrecordlowtempday%:445 dup=%mrecordlowtempday%:575 dup=%mrecordlowtempday%:943
$mrecordlowtempmonth first=%mrecordlowtempmonth%:446 dup=%mrecordlowtempmonth%:576 dup=%mrecordlowtempmonth%:944
$mrecordlowtempyear first=%mrecordlowtempyear%:447 dup=%mrecordlowtempyear%:577
$nextnewmoon first=%nextnewmoon%:61 dup=%nextnewmoon%:691 dup=%nextnewmoon%:753
$raincurrentweek first=%raincurrentweek%:451 dup=%raincurrentweek%:679 dup=%raincurrentweek%:856
$recorddailyrain first=%recorddailyrain%:813 dup=%recorddailyrain%:940
$recordhightemp first=%recordhightemp%:630 dup=%recordhightemp%:789
$recordhightempday first=%recordhightempday%:632 dup=%recordhightempday%:791
$recordhightempmonth first=%recordhightempmonth%:631 dup=%recordhightempmonth%:790
$recordhightempyear first=%recordhightempyear%:633 dup=%recordhightempyear%:792
$recordlowchill first=%recordlowchill%:652 dup=%recordlowchill%:827
$recordlowchillday first=%recordlowchillday%:639 dup=%recordlowchillday%:798
$recordlowchillmonth first=%recordlowchillmonth%:638 dup=%recordlowchillmonth%:797
$recordlowchillyear first=%recordlowchillyear%:640 dup=%recordlowchillyear%:799
$recordlowtemp first=%recordlowtemp%:634 dup=%recordlowtemp%:793
$recordlowtempday first=%recordlowtempday%:636 dup=%recordlowtempday%:795
$recordlowtempmonth first=%recordlowtempmonth%:635 dup=%recordlowtempmonth%:794
$recordlowtempyear first=%recordlowtempyear%:637 dup=%recordlowtempyear%:796
$snowdaysthismonth first=%snowdaysthismonth%:266 dup=%snowdaysthismonth%:675 dup=%snowdaysthismonth%:852
$snowdaysthisyear first=%snowdaysthisyear%:267 dup=%snowdaysthisyear%:676 dup=%snowdaysthisyear%:853
$snowmonthcm first=%snowmonthcm%:256 dup=%snowmonthcm%:670 dup=%snowmonthcm%:848
$snowmonthin first=%snowmonthin.%:253 dup=%snowmonthin.%:665 dup=%snowmonthin.%:843
$snownowcm first=%snownowcm%:263 dup=%snownowcm%:672 dup=%snownowcm%:850
$snownowin first=%snownowin.%:262 dup=%snownowin.%:667 dup=%snownowin.%:845
$snowseasoncm first=%snowseasoncm%:255 dup=%snowseasoncm%:669 dup=%snowseasoncm%:847
$snowseasonin first=%snowseasonin.%:252 dup=%snowseasonin.%:664 dup=%snowseasonin.%:842
$snowtodaycm first=%snowtodaycm%:257 dup=%snowtodaycm%:671 dup=%snowtodaycm%:849
$snowtodayin first=%snowtodayin.%:254 dup=%snowtodayin.%:666 dup=%snowtodayin.%:844
$snowyesterday first=%snowyesterday%:258 dup=%snowyesterday%:674 dup=%snowyesterday%:840
$solarnoon first=%solarnoon%:654 dup=%solarnoon%:831
$sunshinehourstodateday first=%sunshinehourstodateday%:686 dup=%sunshinehourstodateday%:748 dup=%sunshinehourstodateday%:900
$sunshinehourstodatemonth first=%sunshinehourstodatemonth%:687 dup=%sunshinehourstodatemonth%:749 dup=%sunshinehourstodatemonth%:901
$vpconsolebattery first=%vpconsolebattery%:623 dup=%vpconsolebattery%:782
$vpissstatus first=%vpissstatus%:621 dup=%vpissstatus%:780
$vpreception2 first=%vpreception2%:622 dup=%vpreception2%:781
$warmestdayonrecord first=%warmestdayonrecord%:626 dup=%warmestdayonrecord%:785
$warmestnightonrecord first=%warmestnightonrecord%:628 dup=%warmestnightonrecord%:787
$wetbulb first=%wetbulb%:689 dup=%wetbulb%:751
$windruntodatethismonth first=%windruntodatethismonth%:455 dup=%windruntodatethismonth%:983
$windruntodatethisyear first=%windruntodatethisyear%:456 dup=%windruntodatethisyear%:984
$windruntoday first=%windruntoday%:457 dup=%windruntoday%:981
$yearrn first=%yearrn%:201 dup=%yearrn%:869
$yeartodateavwind first=%yeartodateavwind%:877 dup=%yeartodateavwind%:887
$yeartodategstwind first=%yeartodategstwind%:878 dup=%yeartodategstwind%:888
$yesterdayrain first=%yesterdayrain%:211 dup=%yesterdayrain%:870
$yrecordhighavwindday first=%yrecordhighavwindday%:459 dup=%yrecordhighavwindday%:967
$yrecordhighavwindmonth first=%yrecordhighavwindmonth%:460 dup=%yrecordhighavwindmonth%:968
$yrecordhighbaro first=%yrecordhighbaro%:462 dup=%yrecordhighbaro%:599 dup=%yrecordhighbaro%:891
$yrecordhighbaroday first=%yrecordhighbaroday%:463 dup=%yrecordhighbaroday%:600 dup=%yrecordhighbaroday%:975
$yrecordhighbaromonth first=%yrecordhighbaromonth%:464 dup=%yrecordhighbaromonth%:601 dup=%yrecordhighbaromonth%:976
$yrecordhighbaroyear first=%yrecordhighbaroyear%:465 dup=%yrecordhighbaroyear%:602
$yrecordhighgustday first=%yrecordhighgustday%:466 dup=%yrecordhighgustday%:560 dup=%yrecordhighgustday%:971
$yrecordhighgustmonth first=%yrecordhighgustmonth%:467 dup=%yrecordhighgustmonth%:561 dup=%yrecordhighgustmonth%:972
$yrecordhighgustyear first=%yrecordhighgustyear%:468 dup=%yrecordhighgustyear%:562
$yrecordhightemp first=%yrecordhightemp%:469 dup=%yrecordhightemp%:589 dup=%yrecordhightemp%:866
$yrecordhightempday first=%yrecordhightempday%:470 dup=%yrecordhightempday%:590 dup=%yrecordhightempday%:945
$yrecordhightempmonth first=%yrecordhightempmonth%:471 dup=%yrecordhightempmonth%:591 dup=%yrecordhightempmonth%:946
$yrecordhightempyear first=%yrecordhightempyear%:472 dup=%yrecordhightempyear%:592
$yrecordlowbaro first=%yrecordlowbaro%:604 dup=%yrecordlowbaro%:892
$yrecordlowbaroday first=%yrecordlowbaroday%:605 dup=%yrecordlowbaroday%:979
$yrecordlowbaromonth first=%yrecordlowbaromonth%:606 dup=%yrecordlowbaromonth%:980
$yrecordlowchill first=%yrecordlowchill%:473 dup=%yrecordlowchill%:868
$yrecordlowchillday first=%yrecordlowchillday%:474 dup=%yrecordlowchillday%:951
$yrecordlowchillmonth first=%yrecordlowchillmonth%:475 dup=%yrecordlowchillmonth%:952
$yrecordlowtemp first=%yrecordlowtemp%:477 dup=%yrecordlowtemp%:594 dup=%yrecordlowtemp%:867
$yrecordlowtempday first=%yrecordlowtempday%:478 dup=%yrecordlowtempday%:595 dup=%yrecordlowtempday%:947
$yrecordlowtempmonth first=%yrecordlowtempmonth%:479 dup=%yrecordlowtempmonth%:596 dup=%yrecordlowtempmonth%:948
$yrecordlowtempyear first=%yrecordlowtempyear%:480 dup=%yrecordlowtempyear%:597
$yrecordwindgust first=%yrecordwindgust%:481 dup=%yrecordwindgust%:559 dup=%yrecordwindgust%:899
I've attached testtags-original (the 4 combined), testtags-commented (with the duplicated lines commented out), and finally
testtags.txt (the new
1.05V1.06 version with no duplicated tags).
I'll be adding that to the distributions tonight.
Best regards,
Ken
EDIT: updated with testtags.txt V1.0
6 to support Scott's Alternative Dashboard V4.00 release.