[documentos]defprocessar(zotero_api_key,zotero_group_id,collection_key,qualis_csv_path,**kwargs):""" Processa os itens de uma coleção do Zotero, atualizando o campo ISSN (se necessário) e atribuindo a classificação Qualis com base em uma base de dados CSV. A função realiza as seguintes etapas: 1. Busca os itens da coleção especificada no grupo Zotero. 2. Verifica se o campo ISSN está presente. Caso não esteja, tenta obtê-lo via API do OpenAlex. 3. Com o ISSN, consulta a base Qualis para obter o estrato da publicação. 4. Se o ISSN não estiver na base, realiza uma correspondência fuzzy com o nome da revista. 5. Atualiza os dados no Zotero com o ISSN e a classificação Qualis, quando aplicável. 6. Exibe um resumo da execução, incluindo número de correspondências via OpenAlex e Fuzzy Matching. :param zotero_api_key: Chave de API do Zotero com permissões de leitura/escrita. :type zotero_api_key: str :param zotero_group_id: ID do grupo Zotero onde os itens estão armazenados. :type zotero_group_id: str :param collection_key: Chave da coleção Zotero a ser processada. :type collection_key: str :param qualis_csv_path: Caminho para o arquivo CSV contendo os dados do Qualis (com colunas 'ISSN', 'Estrato' e 'Publicação'). :type qualis_csv_path: str :return: Nenhum valor é retornado. Os dados são atualizados diretamente no Zotero, e um relatório é impresso no console. :rtype: None """qualis_dict_issn,qualis_dict_nome=carregar_base_qualis(qualis_csv_path)items=get_items(zotero_api_key,zotero_group_id,collection_key)fuzzy_matches=[]count_openalex=count_fuzzy=0foritemintqdm(items,desc="Processando artigos"):data=item.get("data",{})ifdata.get('itemType')!='journalArticle':continuetitulo=data.get("title","")doi=data.get("DOI","")issn=data.get("ISSN","").replace("-","").strip()pub=data.get("publicationTitle","").strip().lower()item_key=data.get("key")ifissnnotinqualis_dict_issn:novos=buscar_issn(titulo,doi)forninnovos:ifn.replace("-","").strip()inqualis_dict_issn:issn=n.replace("-","").strip()count_openalex+=1breakelse:ifnovos:issn=novos[0].replace("-","").strip()nota=qualis_dict_issn.get(issn)ifnotnotaandpub:match=process.extractOne(pub,qualis_dict_nome.keys(),scorer=fuzz.WRatio)ifmatchandmatch[1]>=80:nota=qualis_dict_nome[match[0]]count_fuzzy+=1fuzzy_matches.append({'titulo':titulo,'pub_zotero':pub,'match_qualis':match[0],'score':match[1],'qualis':nota})ifnota:update_item(zotero_api_key,zotero_group_id,item_key,issn,nota)print("\nResumo da execução:")print(f"Artigos com ISSN via OpenAlex: {count_openalex}")print(f"Artigos com Fuzzy Matching: {count_fuzzy}")iffuzzy_matches:print("\nDetalhes dos artigos que usaram Fuzzy Matching:")formatchinfuzzy_matches:print(f"- {match['titulo']}")print(f" Revista no Zotero: {match['pub_zotero']}")print(f" Match Qualis: {match['match_qualis']} (score: {match['score']})")print(f" Estrato atribuído: {match['qualis']}\n")