critico o favorable
This commit is contained in:
@ -22,6 +22,45 @@ def is_security_related(prompt):
|
||||
|
||||
return False
|
||||
|
||||
# Prueba con un ejemplo
|
||||
prompt = "La Laguna Tenerife inició la segunda vuelta de la Liga ACB defendiendo la cuarta plaza de la competición y hoy (12.00 horas), ante el Río Breogán, ese será su objetivo: ganar y seguir estando entre los cuatro primeros y vigilando a los otros tres rivales: Real Madrid, Valencia y Unicaja-, a un solo un triunfo de distancia.\nEn el partido de hoy, el conjunto aurinegro afronta un partido complicado, pues el Río Breogán viene jugando a un buen nivel. De los cuatro últimos partidos ha ganado tres -ante el Bilbao (76-71), Coruña (83-80) y Andorra (93-101)- y han caído frente al Baskonia (97-91).\nSituados en el puesto doce, el Breogán no será un rival fácil para los aurinegros que, pese a que también están jugando bien sobre todo en casa, saben que tendrán que estar al máximo nivel para poder sacar el partido adelante.\nGanar en confianza desde la defensa y jugar con equilibrio en ataque serán dos de los aspectos que deben conseguir los aurinegros en un enfrentamiento complicado, ante un rival que va hacia arriba y que sabe también las necesidades suyas para no complicarse en la zona de farolillo.\nEl entrenador del CB Canarias,Txus Vidorreta, tendrá a todos sus efectivos y, si el partido va como se espera, podrá seguir dando minutos en las rotaciones del equipo a Jaime Fernández, que ha podido entrenar.\nA dos jornadas de la disputa de la Copa del Rey en Gran Canaria, La Laguna Tenerife quiere irse preparando para esa cita con un primer enfrentamiento, en cuartos de final, contra el FC Barcelona.\nHoy será uno de esos “ensayos” importantes para saber cómo se encuentra el equipo para esa cita en la isla vecina, aunque ahora mismo el objetivo sigue estándo en la defensa de ese cuarto lugar de la Liga Endesa.\nUn desafío ante el cuadro de Luis Casimiro que necesitará igualmente del siempre entregado público insular, después de que la afición canarista confirmara desde el lunes pasado un nuevo sold out, el vigésimo primero consecutivo en partidos ACB entre el final de la campaña pasada y el vigente curso."
|
||||
print(is_security_related(prompt))
|
||||
def is_critico(prompt):
|
||||
url = "http://localhost:11434/api/generate"
|
||||
data = {
|
||||
"model": "llama3",
|
||||
"prompt": f"Does the following text critics the armed forces, security forces as Guardia Civil or Police, intelligence agencies such as CNI? Answer only with 'true' or 'false'. Topic: {prompt}",
|
||||
}
|
||||
|
||||
response = requests.post(url, json=data)
|
||||
|
||||
try:
|
||||
# Dividir la respuesta en líneas y parsear cada una
|
||||
for line in response.text.strip().split("\n"):
|
||||
json_data = json.loads(line)
|
||||
if "response" in json_data and json_data["response"].strip():
|
||||
return json_data["response"].strip().lower() == "true"
|
||||
|
||||
except json.JSONDecodeError as e:
|
||||
print("JSON Decode Error:", e)
|
||||
|
||||
return False
|
||||
|
||||
def is_favorable(prompt):
|
||||
url = "http://localhost:11434/api/generate"
|
||||
data = {
|
||||
"model": "llama3",
|
||||
"prompt": f"Does the following text favours the armed forces, security forces as Guardia Civil or Police, intelligence agencies such as CNI? Answer only with 'true' or 'false'. Topic: {prompt}",
|
||||
}
|
||||
|
||||
response = requests.post(url, json=data)
|
||||
|
||||
try:
|
||||
# Dividir la respuesta en líneas y parsear cada una
|
||||
for line in response.text.strip().split("\n"):
|
||||
json_data = json.loads(line)
|
||||
if "response" in json_data and json_data["response"].strip():
|
||||
return json_data["response"].strip().lower() == "true"
|
||||
|
||||
except json.JSONDecodeError as e:
|
||||
print("JSON Decode Error:", e)
|
||||
|
||||
return False
|
||||
|
||||
|
@ -5,7 +5,7 @@ import os
|
||||
import time
|
||||
import subprocess
|
||||
from googlenewsdecoder import gnewsdecoder
|
||||
from iacorrector import is_security_related # Importa la función desde iacorrector.py
|
||||
from iacorrector import is_security_related, is_critico, is_favorable # Importa la función desde iacorrector.py
|
||||
from datetime import datetime
|
||||
import pytz
|
||||
|
||||
@ -86,7 +86,7 @@ def search_news(query):
|
||||
articles = soup.find_all("item")
|
||||
news_list = []
|
||||
|
||||
for article in articles[:30]: # Limitar a los primeros 30 artículos
|
||||
for article in articles[:10]: # Limitar a los primeros 30 artículos
|
||||
try:
|
||||
title = article.title.get_text(strip=True)
|
||||
content = article.description.get_text(strip=True) if article.description else "Sin descripción"
|
||||
@ -95,6 +95,8 @@ def search_news(query):
|
||||
date = article.pubDate.get_text(strip=True) if article.pubDate else "Fecha no disponible"
|
||||
date_parsed = datetime.strptime(date, '%a, %d %b %Y %H:%M:%S GMT')
|
||||
date_parsed = date_parsed.replace(tzinfo=pytz.UTC)
|
||||
critico = False
|
||||
favorable = False
|
||||
|
||||
# Obtener la URL final del artículo
|
||||
final_url = get_url_from_google_news(link)
|
||||
@ -102,6 +104,9 @@ def search_news(query):
|
||||
# Obtener el autor usando autorsearcher.py
|
||||
author = get_author_from_script(final_url)
|
||||
content = get_article_content(final_url)
|
||||
critico = is_critico(content)
|
||||
favorable = is_favorable(content)
|
||||
|
||||
|
||||
# Verificar si el artículo es válido usando iacorrector
|
||||
if is_security_related(content): # Solo si el artículo es válido
|
||||
@ -111,9 +116,11 @@ def search_news(query):
|
||||
"autor": author,
|
||||
"fuente": source_info,
|
||||
"fecha": date_parsed.isoformat(),
|
||||
"link": final_url # Guardamos la URL final en lugar de la de Google News
|
||||
"link": final_url, # Guardamos la URL final en lugar de la de Google News,
|
||||
"critico": critico,
|
||||
"favorable":favorable
|
||||
}
|
||||
news_list.append(news_item)
|
||||
insertar_datos(news_item)
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error al procesar un artículo para '{query}': {e}")
|
||||
@ -130,9 +137,6 @@ def insertar_datos(news_item):
|
||||
else:
|
||||
print(f"Error al insertar '{news_item['titulo']}':", response.status_code, response.json())
|
||||
|
||||
|
||||
|
||||
|
||||
def search_from_keywords_file():
|
||||
"""
|
||||
Lee palabras clave del archivo 'keywords.txt' y realiza búsquedas para cada una.
|
||||
@ -148,14 +152,9 @@ def search_from_keywords_file():
|
||||
|
||||
for keyword in keywords:
|
||||
print(f"\nBuscando noticias sobre: {keyword}")
|
||||
news_list = search_news(keyword)
|
||||
all_news.extend(news_list) # Añadir las noticias encontradas para cada palabra clave
|
||||
search_news(keyword)
|
||||
time.sleep(2) # Pausa para evitar bloqueos por demasiadas solicitudes en poco tiempo
|
||||
|
||||
# Guardar todas las noticias en un archivo JSON
|
||||
for news in all_news:
|
||||
insertar_datos(news)
|
||||
|
||||
except FileNotFoundError:
|
||||
print("No se encontró el archivo 'keywords.txt'.")
|
||||
except Exception as e:
|
||||
|
Reference in New Issue
Block a user