如何写一个点赞机器人 by liuzhixiang

View this thread on steempeak.com
· @liuzhixiang · (edited)
$17.67
如何写一个点赞机器人
写了一个点赞机器人,这里把思路整理分享一下。

##### 弄清怎么获得最多点赞回报
######
搜索和查看了很多贴子,并经过一些实际计算以后,最终结论跟@tumutanzi的这个贴子说的一样。https://steemit.com/cn/@tumutanzi/3uvcpk-steemit

这里我稍微发散一下。

在我的点赞价值固定的前提下,我的点赞回报取决于我的点赞位置和大腿出现的位置(也就是绝大部分点赞价值出现的位置)。
点赞时间只决定了我跟作者的分成,这里我们先不考虑。
下面我们计算一下如何获得最多回报。

点赞人顺位n,点赞价值为Xn,我的位置为i,点赞价值为Xi。
我的点赞回报= 贴子的总价值/4 * 我的点赞权重/总的点赞权重 
其中点赞权重为Xn/n
所以我的点赞回报 Y= (X1+X2+......Xn)/4 * Xi/i /  (X1/1 + X2/2+......+Xn/n)

这个公式我们可以简化一下,最优的点赞情况应该是我第一个点赞,我和大腿中间的点赞价值为0,大腿最后一个点赞。
所以,Y = (Xi+Xn)/4 * Xi * / (Xi+Xn/n)  = nXi(Xi +Xn)   /  4 (nXi+Xn)

由此,我们可以得出以下结论
1:我应该尽量靠前点赞,最好是第一个。
2:比我先点赞的人,点赞价值应该很低。
3:我跟大腿中间最好有很多低价值小号点赞。
4:我的点赞价值如果太大,我很吃亏。

好吧,上面还是有点懵。我们说点人话。
- 如果第一个人就是大腿,那么我们第二个点也得不了多少钱。
- 如果前面已经有10-20个人点了,就算点赞价值仍然为0,我们点赞的价值也不大了。
- 我们和大腿中间要间隔很多小号最好。所以,点赞机器人最好带一个小号车队。
- 如果我们的点赞价值太大,最好把点赞比例调低点。
> 四个结论怎么来的,我又在评论里简单说了一下。https://steemit.com/cn/@liuzhixiang/re-liuzhixiang-xxkod-20180907t122406118z

##### 实现这个点赞机器人
###### 
因为这里涉及到的编程知识很有限,会者不难,难者不会。这里就不贴代码了。只简单说一下我怎么做的。

我用python写的,整个程序分成四部分。

第一部分:抓取。
不断抓取和更新帖子,直接把声誉低于50的过滤掉。

第二部分:处理帖子列表。
如果发帖时间低于8分钟,暂不处理。

如果总点赞价值已经大于我的点赞价值,踢出列表。
如果已点赞数超过3,踢出列表。
如果发帖已经过了35分钟,踢出列表。

作者最近十个非resteem帖子,去掉一个最高价值,去掉一个最低价值,算帖子平均价值。
同时把平均点赞数低于20的帖子踢掉。

然后,帖子平均价值大于x,发帖时间大于y的时候标记为立即点赞。(X,Y根据前面的结论自行把握)。这里我们是有多个并行的条件的。平均价值越大的我们点的越早。

第三部分:大号带小号车队把标记为立即点赞的帖子处理掉。
这个方法其实有待商榷,个人认为这个对社区有一定的不良影响。
而且大家都明白这一点以后,可能有的帖子就得不到应得的收入了。

第四部分:报警和手动干预。
这一部分已经不属于机器人本身的功能了。但也是一个必要的功能。
有的时候,机器人找不到那么多值得投票的帖子,那么我们需要手动干预一下。
除了能手动修改机器人参数。
还添加了一个能手动点赞的界面。
手动设置限定条件,刷出抓取的帖子列表里符合条件的帖子。

![](https://cdn.steemitimages.com/DQmakk2m9j4ztuhFaWn7isYUbtNt2FAuL7KznQwUpm9NiAQ/image.png)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
👎  
properties (23)
post_id61,811,876
authorliuzhixiang
permlinkxxkod
categorycn
json_metadata{"image":["https:\/\/cdn.steemitimages.com\/DQmakk2m9j4ztuhFaWn7isYUbtNt2FAuL7KznQwUpm9NiAQ\/image.png"],"app":"steemit\/0.1","tags":["cn","steemit","blog","python","ua"],"users":["tumutanzi"],"format":"markdown","links":["https:\/\/steemit.com\/cn\/@tumutanzi\/3uvcpk-steemit","https:\/\/steemit.com\/cn\/@liuzhixiang\/re-liuzhixiang-xxkod-20180907t122406118z"]}
created2018-09-07 06:52:00
last_update2018-09-07 13:02:36
depth0
children4
net_rshares16,633,856,911,109
last_payout2018-09-14 06:52:00
cashout_time1969-12-31 23:59:59
total_payout_value13.529 SBD
curator_payout_value4.138 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,571
author_reputation1,281,674,600,435
root_title如何写一个点赞机器人
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (64)
@liuzhixiang · (edited)
四个结论怎么来的,直接跳过了。这里再解释一下。
##### 结论1:我应该尽量靠前点赞,最好是第一个
Y= (X1+X2+......Xn)/4 * Xi/i / (X1/1 + X2/2+......+Xn/n)
这就是一个股权稀释公式
由这个公式不难看出,当点赞总值固定的情况下, 我越早点赞被稀释得就越少。最佳情况,就是我第一个点赞。最坏的情况就是我最后一个点赞。


##### 结论2:比我先点赞的人,点赞价值应该很低。
##### 结论3:我跟大腿中间最好有很多低价值小号点赞。
根据结论1我们简化了公式。最有利于我们的情况是我们第一个点赞,而大腿最后一个点赞。
Y = (Xi+Xn)/4 * Xi * / (Xi+Xn/n) = nXi(Xi +Xn) / 4 (nXi+Xn)
点赞价值固定的前提下,我们调整一下公式
Y = Xi/4  * (   nXi +nXn )/ (nXi+Xn)
分子nXi+nXn增大速度是肯定大于nXi+Xn的,n越大我们得到的越多。
怎么让n更大呢?就是中间填一堆没有投票价值的小号,0/n=0。
这就是结论3,所以投票机器人最好带上小号车队。

如果大腿比我们先点赞,我们就成Xn了,我们的股权就被大腿稀释了。在我的位置n和点赞价值Xn固定的情况下,Xi越大我们被稀释得越多。这就是结论2。

##### 结论4:我的点赞价值如果太大,我很吃亏。
这个结论就没什么好说的了。我们是大腿的情况下,我们就算是第一个点赞也薅不到多少羊毛。所以,缩小点赞比例,让别人当大腿吧!
properties (22)
post_id61,831,729
authorliuzhixiang
permlinkre-liuzhixiang-xxkod-20180907t122406118z
categorycn
json_metadata{"app":"steemit\/0.1","tags":["cn"]}
created2018-09-07 12:24:06
last_update2018-09-07 12:36:06
depth1
children0
net_rshares0
last_payout2018-09-14 12:24:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length661
author_reputation1,281,674,600,435
root_title如何写一个点赞机器人
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars0
@gaman ·
Resteemed your article.  This article was resteemed because you are part of the New Steemians project. You can learn more about it here: https://steemit.com/introduceyourself/@gaman/new-steemians-project-launch
👎  
properties (23)
post_id61,898,209
authorgaman
permlinkxxkod-gaman-09082018
categorycn
json_metadata{"app":"pysteem\/0.5.4"}
created2018-09-08 06:51:51
last_update2018-09-08 06:51:51
depth1
children0
net_rshares-52,316,154,601
last_payout2018-09-15 06:51:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length210
author_reputation-1,760,173,813,288
root_title如何写一个点赞机器人
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@zy-sb ·
看到公式就头晕,但一点儿也不妨碍对你的佩服…😜

Posted using [Partiko Android](https://steemit.com/@partiko-android)
properties (22)
post_id62,322,330
authorzy-sb
permlinkzy-sb-re-liuzhixiang-xxkod-20180913t060834018z
categorycn
json_metadata{"app":"partiko"}
created2018-09-13 06:08:33
last_update2018-09-13 06:08:33
depth1
children0
net_rshares0
last_payout2018-09-20 06:08:33
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length93
author_reputation2,089,296,130,854
root_title如何写一个点赞机器人
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@liuzhixiang ·
$0.03
本帖是错误的。当时不知道详细算法,被前面点赞人数那张图误导了。

我的点赞规则已经不是这样了。其实没这么复杂,过几天我再写一篇。
👍  ,
properties (23)
post_id66,133,492
authorliuzhixiang
permlinkre-liuzhixiang-xxkod-20181116t172124158z
categorycn
json_metadata{"tags":["cn"],"app":"steemit\/0.1"}
created2018-11-16 17:21:21
last_update2018-11-16 17:21:21
depth1
children0
net_rshares54,399,498,144
last_payout2018-11-23 17:21:21
cashout_time1969-12-31 23:59:59
total_payout_value0.025 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length64
author_reputation1,281,674,600,435
root_title如何写一个点赞机器人
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (2)