{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyMB+qrMSIHd6ocYJWfon31L"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["**Script identificacao_softwares_repositorios.ipynb:** verifica se o RI usa Dspace ou não. Se for DSpace, tenta identificar a versão do software.\n","\n","\n","---\n","\n","\n","\n","Ordem de detecção do software DSpace:\n","\n","1. Tentar extrair direto da meta tag software DSpace + versão exata\n","\n","Ex:\n","\n","*   `<meta name=\"Generator\" content=\"DSpace 6.5-SNAPSHOT\">`\n","*   `<meta name=\"Generator\" content=\"DSpace 7.6.2\">`\n","\n","\n","2. Se não tiver meta tag → inferência\n","\n","* \"dspace-angular\" ou \"/server/\" → DSpace 7+\n","\n","* \"xmlui\", \"jspui\", \"handle\" → DSpace 6-\n","\n","3. Se nada bater → \"Não é DSpace\"\n","\n","4. Se falhar requisição → código HTTP\n","\n","\n","---\n","\n","\n","🧠 Regra para extrair versão\n","\n","Regex: `r\"DSpace\\s*([\\d\\.]+(?:-SNAPSHOT)?)\"`\n","\n","\n","---\n","\n","\n","⚠️ Observações importantes:\n","\n","* Nem todo DSpace expõe a meta tag → por isso a inferência é essencial\n","* DSpace 7 às vezes esconde completamente o generator\n","* Alguns RIs usam proxy/reverse → HTML pode enganar\n","* Sophia e OJS normalmente não terão essa meta tag"],"metadata":{"id":"kK7ECS-RZ1Up"}},{"cell_type":"code","execution_count":null,"metadata":{"id":"LW_iEav0Ho8v"},"outputs":[],"source":["from google.colab import drive\n","drive.mount('/content/drive')"]},{"cell_type":"code","source":["import requests\n","from bs4 import BeautifulSoup\n","import pandas as pd\n","import re\n","from tqdm import tqdm"],"metadata":{"id":"xHyR75_enjD2"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":[],"metadata":{"id":"5op0aHh4nlTG"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["# Lista dos repositórios (138)\n","repositorios_validados = [\n","    (\"NPA – Instituto Nacional de Pesquisas da Amazônia\", \"https://repositorio.inpa.gov.br\"),\n","    (\"UEA – Universidade do Estado do Amazonas\", \"https://ri.uea.edu.br/\"),\n","    (\"UNIR – Universidade Federal de Rondônia\", \"https://ri.unir.br/\"),\n","    (\"UFAM – Universidade Federal do Amazonas\", \"https://riu.ufam.edu.br/\"),\n","    (\"UFPA – Universidade Federal do Pará\", \"https://repositorio.ufpa.br/\"),\n","    (\"UFT – Universidade Federal do Tocantins\", \"https://repositorio.uft.edu.br/\"),\n","    (\"UFRA – Universidade Federal Rural da Amazônia\", \"https://repositorio.ufra.edu.br/\"),\n","    (\"IFAM – Instituto Federal do Amazonas\", \"https://riu.ufam.edu.br/\"),\n","    (\"PATUA – Instituto Evandro Chagas\", \"https://patua.iec.gov.br/\"),\n","    (\"UNIFAP – Universidade Federal do Amapá\", \"https://repositorio.unifap.br/\"),\n","    (\"UFOPA – Universidade Federal do Oeste do Pará\", \"https://repositorio.ufopa.edu.br/\"),\n","    (\"UFRR – Universidade Federal de Roraima\", \"http://repositorio.ufrr.br:8080\"),\n","    (\"IFAP – Instituto Federal de Educação, Ciência e Tecnologia do Amapá\", \"https://repositorio.ifap.edu.br/\"),\n","    (\"FHCGV – Fundação Hospital de Clínicas Gaspar Vianna\", \"http://repositorio.gasparvianna.pa.gov.br/\"),\n","    (\"IFPA – Instituto Federal do Pará\", \"https://repositorio.ifpa.edu.br/\"),\n","    (\"IFRO – Instituto Federal de Rondônia\", \"https://repositorio.ifro.edu.br/\"),\n","    (\"Instituto Federal de Educação, Ciência e Tecnologia Baiano (IF Baiano)\", \"https://repositorio.ifbaiano.edu.br\"),\n","    (\"Instituto Federal de Educação, Ciência e Tecnologia da Bahia (IFBA)\", \"https://repositorio.ifba.edu.br\"),\n","    (\"Instituto Federal de Educação, Ciência e Tecnologia de Pernambuco (IFPE)\", \"https://repositorio.ifpe.edu.br\"),\n","    (\"Instituto Federal de Educação, Ciência e Tecnologia de Sergipe (IFS)\", \"https://repositorio.ifs.edu.br/biblioteca/\"),\n","    (\"Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE)\", \"https://repositorio.ifce.edu.br/\"),\n","    (\"Instituto Federal do Piauí (IFPI)\", \"http://bia.ifpi.edu.br:8080/\"),\n","    (\"Instituto Federal do Rio Grande do Norte (IFRN)\", \"https://memoria.ifrn.edu.br/\"),\n","    (\"Instituto Federal do Sertão Pernambucano (IF Sertão PE)\", \"https://releia.ifsertao-pe.edu.br/\"),\n","    (\"Universidade de Pernambuco (UPE)\", \"https://repositorio.ufpe.br/\"),\n","    (\"Universidade do Estado da Bahia (UNEB)\", \"https://saberaberto.uneb.br/\"),\n","    (\"Universidade do Estado do Rio Grande do Norte (UERN)\", \"https://repositorio.apps.uern.br/\"),\n","    (\"Universidade Estadual da Paraíba (UEPB)\", \"https://repositorio.uepb.edu.br/\"),\n","    (\"Universidade Estadual de Feira de Santana (UEFS)\", \"http://tede2.uefs.br:8080/\"),\n","    (\"Fundação Universidade Estadual do Piauí (UEPI)\", \"https://repositorio.uespi.br/\"),\n","    (\"Universidade Estadual do Maranhão (UEMA)\", \"https://repositorio.uema.br/\"),\n","    (\"Universidade Federal da Bahia (UFBA)\", \"https://repositorio.ufba.br/\"),\n","    (\"Universidade Federal da Paraíba (UFPB)\", \"https://repositorio.ufpb.br/\"),\n","    (\"Universidade Federal de Alagoas (UFAL)\", \"https://www.repositorio.ufal.br/\"),\n","    (\"Universidade Federal de Campina Grande (UFCG)\", \"https://dspace.sti.ufcg.edu.br/\"),\n","    (\"Universidade Federal de Pernambuco (UFPE)\", \"https://repositorio.ufpe.br/\"),\n","    (\"Universidade Federal de Sergipe (UFS)\", \"https://ri.ufs.br/\"),\n","    (\"Universidade Federal do Agreste de Pernambuco (UFAPE)\", \"https://logos.ufape.edu.br/\"),\n","    (\"Universidade Federal do Cariri (UFCA)\", \"https://repositorio.ufca.edu.br/\"),\n","    (\"Universidade Federal do Ceará (UFC)\", \"https://repositorio.ufc.br/\"),\n","    (\"Universidade Federal do Maranhão (UFMA)\", \"https://repositorio.ufma.br/\"),\n","    (\"Universidade Federal do Oeste da Bahia (UFOB)\", \"https://repositorio.ufob.edu.br/\"),\n","    (\"Universidade Federal do Piauí (UFPI)\", \"http://repositorio.ufpi.br:8080/\"),\n","    (\"Universidade Federal do Recôncavo da Bahia (UFRB)\", \"https://ri.ufrb.edu.br/\"),\n","    (\"Universidade Federal do Rio Grande do Norte (UFRN)\", \"https://repositorio.ufrn.br/\"),\n","    (\"Universidade Federal do Vale do São Francisco (UNIVASF)\", \"https://repositorio.univasf.edu.br/\"),\n","    (\"Universidade Federal Rural de Pernambuco (UFRPE)\", \"https://arandu.ufrpe.br/\"),\n","    (\"Universidade Federal Rural do Semi-Árido (UFERSA)\", \"https://repositorio.ufersa.edu.br/\"),\n","    (\"Instituto Brasileiro de Informação em Ciência e Tecnologia (Ibict)\", \"https://ridi.ibict.br/\"),\n","    (\"Universidade de Brasília (UnB)\", \"https://repositorio.unb.br/\"),\n","    (\"Universidade Federal de Mato Grosso (UFMT)\", \"https://ri.ufmt.br/\"),\n","    (\"Universidade Federal da Grande Dourados (UFGD)\", \"https://repositorio.ufgd.edu.br/\"),\n","    (\"Universidade Federal de Mato Grosso do Sul (UFMS)\", \"https://repositorio.ufms.br/\"),\n","    (\"Universidade Federal do Goiás (UFG)\", \"https://repositorio.bc.ufg.br/\"),\n","    (\"Universidade Estadual de Goiás (UEG)\", \"https://repositorio.ueg.br/\"),\n","    (\"Instituto Federal de Brasília (IFB)\", \"https://repositorio.ifb.edu.br/\"),\n","    (\"Instituto Federal Goiano (IF Goiano)\", \"https://repositorio.ifgoiano.edu.br/\"),\n","    (\"Instituto Federal de Goiás (IFGoiás)\", \"https://repositorio.ifg.edu.br/\"),\n","    (\"Universidade Federal de Catalão (UFCAT)\", \"https://repositorio.ufcat.edu.br/\"),\n","    (\"Universidade Federal de Jataí (UFJ)\", \"https://sophia.ufj.edu.br/TerminalWebRI\"),\n","    (\"Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira (INEP)\", \"https://riep.inep.gov.br/\"),\n","    (\"Fundação Nacional de Saúde (FUNASA)\", \"https://repositorio.funasa.gov.br/\"),\n","    (\"Universidade Estadual de Ponta Grossa\", \"https://tede2.uepg.br/\"),\n","    (\"Universidade Estadual do Centro – Oeste\", \"https://tede.unicentro.br/jspui/\"),\n","    (\"Universidade Estadual do Oeste do Paraná\", \"https://tede.unioeste.br/\"),\n","    (\"Universidade Tuiuti do Paraná\", \"https://tede.utp.br/jspui/\"),\n","    (\"Universidade Federal de Santa Maria\", \"https://repositorio.ufsm.br/\"),\n","    (\"Pontifícia Universidade Católica do Rio Grande do Sul\", \"https://repositorio.pucrs.br/\"),\n","    (\"Instituto Federal de Educação Ciência e Tecnologia Farroupilha\", \"https://repositorio.ifrs.edu.br/\"),\n","    (\"Universidade Federal da Fronteira Sul\", \"https://rd.uffs.edu.br/\"),\n","    (\"Universidade Federal do Paraná\", \"https://acervodigital.ufpr.br\"),\n","    (\"Universidade Cesumar – Unicesumar\", \"https://rdu.unicesumar.edu.br/\"),\n","    (\"Universidade de Caxias do Sul\", \"https://repositorio.ucs.br/\"),\n","    (\"Universidade do Estado de Santa Catarina\", \"https://repositorio.udesc.br/\"),\n","    (\"Universidade Estadual de Londrina\", \"https://repositorio.uel.br/\"),\n","    (\"Universidade Estadual do Norte do Paraná\", \"https://repositorio.uenp.edu.br/\"),\n","    (\"Universidade Federal de Pelotas\", \"https://repositorio.ufpel.edu.br/\"),\n","    (\"Universidade do Extremo Sul Catarinense\", \"http://repositorio.unesc.net/\"),\n","    (\"Universidade Regional do Noroeste do Estado do Rio Grande do Sul\", \"https://bibliodigital.unijui.edu.br\"),\n","    (\"Universidade Federal da Integração Latino-Americana\", \"https://dspace.unila.edu.br\"),\n","    (\"Universidade Federal do Pampa\", \"https://repositorio.unipampa.edu.br/\"),\n","    (\"Universidade do Vale do Rio dos Sinos\", \"https://repositorio.jesuita.org.br/\"),\n","    (\"Universidade do Sul de Santa Catarina\", \"https://repositorio.animaeducacao.com.br/\"),\n","    (\"Universidade do Vale do Taquari\", \"https://www.univates.br/bdu\"),\n","    (\"Universidade Estadual de Maringá\", \"http://repositorio.uem.br:8080/jspui/\"),\n","    (\"Universidade Federal de Santa Catarina\", \"https://repositorio.ufsc.br/\"),\n","    (\"Universidade Federal do Rio Grande\", \"https://repositorio.furg.br/\"),\n","    (\"Universidade Tecnológica Federal do Paraná\", \"https://repositorio.utfpr.edu.br/\"),\n","    (\"Universidade de Passo Fundo\", \"https://repositorio.upf.br/\"),\n","    (\"Universidade La Salle\", \"https://repositorio.unilasalle.edu.br/\"),\n","    (\"Universidade Franciscana\", \"https://www.ufn.edu.br/site/biblioteca/repositorio-institucional-ufn\"),\n","    (\"Instituto Federal de Educação Ciência e Tecnologia do Rio Grande do Sul (IFRS)\", \"https://repositorio.ifrs.edu.br/\"),\n","    (\"Universidade Federal do Rio Grande do Sul\", \"https://lume.ufrgs.br/\"),\n","    (\"BUTANTAN – Instituto Butantan\", \"https://repositorio.butantan.gov.br/\"),\n","    (\"FCRB – Fundação Casa de Rui Barbosa\", \"https://rubi.casaruibarbosa.gov.br/\"),\n","    (\"FESPSP – Fundação Escola de Sociologia e Política de São Paulo\", \"https://repositorio.fespsp.org.br/\"),\n","    (\"FGV – Fundação Getúlio Vargas\", \"https://repositorio.fgv.br/\"),\n","    (\"FIOCRUZ – Fundação Oswaldo Cruz\", \"https://arca.fiocruz.br/\"),\n","    (\"FJP – Fundação João Pinheiro\", \"https://repositorio.fjp.mg.gov.br/\"),\n","    (\"Fundação Técnico-Educacional Souza Marques\", \"https://rism.souzamarques.br/\"),\n","    (\"IBGE – Instituto Brasileiro de Geografia e Estatística\", \"https://biblioteca.ibge.gov.br/\"),\n","    (\"IBICT – Instituto Brasileiro de Informação em Ciência e Tecnologia\", \"https://repositorio.ibict.br/\"),\n","    (\"IFES – Instituto Federal do Espírito Santo\", \"https://repositorio.ifes.edu.br\"),\n","    (\"IFMG – Instituto Federal de Minas Gerais\", \"https://repositorio.ifmg.edu.br/\"),\n","    (\"IFRJ – Instituto Federal do Rio de Janeiro\", \"https://repositorio.ifrj.edu.br/\"),\n","    (\"IFSP – Instituto Federal de Educação, Ciência e Tecnologia de São Paulo\", \"https://repositorio.ifsp.edu.br/\"),\n","    (\"INCA – Instituto Nacional do Câncer\", \"https://ninho.inca.gov.br/\"),\n","    (\"INCAPER – Instituto Capixaba de Pesquisa, Assistência Técnica e Extensão Rural\", \"https://biblioteca.incaper.es.gov.br/digital/\"),\n","    (\"INSPER – Instituto de Ensino e Pesquisa\", \"https://repositorio.insper.edu.br/\"),\n","    (\"IPEA – Instituto de Pesquisa Econômica Aplicada\", \"https://repositorio.ipea.gov.br/\"),\n","    (\"IPEN – Instituto de Pesquisas Energéticas e Nucleares\", \"https://repositorio.ipen.br/\"),\n","    (\"PUC – Campinas\", \"https://repositorio.sis.puc-campinas.edu.br/\"),\n","    (\"UEMG – Universidade do Estado de Minas Gerais\", \"http://www.repositorio.uemg.br/\"),\n","    (\"UERJ – Universidade do Estado do Rio de Janeiro\", \"https://www.bdtd.uerj.br:8443/\"),\n","    (\"UFES – Universidade Federal do Espírito Santo\", \"https://repositorio.ufes.br/\"),\n","    (\"UFF – Universidade Federal Fluminense\", \"https://app.uff.br/riuff/\"),\n","    (\"UFJF – Universidade Federal de Juiz de Fora\", \"https://repositorio.ufjf.br/\"),\n","    (\"UFLA – Universidade Federal de Lavras\", \"https://repositorio.ufla.br/\"),\n","    (\"UFMG – Universidade Federal de Minas Gerais\", \"https://repositorio.ufmg.br/\"),\n","    (\"UFOP – Universidade Federal de Ouro Preto\", \"https://www.repositorio.ufop.br/\"),\n","    (\"UFRJ – Universidade Federal do Rio de Janeiro\", \"https://pantheon.ufrj.br/\"),\n","    (\"UFRRJ – Universidade Federal Rural do Rio de Janeiro\", \"https://rima.ufrrj.br/\"),\n","    (\"UFSCAR – Universidade Federal de São Carlos\", \"https://repositorio.ufscar.br/\"),\n","    (\"UFSJ – Universidade Federal de São João del-Rei\", \"https://repositorio.ufsj.edu.br/\"),\n","    (\"UFU – Universidade Federal de Uberlândia\", \"https://repositorio.ufu.br/\"),\n","    (\"UFV – Universidade Federal de Viçosa\", \"https://locus.ufv.br/\"),\n","    (\"UFVJM – Universidade Federal dos Vales do Jequitinhonha e Mucuri\", \"https://repositorio.ufvjm.edu.br/\"),\n","    (\"UMC – Universidade de Mogi das Cruzes\", \"https://repositorio.umc.br/\"),\n","    (\"UNESP – Universidade Estadual Paulista\", \"https://repositorio.unesp.br/\"),\n","    (\"UNICAMP – Universidade Estadual de Campinas\", \"https://repositorio.unicamp.br/\"),\n","    (\"UNIFAL-MG – Universidade Federal de Alfenas\", \"https://repositorio.unifal-mg.edu.br/\"),\n","    (\"UNIFEI – Universidade Federal de Itajubá\", \"https://repositorio.unifei.edu.br\"),\n","    (\"UNIFESP – Universidade Federal de São Paulo\", \"https://repositorio.unifesp.br/\"),\n","    (\"UNIRIO – Universidade Federal do Estado do Rio de Janeiro\", \"http://www.repositorio-bc.unirio.br:8080/xmlui/\"),\n","    (\"UNIVALE – Universidade Vale do Rio Doce\", \"https://univale.br/trabalho-de-conclusao-de-curso/\"),\n","    (\"USP – Universidade de São Paulo\", \"https://www.teses.usp.br/\"),\n","    (\"UVA – Universidade Veiga de Almeida\", \"https://ojs.uva.br/index.php/bancodeteses\"),\n","    (\"UVV – Universidade de Vila Velha\", \"https://repositorio.uvv.br/\")\n","]"],"metadata":{"id":"n1aOFrJhcnxj"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":[],"metadata":{"id":"1eyrzxfmnpeN"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["def detectar_software_versao(url):\n","\n","    headers = {\n","         \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) \"\n","                 \"AppleWebKit/537.36 (KHTML, like Gecko) \"\n","                 \"Chrome/120.0.0.0 Safari/537.36\",\n","          \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\",\n","          \"Accept-Language\": \"pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7\",\n","          \"Connection\": \"keep-alive\"\n","    }\n","\n","    try:\n","        response = requests.get(url, headers=headers, timeout=15)\n","        status = response.status_code\n","\n","        if status != 200:\n","            return (\"Erro\", f\"HTTP {status}\")\n","\n","        html = response.text.lower()\n","        soup = BeautifulSoup(response.text, \"html.parser\")\n","\n","        # 1. Procurar meta tag Generator\n","        meta = soup.find(\"meta\", attrs={\"name\": re.compile(\"generator\", re.I)})\n","        if meta and \"content\" in meta.attrs:\n","            content = meta[\"content\"]\n","\n","            if \"dspace\" in content.lower():\n","                # Extrair versão\n","                match = re.search(r\"dspace\\s*([\\d\\.]+(?:-snapshot)?)\", content.lower())\n","                versao = match.group(1) if match else \"Não identificada\"\n","                return (\"DSpace\", versao)\n","\n","        # 2. Inferência DSpace 7+\n","        if \"dspace-angular\" in html or \"/server/\" in html:\n","            return (\"DSpace\", \"7.x ou superior (inferido)\")\n","\n","        # 3. Inferência DSpace 6 ou anterior\n","        if any(x in url.lower() for x in [\"xmlui\", \"jspui\", \"handle\"]):\n","            return (\"DSpace\", \"6.x ou anterior (inferido)\")\n","\n","        # Não é DSpace\n","        return (\"Não é DSpace\", \"-\")\n","\n","    except requests.exceptions.RequestException as e:\n","        return (\"Erro\", str(e))"],"metadata":{"id":"VJe-DvJbbhw-"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["dados = []\n","\n","# Loop com tqdm\n","for nome, url in tqdm(repositorios_validados, desc=\"Verificando software e versão dos RI\"):\n","    software, versao = detectar_software_versao(url)\n","\n","    dados.append({\n","        \"Instituição\": nome,\n","        \"URL_do_RI\": url,\n","        \"Software\": software,\n","        \"Versão\": versao\n","    })\n","\n","# DataFrame\n","df = pd.DataFrame(dados)\n","\n","# Salvar CSV\n","df.to_csv(\"/content/drive/MyDrive/Repositorios-e-ODS/identificacao_softwares_repositorios-RESULTADO.csv\", index=False)\n","print(\"Arquivo 'identificacao_softwares_repositorios-RESULTADO.csv' salvo com sucesso!\")"],"metadata":{"id":"rjBPT8Ldcsh3"},"execution_count":null,"outputs":[]}]}