From 51d1c403f53f2b3942967ced0d8ae0bd280e0c50 Mon Sep 17 00:00:00 2001 From: konjacpotato Date: Sun, 15 Feb 2026 12:37:48 +0800 Subject: [PATCH] seek: douban group --- .env | 2 +- config/__pycache__/__init__.cpython-312.pyc | Bin 129 -> 207 bytes peter.py | 14 ++- seek/douban_com/douban_group_seek.py | 98 ++++++++++++++++++ task/__init__.py | 2 + task/__pycache__/__init__.cpython-312.pyc | Bin 127 -> 292 bytes task/__pycache__/manager_task.cpython-312.pyc | Bin 4567 -> 4801 bytes task/hot_topic/douban.py | 15 +++ task/manager_task.py | 18 ++-- utils/__pycache__/__init__.cpython-312.pyc | Bin 128 -> 201 bytes 10 files changed, 131 insertions(+), 18 deletions(-) create mode 100644 seek/douban_com/douban_group_seek.py create mode 100644 task/__init__.py create mode 100644 task/hot_topic/douban.py diff --git a/.env b/.env index e7046d4..d5c246a 100644 --- a/.env +++ b/.env @@ -7,7 +7,7 @@ LOG_LEVEL=DEBUG LOG_TYPE=console # 数据库配置 -DB_HOST=192.168.1.200 +DB_HOST= 47.119.128.161 # 192.168.1.200 DB_PORT=19732 DB_USER=postgres DB_PASS=postgres diff --git a/config/__pycache__/__init__.cpython-312.pyc b/config/__pycache__/__init__.cpython-312.pyc index bbef6004ce0fb1ef7cd62fec2ec9b81b021b1400..392cd15b8cd27725c894eb763a1d51acce1e53b2 100644 GIT binary patch literal 207 zcmX@j%ge<81h;}FWU2t^#~=<2FhLog1%Qm{3@HpLj5!Rsj8Tk?43$ip%r8OGnvAzN zic?EUGV{`l{WO_w@h9i!rDdk;!NiJ~fr?f#dDlwDkqn4GGgoS%}aUyxdoS_EW*Owo^z&&MesX?Fs(wLgNotWk$O`@V_{_Y_lK6PNg34PQHo5sJr8%i~MchD>7=gGL V#Q4C>$jEq?LF*oaTM;La4*)cWRBZqN literal 127 zcmX@j%ge<81Xc^f(n0iN5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!l8dm4NzPA6jVVYi zNiB*gNi5EeiI30B%PfhH*DI*}#bJ}1pHiBWYFESxRL%&*#UREUuauZ7{4dU&Amx(YAiR&mb6W55@x!{oo14`MW^ekNxFuOZMwPq@h-W|nxwhq z+>~y1;t-JzAJ%Zd3fn`+V6G@EFd2eAboer+$cfliVjq0ylMKwLSa2_%lTgr=?r_id zo%5aF`JL~6-}%mp?_R+AgVkzgNc%HV8~eUyeasolYN4P&B!Gx<05HrPgRX*uXa<~f zx~m+8(pKaf(%BYGS>*CU@(n(E$np9FNML9R2R^_TH zO{uV?O~^S#%Bgupnoz0=l&Z2;lF%u=-)txJ4$`%c(I@&h-t4+!xonxeFk8aUh3iQi z9>n6|C4T64r)Pek;S9|PtNec;FV;i#zHg@QNAamMIFZ7sJQkHDe)JA&5I~etH~DO~ zB9ANCY)}uK!~jiH(12)qBD`KN6p3yM%6TO>Syi&sHRwVkYz#QiXRKehhehA9C&AmO z+qhw=Tr}oE>3Kr&781FHtLP=0pJ;i*MSZa!<+-5m0fBRE_?N`ye*#FR#a*b*^@1S! ziF1S9=nw9zr%_(xcLG1U%ljbyRy~{O?fKA6QvmEiKbnHzCG@wc|7rgAnS7W=_7;}JbLgY4 z>;A2<*nM#&o^Hg`IF`ZQ?6UYC8hmEohuZ*Cjd%*j(%73>7PD)jYc5$!;=t>R&P5aU zC6>kEHJfA3QnP%n%pd+Dc|D1JVH}R(p7<}e#INqY6?drN4&BmjPcKZbNJ9O7G>~e>8#o`lsmn$-P4>~vh1X)lif|kf7X4TL&b79G_6Ve)m$B77b!vpA=tu(?; zR>#U3qz?u>NJNtzCGoGqPTA$;a#=oGR-lWn)1x7!USK**?R@dkaWy|#R$hZClzBFA zVn@qh0)|Hp9u&a5uf@E~=qui#n?W*s z3ZsTKB!G$cLq9*F?wdH8nkrT9xgO`E!^YiV{R?1mNNFlvWq#$Llc0Tfdb zd0^V~(t4_7%A(wUN^uP4MK^q7{#eKgB_4>R!e3@*PlW=^4Zuo?pWR2P|1)L-@Q={x zll2dF110%)DjgeHF?WbkTlFA}ihsN(7JuQgDr19BEIrm~nxVasVFV^E@jWOPMfEWh ze^>WGm*j1Ep!=HKlzsP}SEM$0YH5QXB_}xOx*{p>S>TQ2MBX*k+KWux^d$B{L=NvR z=jB=Cg6Hx$>V^}x6R>EDz=q8m@K9vUkiAqhGWm*4r9WfGX+0c1%*+u`?eWfr*iycb z$u^WO;xjbXM`tkuH|+PjT{i>E!X5jHo%jxr14HCwk_?TJv5Ul&-c%=HvSr1;7ZRnc#5G=3Cm^64{``MHiS<~5M3cldR#nHhRVVQrEYFnB5!dmm8r@dfmb9Bg zx8gs?NoRP$KHts*-qd199!1mu60Ke((Lx`>H6@LKcSy zMil;$VjOXU)iH3I6&OUANmOL-yxVYdnai0O4L2KZlm-e6!8&uEdm`8uu5Su%+)lUn zOKO6x_$Vwna^o%ZzkNh!`rUbKW{?OqHRCkZRmaV~pUUL(nM-*MyIGuF0<$E)aZS#~ zJBZ=ALiTE2i{SGx+!{#u>VgFcFFHh&M$0{Qj`{MzrmvjbY3%DACKO(}w!=|ZZyiJ^ ZiHIk(!!=g*(*}e*r0c_fIqDmk-U4yBE71S| diff --git a/task/hot_topic/douban.py b/task/hot_topic/douban.py new file mode 100644 index 0000000..33a5b3b --- /dev/null +++ b/task/hot_topic/douban.py @@ -0,0 +1,15 @@ +from task.manager_task import execute_task +from seek.douban_com.douban_group_seek import DoubanGroupSeek +from utils import logger + + +def spider_task(): + logger.info(f"Douban hot topic spider task start execute......") + # 社畜买房共进会 小组 ID 为 677158 + douban_group_seek = DoubanGroupSeek(group_id=677158) + douban_group_seek.seek() + logger.info(f"Douban hot topic spider task end execute......") + + +if __name__ == '__main__': + execute_task(spider_task) \ No newline at end of file diff --git a/task/manager_task.py b/task/manager_task.py index e9fb398..d13a5bb 100644 --- a/task/manager_task.py +++ b/task/manager_task.py @@ -6,7 +6,7 @@ from apscheduler.schedulers.blocking import BlockingScheduler from config import config from database.database import get_session from database.tscheduler.crud import get_tasks_by_executor -from log.log_manager import log +from utils import logger """ 这是一个特殊的任务,负责管理任务,命名为管理者任务。 @@ -24,10 +24,10 @@ def log_task_execution(task_name: str, start_time: float, end_time: float = None start_time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(start_time)) end_time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(end_time)) if end_time is None: - log(f"{task_name} start execute at {start_time_str}") + logger.info(f"{task_name} start execute at {start_time_str}") else: elapsed_time = end_time - start_time - log(f"{task_name} end execute at {end_time_str}, use time {elapsed_time:.2f} seconds") + logger.info(f"{task_name} end execute at {end_time_str}, use time {elapsed_time:.2f} seconds") def execute_task(task: callable): @@ -66,7 +66,7 @@ def load_tasks(scheduler: BlockingScheduler): replace_existing=True, misfire_grace_time=interval_seconds ) - log(f"Task {task.task_name} added with interval {interval_seconds} seconds") + logger.info(f"Task {task.task_name} added with interval {interval_seconds} seconds") elif trigger == "cron": # 解析 cron 表达式的字段 fields = task.cron_expression.split() @@ -90,7 +90,7 @@ def load_tasks(scheduler: BlockingScheduler): id=str(task_id), replace_existing=True ) - log(f"Task {task.task_name} added with cron {task.cron_expression}") + logger.info(f"Task {task.task_name} added with cron {task.cron_expression}") elif trigger == "date": scheduler.add_job( task_function, @@ -99,13 +99,13 @@ def load_tasks(scheduler: BlockingScheduler): id=str(task_id), replace_existing=True ) - log(f"Task {task.task_name} added with date {task.execution_date}") + logger.info(f"Task {task.task_name} added with date {task.execution_date}") else: - log(f"Task Invalid trigger type: {trigger}") + logger.warning(f"Task Invalid trigger type: {trigger}") else: - log(f"Task {task.task_name} already exists......") + logger.info(f"Task {task.task_name} already exists......") run_time = job.next_run_time - job.trigger.start_date - log(f"Task {task.task_name} already exists, run time is {run_time}") + logger.info(f"Task {task.task_name} already exists, run time is {run_time}") # 管理者任务 def manager_task(scheduler: BlockingScheduler): diff --git a/utils/__pycache__/__init__.cpython-312.pyc b/utils/__pycache__/__init__.cpython-312.pyc index e83ec45b4e00dde7fec7d710a1b093360fae6509..28f99f8fdc10e96bb6ef2d024914c0b6f298fe79 100644 GIT binary patch literal 201 zcmX@j%ge<81PZ|uGUb8vV-N=hn4pZ$0zk%eh7^Vr#vF!R#wbQchDs()=9eI8O~zYn zIr-`7sYQO8Ot*MSOEPnc^&kR8%s}~-44*;Dep%^<7N-^!>u2ZZWhEvTKCMzq!#IejnI#e&&;8NzPA6jVVYi zNiB*gEy>I&j){-Y%*!l^kJl@x{Ka9Do1apelWJGQ3RKSs#Kj=SM`lJw#v*1Q3jmC; B95Mg^