我想写一个自动发送豆邮的脚本,具体思路是:
- 获取指定一个或/多个小组内的成员。
- 通过某种方式过滤成员, 例如用注册年份来过滤掉最新注册的成员,或者使用Google Vision API来选择头像为女性的用户。
- 然后获取每个成员的user id。
- 然后给这些人发送豆邮。然而这一步需要API Key。需要找一个方法来获取API key。
下面是我关于豆瓣API做的一些研究。
首先呢,我们希望获取一个小组内的所有成员的名称。我们可以通过如下获得。
https://api.douban.com/v2/group/:group_id/members
那我们如何获取小组id呢?
获取小组id可以通过浏览器的检查功能查看小组头像的名字。以深圳单身色这个小组为例,当我们查看小组头像的source的时候,source是这样的https://img3.doubanio.com/icon/g237153-5.jpg
, 在这个例子中这个小组的小组id就是“237153”,g就代表group。我们也可以用同样的方法来获取用户的id,这里就不再举例子了。
那既然我们知道了如何获取小组id,我们就试着向端点发出一个GET请求https://api.douban.com/v2/group/76728/members?count=100&start=10
他的回复是:
{
count: 20,
start: 0,
total: 23455,
members: [
{
name: "X_inge",
is_suicide: false,
avatar: "https://img1.doubanio.com/icon/user_normal.jpg",
uid: "55644233",
alt: "https://www.douban.com/people/55644233/",
type: "user",
id: "55644233",
large_avatar: "https://img3.doubanio.com/icon/user_large.jpg"
},
...
]
}
我们可以看到默认的回复用户数是10个,但是我们可以更改获取的用户个数。经过测试,一次性最多可以获取100个用户,然而我们可以通过调整开始位置来获取所有的用户:
https://api.douban.com/v2/group/76728/members?count=100&start=10
。
一些其他的指令包括:
https://api.douban.com/v2/group/:group_id/
该指令可以获得豆瓣小组的一些基本信息。
一个更完整的Reference可以通过这个链接获得。
获取了加入小组的所有用户之后我们可以来查看用户的具体信息,例如说注册时间,头像等。这可以通过
https://api.douban.com/v2/user/:user_id
回复如下
{
"loc_id": "118282",
"name": "sophia曾",
"created": "2012-01-08 21:07:22",
"is_banned": false,
"is_suicide": false,
"loc_name": "广东深圳",
"avatar": "https://img3.doubanio.com/icon/u57619152-3.jpg",
"signature": "",
"uid": "57619152",
"alt": "https://www.douban.com/people/57619152/",
"desc": "",
"type": "user",
"id": "57619152",
"large_avatar": "https://img3.doubanio.com/icon/up57619152-3.jpg"
}
接下来我们需要采取步骤来过滤一下用户,因为我们不希望给所用的用户都发送豆邮。
然后我们需要通过脚本来实现自动发送豆邮的功能,然而发送豆邮的功能是需要api key的,因此我们需要寻找一个方法来获取API key。