什么时订阅模式:比如花了120元问邮局订了12个月的杂志,每个月有差师傅都会将杂志送到家门口,当我到家时便会看到杂志;便可以演化为,有很多信息,有一个信息监听器,接受消息,整理;基于这种思想我们着手做一个微博热点的订阅系统,收集到每天微博排行的前十名,对其分析然后获得分析结果总结最近的热门是什么。
这样的化我们需要有以下几个组件:
1.爬虫爬取排行榜
2.分析爬取到的内容
3.MeteGPT使用SubscriptionRunner方法提供了一个Role的运行方式,基于SubscriptionRunner类,我们可以定时触发运行一个Role,然后将Role的执行输出通知给用户
代码如下:MetaGPT 0.8版本
MetaGPT执行方法:WeiboSubscriptionAgent.py 执行方法
"""
Filename: MetaGPT/examples/oss/WeiboSubscriptionAgent.py to run OssWatcherWeibo
Created Date:
Author:
"""
import asyncio
# from QQMailSender import QQMailSender
from WeiboOssWatcher import WeiboOssWatcher
from typing import Optional
from aiocron import crontab
from pydantic import BaseModel
from pytz import BaseTzInfo
from metagpt.logs import logger
from metagpt.environment import Environment
from metagpt.schema import Message
from metagpt.subscription import SubscriptionRunner
# Trigger
class OssInfo(BaseModel):
url: str
timestamp: float
class WeiboHotCronTrigger:
def __init__(self, spec: str, tz: Optional[BaseTzInfo] = None, topic: str = "社会") -> None:
self.crontab = crontab(spec, tz=tz)
self.topic = topic
def __aiter__(self):
return self
async def __anext__(self):
await self.crontab.next()
# logger.info(self.url)
logger.info(self.topic)
# logger.info(OssInfo(url=self.url))
# logger.info(Message(self.url))
logger.info(Message(self.topic))
return Message(self.topic)
async def qqmail_callback(msg: Messa