Fech , do New York Times, é uma ótima biblioteca Ruby para acessar os dados de arquivamento da FEC (Federal Election Commission). Estou trabalhando em um projeto em Python que requer a capacidade de baixar e analisar dados de arquivamento FEC. Aqui está como estou usando Fech em um projeto Python para construir um dicionário de dados de resumo e contribuição para um arquivamento.
No arquivo filing.rb:
require "fech"
require "json"
filing = Fech::Filing.new(ARGV[0])
filing.download
data = {
"summary" => filing.summary,
"contributions" => filing.rows_like(/^sa/)
}
puts data.to_json
No meu arquivo python:
import json
import os
import subprocess
def fetch_filing(fileno):
"""Assumes filing.rb is in same directory as this file."""
fechpath = os.path.join(os.path.dirname(__file__), 'filing.rb')
p = subprocess.Popen(['ruby', '-rubygems', fechpath, fileno],
stdout=subprocess.PIPE)
output = p.communicate()
return json.loads(output[0])
Uma chamada para fetch_filing com um número de arquivamento retorna um dicionário com o resumo das chaves e as contribuições.
Fech é bem feito. Esta abordagem de subprocesso pode não ser o código mais elegante do mundo, mas está me poupando de escrever um monte de código de análise e reinventar a roda e, o mais importante, posso manter o projeto em andamento com busca e análise de arquivamento FEC sendo um problema resolvido, graças ao time do NYTimes. Confira Fech no github: https://github.com/NYTimes/Fech .