aboutsummaryrefslogtreecommitdiffstats
path: root/tools/generate-bacnet-vendors.py
diff options
context:
space:
mode:
authorAnish Bhatt <anish@chelsio.com>2014-10-07 00:55:33 -0700
committerAnders Broman <a.broman58@gmail.com>2014-10-07 21:28:00 +0000
commit515f09fef06e04c616f3d37df531e7d3cecb84c0 (patch)
tree962da55f19ce2ea0b3b58ec07b832df510c17bc9 /tools/generate-bacnet-vendors.py
parentcf4fc5796664beec172f1b1d6fd4591eda11da39 (diff)
[tools] add script to automatically generate bacnet vendors
Requires beautifulsoup4 for parsing, translitcodec for converting accents/diaeresis etc to regular text Change-Id: I4d400f15916ee3ab07fa14b09fca12beac2010f3 Reviewed-on: https://code.wireshark.org/review/4518 Reviewed-by: Evan Huus <eapache@gmail.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'tools/generate-bacnet-vendors.py')
-rwxr-xr-xtools/generate-bacnet-vendors.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/generate-bacnet-vendors.py b/tools/generate-bacnet-vendors.py
new file mode 100755
index 0000000000..66263cfcd1
--- /dev/null
+++ b/tools/generate-bacnet-vendors.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python2
+
+from bs4 import BeautifulSoup
+import urllib
+import sys
+import string
+# Required to convert accents/diaeresis etc.
+import translitcodec
+
+f = urllib.urlopen("http://www.bacnet.org/VendorID/BACnet%20Vendor%20IDs.htm")
+html = f.read()
+soup = BeautifulSoup(''.join(html))
+
+entry = "static const value_string\nBACnetVendorIdentifiers [] = {"
+table = soup.find('table')
+
+rows = table.findAll('tr')
+
+for tr in rows:
+ cols = tr.findAll('td')
+ for index,td in enumerate(cols[0:2]):
+ text = ''.join(td.find(text=True))
+ if index == 0:
+ entry = " { %3s" % text
+ else:
+ entry += ", \"%s\" }," % text.rstrip()
+ # Required specially for "Dorsette's Inc." due to malformed html
+ entry = entry.replace(u'\u0092', u'\'')
+ # Required to convert accents/diaeresis etc.
+ entry = entry.encode('translit/long')
+ # Encode to ascii so we can out to file
+ entry = entry.encode("ascii",'ignore')
+ print entry
+
+entry = " { 0, NULL }\n};"
+print entry.encode("ascii")