GalvaoFilho commited on
Commit
47cdee9
·
verified ·
1 Parent(s): d0fd109

Update wikipedia.py

Browse files
Files changed (1) hide show
  1. wikipedia.py +74 -74
wikipedia.py CHANGED
@@ -1,75 +1,75 @@
1
- import requests
2
-
3
- def pesquisar_wikipedia(consultas, num_resultados=3):
4
- """
5
- Pesquisa artigos na Wikipedia em português para uma lista de tópicos, garantindo pelo menos um item por tópico.
6
- Args:
7
- consultas (list or str): Um tópico de pesquisa ou lista de tópicos.
8
- num_resultados (int): Número máximo de artigos a retornar por tópico.
9
- Returns:
10
- list: Lista de dicionários com título, URL e trecho do artigo para cada tópico.
11
- """
12
- print(f"Pesquisando na Wikipedia: {consultas}")
13
-
14
- # Se consultas for uma string, converte para lista com um item
15
- if isinstance(consultas, str):
16
- consultas = [consultas]
17
-
18
- # Validação
19
- if not isinstance(consultas, list):
20
- print("Erro: consultas deve ser uma string ou lista de strings.")
21
- return []
22
- if not all(isinstance(c, str) for c in consultas):
23
- print("Erro: todos os itens de consultas devem ser strings.")
24
- return []
25
-
26
- try:
27
- url = "https://pt.wikipedia.org/w/api.php" # URL correta da API
28
- todos_artigos = []
29
-
30
- for consulta in consultas:
31
- print(f"Buscando: {consulta}")
32
- params = {
33
- "action": "query",
34
- "format": "json",
35
- "list": "search",
36
- "srsearch": consulta,
37
- "srlimit": num_resultados,
38
- "utf8": 1
39
- }
40
- response = requests.get(url, params=params)
41
- response.raise_for_status() # Levanta exceção para erros HTTP
42
- data = response.json()
43
- results = data.get("query", {}).get("search", [])
44
-
45
- artigos = []
46
- for item in results:
47
- title = item["title"]
48
- snippet = item["snippet"].replace("<span class=\"searchmatch\">", "").replace("</span>", "")
49
- # URL do artigo, não da API
50
- article_url = f"https://pt.wikipedia.org/wiki/{title.replace(' ', '_')}"
51
- artigos.append({
52
- "Tópico": consulta,
53
- "Título": title,
54
- "URL": article_url,
55
- "Trecho": snippet
56
- })
57
-
58
- # Garantir pelo menos um item por tópico
59
- if not artigos:
60
- artigos.append({
61
- "Tópico": consulta,
62
- "Título": "Nenhum artigo encontrado",
63
- "URL": "",
64
- "Trecho": "Não foram encontrados artigos relevantes para este tópico."
65
- })
66
-
67
- # Adicionar pelo menos o primeiro item (ou mais, até num_resultados)
68
- todos_artigos.extend(artigos[:max(1, num_resultados)])
69
-
70
- print(f"Artigos encontrados: {todos_artigos}")
71
- return todos_artigos
72
-
73
- except Exception as e:
74
- print(f"Erro ao buscar na Wikipedia: {e}")
75
  return []
 
1
+ import requests
2
+
3
+ def pesquisar_wikipedia(consultas, num_resultados=3):
4
+ """
5
+ Pesquisa artigos na Wikipedia em português para uma lista de tópicos, garantindo pelo menos um item por tópico.
6
+ Args:
7
+ consultas (list or str): Um tópico de pesquisa ou lista de tópicos.
8
+ num_resultados (int): Número máximo de artigos a retornar por tópico.
9
+ Returns:
10
+ list: Lista de dicionários com título, URL e trecho do artigo para cada tópico.
11
+ """
12
+ print(f"Pesquisando na Wikipedia: {consultas}")
13
+
14
+ # Se consultas for uma string, converte para lista com um item
15
+ if isinstance(consultas, str):
16
+ consultas = [consultas]
17
+
18
+ # Validação
19
+ if not isinstance(consultas, list):
20
+ print("Erro: consultas deve ser uma string ou lista de strings.")
21
+ return []
22
+ if not all(isinstance(c, str) for c in consultas):
23
+ print("Erro: todos os itens de consultas devem ser strings.")
24
+ return []
25
+
26
+ try:
27
+ url = "https://pt.wikipedia.org/w/api.php" # URL correta da API
28
+ todos_artigos = []
29
+
30
+ for consulta in consultas:
31
+ print(f"Buscando: {consulta}")
32
+ params = {
33
+ "action": "query",
34
+ "format": "json",
35
+ "list": "search",
36
+ "srsearch": consulta,
37
+ "srlimit": num_resultados,
38
+ "utf8": 1
39
+ }
40
+ response = requests.get(url, params=params)
41
+ response.raise_for_status() # Levanta exceção para erros HTTP
42
+ data = response.json()
43
+ results = data.get("query", {}).get("search", [])
44
+
45
+ artigos = []
46
+ for item in results:
47
+ title = item["title"]
48
+ snippet = item["snippet"].replace("<span class=\"searchmatch\">", "").replace("</span>", "")
49
+ # URL do artigo, não da API
50
+ article_url = f"https://pt.wikipedia.org/wiki/{title.replace(' ', '_')}"
51
+ artigos.append({
52
+ "Tópico": consulta,
53
+ "Título": title,
54
+ "URL": article_url,
55
+ "Trecho": snippet
56
+ })
57
+
58
+ # Garantir pelo menos um item por tópico
59
+ if not artigos:
60
+ artigos.append({
61
+ "Tópico": consulta,
62
+ "Título": "Nenhum artigo encontrado",
63
+ "URL": "",
64
+ "Trecho": "Não foram encontrados artigos relevantes para este tópico."
65
+ })
66
+
67
+ # Adicionar pelo menos o primeiro item (ou mais, até num_resultados)
68
+ todos_artigos.extend(artigos[:max(1, num_resultados)])
69
+
70
+ print(f"Artigos encontrados: {todos_artigos}")
71
+ return todos_artigos
72
+
73
+ except Exception as e:
74
+ print(f"Erro ao buscar na Wikipedia: {e}")
75
  return []