Tengo un par de dudas, problemas
- El script tarda aprox un minuto en completarse, diria que es mucho.
- Como puedo ordenar el json para que este ordenado por las categorias como lo tengo en existing.
Código Python:
Ver original#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, fnmatch, json, requests
json_files = []
existing = {'Serif':[], 'Sans Serif':[], 'Display':[], 'Handwriting':[]} # Categorias
include = ['name', 'fonts', 'fullName', 'style', 'weight', 'subsets']
def deleted_items(data, sub, inc):
for d in data.keys():
if not d in inc:
del(data[d])
if d == sub:
for subdata in data[d]:
for x in subdata.keys():
if not x in inc:
del(subdata[x])
return data
for r, d, f in os.walk('googlefontdirectory'):
for p in fnmatch.filter(f, 'METADATA.json'):
json_files.append(os.path.join(r, p))
for filename in json_files: # len(json_files) = 724
with open(filename, 'rb') as f:
try:
data = json.load(f)
name = data['name'].replace(' ', '+')
url = 'http://www.google.com/fonts/specimen/' + name
resp = requests.head(url)
if 200 == resp.status_code:
cat = data['category']
data = deleted_items(data, 'fonts', include)
existing[cat].append(data)
except ValueError:
pass
with open('existing.json', 'wb') as f:
json.dump(existing, f, indent=2)
Como vereis estoy recorriendo el directorio del googlefontdirectory creado mediante mercurial (hg) y al ser diferente del directorio de google fonts tengo que comprobar que fuente esta disponible para añadirla al json y luego elimino el contenido innecesario para no hacer un json mas grande de lo que deberia.