This commit is contained in:
@@ -62,9 +62,9 @@ def setup_routes(app: FastAPI) -> None:
|
||||
background_tasks.add_task(start_pars_all_istochnik, str(url.url), url.promt)
|
||||
return {"message": "Процесс парсинга любого источника запущен"}
|
||||
|
||||
@app.get("/get_tasks_offset", summary="Метод получения задач парсинга")
|
||||
async def get_tasks_offset(limit: int = Query(10, gt=0), offset: int = Query(0, ge=0)):
|
||||
return wp.get_tasks_offset(limit, offset)
|
||||
# @app.get("/get_tasks_offset", summary="Метод получения задач парсинга")
|
||||
# async def get_tasks_offset(limit: int = Query(10, gt=0), offset: int = Query(0, ge=0)):
|
||||
# return wp.get_tasks_offset(limit, offset)
|
||||
|
||||
# ==================== Настройки ====================
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ class UniversalParser(BaseParser):
|
||||
"""
|
||||
print(f"Начало парсинга: {self.url} с промтом: {self.promt}")
|
||||
self.start_task(self.url)
|
||||
|
||||
num = 0
|
||||
try:
|
||||
response = requests.get(self.url)
|
||||
# print(response.text)
|
||||
@@ -85,6 +85,7 @@ class UniversalParser(BaseParser):
|
||||
print("URL:", abs_url)
|
||||
|
||||
if len(article.text) > 200 and article.publish_date:
|
||||
num += 1
|
||||
# Если дата публикации отсутствует - используем текущую
|
||||
if article.publish_date:
|
||||
time_text = article.publish_date.strftime("%Y/%m/%d %H:%M:%S")
|
||||
@@ -109,7 +110,8 @@ class UniversalParser(BaseParser):
|
||||
print(f"Ошибка при обработке статьи {abs_url}: {e}")
|
||||
logger.info(f"Ошибка при обработке статьи {abs_url}: {e}")
|
||||
continue
|
||||
|
||||
if num:
|
||||
wp.update_source_status(url)
|
||||
self.complete_task()
|
||||
|
||||
|
||||
|
||||
@@ -324,42 +324,75 @@ def create_table_add_sourse():
|
||||
cur.execute("""
|
||||
CREATE TABLE IF NOT EXISTS sourse (
|
||||
url TEXT PRIMARY KEY,
|
||||
promt TEXT
|
||||
promt TEXT,
|
||||
status BOOLEAN DEFAULT FALSE
|
||||
);
|
||||
""")
|
||||
print("Таблица sourse создана или уже существует")
|
||||
finally:
|
||||
pass
|
||||
|
||||
def add_sources(url: str, promt: str):
|
||||
|
||||
def add_sources(url: str, promt: str, status: bool = False):
|
||||
conn = get_connection()
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
cur.execute("""
|
||||
INSERT INTO sourse (url, promt)
|
||||
VALUES (%s, %s)
|
||||
INSERT INTO sourse (url, promt, status)
|
||||
VALUES (%s, %s, %s)
|
||||
ON CONFLICT (url) DO UPDATE SET
|
||||
promt = EXCLUDED.promt
|
||||
""", (url, promt))
|
||||
promt = EXCLUDED.promt,
|
||||
status = EXCLUDED.status
|
||||
""", (url, promt, status))
|
||||
conn.commit()
|
||||
finally:
|
||||
pass
|
||||
|
||||
|
||||
def get_all_sources(category: str):
|
||||
"""Возвращает все записи из таблицы sourse"""
|
||||
"""Возвращает все записи из таблицы sourse. Сначала показываются записи со status=false"""
|
||||
conn = get_connection()
|
||||
try:
|
||||
with conn.cursor(cursor_factory=RealDictCursor) as cur:
|
||||
if category == "all":
|
||||
cur.execute("SELECT * FROM sourse")
|
||||
cur.execute("""
|
||||
SELECT * FROM sourse
|
||||
ORDER BY status ASC, url ASC
|
||||
""")
|
||||
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()
|
||||
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}
|
||||
except Exception as e:
|
||||
print(f"Ошибка при получении источников: {e}")
|
||||
return {"error": str(e), "sources": []}
|
||||
finally:
|
||||
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):
|
||||
"""Удаляет источник по URL из таблицы sourse"""
|
||||
conn = get_connection()
|
||||
|
||||
Reference in New Issue
Block a user