Last active
September 6, 2022 12:38
-
-
Save maxwellcc/d046ed06cf2bb542f503c4e7c66814c5 to your computer and use it in GitHub Desktop.
XML: Processa a RPI de patentes, marcas e registros de programa de computador do INPI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Processa patentes | |
def get_despachos_patentes_INPI(ip_type, Patent): | |
if ip_type == 'Patente': | |
ip_id = Patent.objects.values_list('patent_id', flat=True).filter(active=True) | |
if ip_id: | |
for despatch in doc.iterfind('despacho'): | |
for process in despatch.iterfind('processo-patente'): | |
number = process.findtext('numero') | |
if number in ip_id: | |
qtd_finded += 1 | |
data[number] = {} | |
data[number]['tipo'] = ip_type | |
data[number]['revista'] = rpi_number | |
data[number]['codigo'] = despatch.findtext('codigo') | |
data[number]['titulo'] = despatch.findtext('titulo') | |
data[number]['comentario'] = despatch.findtext('comentario') | |
data[number]['data-deposito'] = process.findtext('data-deposito') | |
qtd = 0 | |
data[number]['classificacao-internacional-lista'] = {} | |
for cil in process.iterfind( | |
'classificacao-internacional-lista/classificacao-internacional'): | |
qtd += 1 | |
data[number]['classificacao-internacional-lista'][str(qtd)] = \ | |
cil.text | |
qtd = 0 | |
data[number]['prioridade-unionista-lista'] = {} | |
for tipoPrograma in process.iterfind( | |
'prioridade-unionista-lista/prioridade-unionista'): | |
qtd += 1 | |
data[number]['prioridade-unionista-lista'][str(qtd)] = {} | |
data[number]['prioridade-unionista-lista'][str(qtd)]['sigla-pais'] = \ | |
tipoPrograma.findtext('sigla-pais') | |
data[number]['prioridade-unionista-lista'][str(qtd)]['numero-prioridade'] = \ | |
tipoPrograma.findtext('numero-prioridade') | |
data[number]['prioridade-unionista-lista'][str(qtd)]['data-prioridade'] = \ | |
tipoPrograma.findtext('data-prioridade') | |
qtd = 0 | |
data[number]['titular-lista'] = {} | |
for applicant in process.iterfind('titular-lista/titular'): | |
qtd += 1 | |
data[number]['titular-lista'][str(qtd)] = applicant.findtext( | |
'nome-completo') | |
qtd = 0 | |
data[number]['inventor-lista'] = {} | |
for creator in process.iterfind('inventor-lista/inventor'): | |
qtd += 1 | |
data[number]['inventor-lista'][str(qtd)] = creator.findtext( | |
'nome-completo') | |
return data |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def get_despachos_softwares_INPI(ip_type, Software): | |
if ip_type == 'Software': | |
ip_id = Software.objects.values_list('software_id', flat=True).filter(active=True) | |
if ip_id: | |
for despatch in doc.iterfind('despacho'): | |
for process in despatch.iterfind('processo-programa'): | |
number = process.findtext('numero') | |
if number in ip_id: | |
qtd_finded += 1 | |
data[number] = {} | |
data[number]['tipo'] = ip_type | |
data[number]['revista'] = rpi_number | |
data[number]['codigo'] = despatch.findtext('codigo') | |
data[number]['titulo'] = despatch.findtext('titulo') | |
data[number]['comentario'] = despatch.findtext('comentario') | |
data[number]['dataCriacao'] = process.findtext('dataCriacao') | |
# campoAplicacaoLista | |
qtd = 0 | |
data[number]['campoAplicacaoLista'] = {} | |
for despacho in process.iterfind( | |
'campoAplicacaoLista/campoAplicacao'): | |
qtd += 1 | |
data[number]['campoAplicacaoLista'][str(qtd)] = \ | |
despacho.text | |
# linguagemLista | |
qtd = 0 | |
data[number]['linguagemLista'] = {} | |
for campoLinguagem in process.iterfind( | |
'linguagemLista/linguagem'): | |
qtd += 1 | |
data[number]['linguagemLista'][str(qtd)] = \ | |
campoLinguagem.text | |
# tipoProgramaLista | |
qtd = 0 | |
data[number]['tipoProgramaLista'] = {} | |
for tipoPrograma in process.iterfind( | |
'tipoProgramaLista/tipoPrograma'): | |
qtd += 1 | |
data[number]['tipoProgramaLista'][str(qtd)] = {} | |
data[number]['tipoProgramaLista'][str(qtd)]['codigo'] = \ | |
tipoPrograma.findtext('codigo') | |
# titularLista | |
qtd = 0 | |
data[number]['titularLista'] = {} | |
for applicant in process.iterfind('titularLista/titular'): | |
qtd += 1 | |
data[number]['titularLista'][str(qtd)] = applicant.findtext( | |
'nome') | |
# criadorLista | |
qtd = 0 | |
data[number]['criadorLista'] = {} | |
for creator in process.iterfind('criadorLista/criador'): | |
qtd += 1 | |
data[number]['criadorLista'][str(qtd)] = creator.findtext( | |
'nome') | |
return data |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def get_despachos_marcas_INPI(ip_type, Trademark): | |
if ip_type == 'Marca': | |
ip_id = Trademark.objects.values_list('trademark_id', flat=True).filter(active=True) | |
if ip_id: | |
for process in doc.iterfind('processo'): | |
number = process.attrib.get('numero') | |
if number in ip_id: | |
qtd_finded += 1 | |
data[number] = {} | |
data[number]['tipo'] = ip_type | |
data[number]['revista'] = rpi_number | |
data[number]['data-deposito'] = process.attrib.get('data-deposito') | |
# dados-de-madri | |
# <dados-de-madri numero-inscricao-internacional="1496568" data-recebimento-inpi="07/11/2019"/> | |
data[number]['dados-de-madri'] = {} | |
for dados_de_madri in process.iterfind('dados-de-madri'): | |
data[number]['dados-de-madri'][ | |
'numero-inscricao-internacional'] = dados_de_madri.attrib.get( | |
'numero-inscricao-internacional') | |
data[number]['dados-de-madri'][ | |
'data-recebimento-inpi'] = dados_de_madri.attrib.get( | |
'data-recebimento-inpi') | |
# despachos | |
qtd = 0 | |
data[number]['despachos'] = {} | |
for despacho in process.iterfind('despachos/despacho'): | |
qtd += 1 | |
data[number]['despachos'][str(qtd)] = {} | |
data[number]['despachos'][str(qtd)]['codigo'] = despacho.attrib.get('codigo') | |
data[number]['despachos'][str(qtd)]['nome'] = despacho.attrib.get('nome') | |
# TODO: falta texto-complementar, protocolo (v. arquivo de exemplo) | |
# titulares | |
qtd = 0 | |
data[number]['titulares'] = {} | |
for titular in process.iterfind('titulares/titular'): | |
qtd += 1 | |
data[number]['titulares'][str(qtd)] = {} | |
data[number]['titulares'][str(qtd)]['nome-razao-social'] = titular.attrib.get( | |
'nome-razao-social') | |
data[number]['titulares'][str(qtd)]['pais'] = titular.attrib.get('pais') | |
data[number]['titulares'][str(qtd)]['uf'] = titular.attrib.get('uf') | |
# marca | |
data[number]['marca'] = {} | |
for marca in process.iterfind('marca'): | |
data[number]['marca']['apresentacao'] = marca.attrib.get('apresentacao') | |
data[number]['marca']['natureza'] = marca.attrib.get('natureza') | |
data[number]['marca']['nome'] = marca.findtext('nome') | |
# lista-classe-nice | |
qtd = 0 | |
data[number]['lista-classe-nice'] = {} | |
for classe_nice in process.iterfind('lista-classe-nice/classe-nice'): | |
qtd += 1 | |
data[number]['lista-classe-nice'][str(qtd)] = {} | |
data[number]['lista-classe-nice'][str(qtd)]['codigo'] = classe_nice.attrib.get( | |
'codigo') | |
data[number]['lista-classe-nice'][str(qtd)][ | |
'especificacao'] = classe_nice.findtext('especificacao') | |
data[number]['lista-classe-nice'][str(qtd)][ | |
'traducao-especificacao'] = classe_nice.findtext('traducao-especificacao') | |
data[number]['lista-classe-nice'][str(qtd)]['status'] = classe_nice.findtext( | |
'status') | |
# classes-vienna | |
qtd = 0 | |
data[number]['classes-vienna'] = {} | |
for classe_vienna in process.iterfind('classes-vienna/classe-vienna'): | |
qtd += 1 | |
data[number]['classes-vienna'][str(qtd)] = {} | |
data[number]['classes-vienna'][str(qtd)]['codigo'] = classe_vienna.attrib.get( | |
'codigo') | |
data[number]['classes-vienna'][str(qtd)]['edicao'] = classe_vienna.attrib.get( | |
'edicao') | |
# prioridade-unionista | |
qtd = 0 | |
data[number]['prioridades'] = {} | |
for prioridade in process.iterfind('prioridade-unionista/prioridade'): | |
qtd += 1 | |
data[number]['prioridades'][str(qtd)] = {} | |
data[number]['prioridades'][str(qtd)]['data'] = prioridade.attrib.get('data') | |
data[number]['prioridades'][str(qtd)]['numero'] = prioridade.attrib.get( | |
'numero') | |
data[number]['prioridades'][str(qtd)]['pais'] = prioridade.attrib.get('pais') | |
# sobrestadores | |
qtd = 0 | |
data[number]['sobrestadores'] = {} | |
for sobrestador in process.iterfind('sobrestadores/sobrestador'): | |
qtd += 1 | |
data[number]['sobrestadores'][str(qtd)] = {} | |
data[number]['sobrestadores'][str(qtd)]['processo'] = sobrestador.attrib.get( | |
'processo') | |
data[number]['sobrestadores'][str(qtd)]['marca'] = sobrestador.attrib.get( | |
'marca') | |
# procurador | |
data[number]['procurador'] = process.findtext('procurador') | |
return data |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Testado no site do INPI em maio de 2020. O INPI pode alterar o formato do XML sem aviso prévio.
Não encontrei nenhum dicionário de dados, tive que fazer no 'olhômetro', por isso, não tem todos os identificadores.