добавил статус
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-05-05 21:24:45 +10:00
parent 46350c1c09
commit ef453f661a
3 changed files with 50 additions and 15 deletions

View File

@@ -62,9 +62,9 @@ def setup_routes(app: FastAPI) -> None:
background_tasks.add_task(start_pars_all_istochnik, str(url.url), url.promt) background_tasks.add_task(start_pars_all_istochnik, str(url.url), url.promt)
return {"message": "Процесс парсинга любого источника запущен"} return {"message": "Процесс парсинга любого источника запущен"}
@app.get("/get_tasks_offset", summary="Метод получения задач парсинга") # @app.get("/get_tasks_offset", summary="Метод получения задач парсинга")
async def get_tasks_offset(limit: int = Query(10, gt=0), offset: int = Query(0, ge=0)): # async def get_tasks_offset(limit: int = Query(10, gt=0), offset: int = Query(0, ge=0)):
return wp.get_tasks_offset(limit, offset) # return wp.get_tasks_offset(limit, offset)
# ==================== Настройки ==================== # ==================== Настройки ====================

View File

@@ -46,7 +46,7 @@ class UniversalParser(BaseParser):
""" """
print(f"Начало парсинга: {self.url} с промтом: {self.promt}") print(f"Начало парсинга: {self.url} с промтом: {self.promt}")
self.start_task(self.url) self.start_task(self.url)
num = 0
try: try:
response = requests.get(self.url) response = requests.get(self.url)
# print(response.text) # print(response.text)
@@ -85,6 +85,7 @@ class UniversalParser(BaseParser):
print("URL:", abs_url) print("URL:", abs_url)
if len(article.text) > 200 and article.publish_date: if len(article.text) > 200 and article.publish_date:
num += 1
# Если дата публикации отсутствует - используем текущую # Если дата публикации отсутствует - используем текущую
if article.publish_date: if article.publish_date:
time_text = article.publish_date.strftime("%Y/%m/%d %H:%M:%S") time_text = article.publish_date.strftime("%Y/%m/%d %H:%M:%S")
@@ -109,7 +110,8 @@ class UniversalParser(BaseParser):
print(f"Ошибка при обработке статьи {abs_url}: {e}") print(f"Ошибка при обработке статьи {abs_url}: {e}")
logger.info(f"Ошибка при обработке статьи {abs_url}: {e}") logger.info(f"Ошибка при обработке статьи {abs_url}: {e}")
continue continue
if num:
wp.update_source_status(url)
self.complete_task() self.complete_task()

View File

@@ -324,42 +324,75 @@ def create_table_add_sourse():
cur.execute(""" cur.execute("""
CREATE TABLE IF NOT EXISTS sourse ( CREATE TABLE IF NOT EXISTS sourse (
url TEXT PRIMARY KEY, url TEXT PRIMARY KEY,
promt TEXT promt TEXT,
status BOOLEAN DEFAULT FALSE
); );
""") """)
print("Таблица sourse создана или уже существует") print("Таблица sourse создана или уже существует")
finally: finally:
pass pass
def add_sources(url: str, promt: str):
def add_sources(url: str, promt: str, status: bool = False):
conn = get_connection() conn = get_connection()
try: try:
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute(""" cur.execute("""
INSERT INTO sourse (url, promt) INSERT INTO sourse (url, promt, status)
VALUES (%s, %s) VALUES (%s, %s, %s)
ON CONFLICT (url) DO UPDATE SET ON CONFLICT (url) DO UPDATE SET
promt = EXCLUDED.promt promt = EXCLUDED.promt,
""", (url, promt)) status = EXCLUDED.status
""", (url, promt, status))
conn.commit() conn.commit()
finally: finally:
pass pass
def get_all_sources(category: str): def get_all_sources(category: str):
"""Возвращает все записи из таблицы sourse""" """Возвращает все записи из таблицы sourse. Сначала показываются записи со status=false"""
conn = get_connection() conn = get_connection()
try: try:
with conn.cursor(cursor_factory=RealDictCursor) as cur: with conn.cursor(cursor_factory=RealDictCursor) as cur:
if category == "all": if category == "all":
cur.execute("SELECT * FROM sourse") cur.execute("""
SELECT * FROM sourse
ORDER BY status ASC, url ASC
""")
else: else:
cur.execute("SELECT * FROM sourse WHERE promt = %s", (category,)) cur.execute("""
SELECT * FROM sourse
WHERE promt = %s
ORDER BY status ASC, url ASC
""", (category,))
rows = cur.fetchall() rows = cur.fetchall()
sources = [{"url": row["url"], "promt": row["promt"]} for row in rows] sources = [{"url": row["url"], "promt": row["promt"], "status": row["status"]} for row in rows]
return {"sources": sources} return {"sources": sources}
except Exception as e:
print(f"Ошибка при получении источников: {e}")
return {"error": str(e), "sources": []}
finally: finally:
pass pass
def update_source_status(url: str, status: bool = True):
"""Обновляет статус источника по URL"""
conn = get_connection()
try:
with conn.cursor() as cur:
cur.execute("""
UPDATE sourse SET status = %s WHERE url = %s
""", (status, url))
updated = cur.rowcount
conn.commit()
return {"message": f"Статус обновлён для {url}", "updated_rows": updated}
except Exception as e:
print(f"Ошибка при обновлении статуса: {e}")
return {"error": str(e), "updated_rows": 0}
finally:
pass
def delete_sources(url: str): def delete_sources(url: str):
"""Удаляет источник по URL из таблицы sourse""" """Удаляет источник по URL из таблицы sourse"""
conn = get_connection() conn = get_connection()