吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6529|回复: 14
收起左侧

[Python 转载] 利用LCUAPI查询LOL好友添加时长

[复制链接]
BakaFT 发表于 2020-7-2 17:45

如果看不懂代码里的部分内容,建议先阅读一下我博客写的LCU通信原理简介:https://alphaft.me/tags/LeagueClient/

原理

在LOL的商城里,好友之间赠送礼物有这么一个条件

超过14天的好友能赠送礼物

要判断是否超过14天,必定在某个地方储存了成为好友的日期。幸运的是,LCU的 REST API中提供了查询方法

GET /lol-store/v1/giftablefriends

返回样例:

[
  {
      "friendsSince": "2015-06-06 19:51:10",
      "nick": "53263468",
      "oldFriends": true,
      "summonerId": 4012653853
  },
  {
      ...
      ...
  },
   ....
]

数据注释:

key value
friendSince 成为好友的时间,精确到秒
nick 好友昵称
oldFriends 到目前时间是否够14天
summonerId summonerId

有这些就很好搞了,接下来写个DEMO试试

DEMO

代码效果放在哔哩哔哩了

https://www.bilibili.com/video/BV1eK4y147od/

代码如下
因为要获取程序的命令行参数,所以需要管理员权限

import requests
import subprocess
from datetime import  datetime

class LCU:

    def __init__(self):
        '''
        init params
        '''
        self.port = None
        self.host = '127.0.0.1'
        self.token = None
        self.protocol = 'https'
        self.url = None
        self.pid = None

    def getParam(self):
        '''
        From https://github.com/minhluu2000/Project-Lego and changed a little
        Get necessary for client-specific info through CommandLine
        '''

        raw_output = subprocess.check_output(
            ['wmic', 'PROCESS', 'WHERE', "name='LeagueClientUx.exe'", 'GET', 'commandline']).decode('gbk')
        # Use GBK in case of Chinese character in path
        app_port = raw_output.split('--app-port=')[-1].split(' ')[0].strip('\"')
        auth_token = raw_output.split('--remoting-auth-token=')[-1].split(' ')[0].strip('\"')
        url = self.protocol + '://' + 'riot:' + auth_token + '@' + self.host + ':' + app_port
        return app_port, auth_token, url

    def init(self):
        '''
        Init the instance
        '''
        while True:
            if not self.checkProcess():
                print('未检测到LeagueClient.exe')
            else:
                self.pid = self.checkProcess()
                self.port, self.token, self.url = self.getParam()
                break
    def giftablefriends(self):
        '''
        /lol-store/v1/giftablefriends
        :return:
            [
                {
                    "friendsSince": "2015-06-06 19:51:10",
                    "nick": "53263468",
                    "oldFriends": true,
                    "summonerId": 4012653853
                },
                ....
            ]
        '''
        rest = "/lol-store/v1/giftablefriends"
        request = requests.get(self.url + rest, verify=False)
        infolist = request.json()
        return infolist

    def getFriendDate(self, reverse=False):
        infolist = self.giftablefriends()
        date_now_tuple = datetime.now().timetuple()
        date_now = datetime(date_now_tuple.tm_year, date_now_tuple.tm_mon, date_now_tuple.tm_mday)
        for infodict in infolist:
            date = infodict['friendsSince']
            date_old_tuple = datetime.strptime(date, '%Y-%m-%d %H:%M:%S').timetuple()
            date_old = datetime(date_old_tuple.tm_year, date_old_tuple.tm_mon, date_old_tuple.tm_mday)
            interval = (date_now-date_old).days
            infodict['interval'] = interval
        #infolist_sorted = sorted(infolist, key=lambda hey:hey['interval'])  排序后新建列表
        infolist.sort(key=lambda profile:profile['interval'], reverse=False)
        print(infolist)
        for infodict in infolist:
            date = infodict['friendsSince']
            nick = infodict['nick']
            interval = infodict['interval']
            print(f'你和 {nick} 在 {date} 成为了好友, 距今已经 {interval}天')

lcu = LCU()
lcu.init()
lcu.getFriendDate()   

免费评分

参与人数 2热心值 +2 收起 理由
javporn + 1 我很赞同!
羊毛丶 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| BakaFT 发表于 2020-7-2 20:11
Perry 发表于 2020-7-2 20:01
有没有自动选英雄的API  自动确定的

这个在REST API里似乎是有的
http://www.mingweisamuel.com/lcu-schema/tool/#/Plugin%20lol-champ-select
我记得国内也有部分作者做过秒选器

https://github.com/pseudonym117/YasuNO
这个项目是避免自己选取亚索
https://github.com/pipe01/legendary-rune-maker
这个项目功能很多,其中包含了自动接受,自动BAN,自动选英雄,可以参考一下

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Perry + 1 + 1 谢谢兄弟了 我主要是做来 秒选亚索

查看全部评分

Perry 发表于 2020-7-2 20:01
bushiri 发表于 2020-7-6 23:33
楼主,那能不能自动领取菲欧娜新手礼包的?
方便联系QQ联系一下吗?
 楼主| BakaFT 发表于 2020-7-9 10:06
bushiri 发表于 2020-7-6 23:33
楼主,那能不能自动领取菲欧娜新手礼包的?
方便联系QQ联系一下吗?

这个是国服自己的活动,和LCU本身无关。不做这个。
Perry 发表于 2020-7-11 08:01
bushiri 发表于 2020-7-6 23:33
楼主,那能不能自动领取菲欧娜新手礼包的?
方便联系QQ联系一下吗?

这个只涉及到封包。。。。 很简单的
Dumeng 发表于 2020-7-31 13:20
想做 一个 好友上线提醒的功能 有没有API  谢楼主
 楼主| BakaFT 发表于 2020-8-1 14:50
Dumeng 发表于 2020-7-31 13:20
想做 一个 好友上线提醒的功能 有没有API  谢楼主

我没找到类似的,目前LCU的好友状态更新也是各种问题,感觉做不出来
Dumeng 发表于 2020-8-1 18:25
本帖最后由 Dumeng 于 2020-8-1 20:02 编辑
BakaFT 发表于 2020-8-1 14:50
我没找到类似的,目前LCU的好友状态更新也是各种问题,感觉做不出来

我在掌盟 发现有 好友在线状态 但是实在不会再安卓里抓https



----  2020年8月1日20:02:03

解决了,,pc wegame    fd抓包
bushiri 发表于 2020-8-14 23:54
Perry 发表于 2020-7-11 08:01
这个只涉及到封包。。。。 很简单的

能有偿做一下吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表