mirror of
https://github.com/wassname/scikit-image.git
synced 2026-08-09 12:30:07 +08:00
61 lines
2.4 KiB
Python
61 lines
2.4 KiB
Python
#!/usr/bin/python
|
|
import argparse, csv
|
|
|
|
# Imports color names from a CSV file (colors.csv) and outputs a Python file
|
|
# with color name definitions (colors.py).
|
|
|
|
def download_colors(path):
|
|
import urllib2, re
|
|
from bs4 import BeautifulSoup
|
|
|
|
# All colors seem to be on this page
|
|
url = "http://en.wikipedia.org/wiki/List_of_colors:_A-M"
|
|
request = urllib2.Request(url)
|
|
opener = urllib2.build_opener()
|
|
request.add_header("User-Agent", "Mozilla/5.0")
|
|
html = opener.open(request).read()
|
|
|
|
# Find first table with "Color names" caption
|
|
soup = BeautifulSoup(html, "lxml")
|
|
color_table = [t for t in soup.findAll("table") if t.find("caption") is not None
|
|
and t.find("caption").string == "Color names"][0]
|
|
|
|
with open(path, "w") as out_file:
|
|
writer = csv.writer(out_file)
|
|
|
|
# Each table row has the color name in a th and the hex
|
|
# color in the second td cell.
|
|
for row in color_table.findAll("tr"):
|
|
th = row.find("th")
|
|
cells = row.findAll("td")
|
|
if th is None or len(cells) < 2:
|
|
continue
|
|
|
|
name = th.string.encode("ascii", "ignore")
|
|
|
|
# Strip parens and replace non-alphanumeric characters with underscores
|
|
id_name = re.sub("[^a-zA-Z0-9]", "_", name.lower().replace("(", "").replace(")", ""))
|
|
hex_str = cells[1].string.encode("ascii", "ignore")
|
|
r, g, b = (int(hex_str[1:3], 16), int(hex_str[3:5], 16), int(hex_str[5:7], 16))
|
|
|
|
writer.writerow((id_name, name, hex_str, str(r), str(g), str(b)))
|
|
|
|
# --------------------------------------------------
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--input", "-i", type=str, default="colors.csv", help="Input file (CSV)")
|
|
parser.add_argument("--output", "-o", type=str, default="colors.py", help="Output file (Python)")
|
|
parser.add_argument("--download", "-d", action="store_true", help="Download from Wikipedia")
|
|
args = parser.parse_args()
|
|
|
|
if args.download:
|
|
download_colors(args.input)
|
|
|
|
with open(args.input, "r") as input_file:
|
|
with open(args.output, "w") as output_file:
|
|
for row in csv.reader(input_file):
|
|
name = row[0].upper()
|
|
rgb = (int(row[-3]), int(row[-2]), int(row[-1]))
|
|
output_file.write("{0} = {1}\n".format(name, rgb))
|