权那他

130 分类: 原创内容

GravatarServer of typecho

GravatarServer Typecho 插件

提供替换Gravatar服务器,支持QQ头像加密地址。 原作者 LT21 GravatarServer

由于原作者LT21最后更新于2015年5月,原有的Gravatar镜像地址已多数失效。
因此我收集了一些Gravatar镜像

'https://gravatar.loli.net/avatar' => 'Gravatar loli 镜像 ( https://gravatar.loli.net )',
'https://gravatar.cat.net/avatar' => 'Gravatar cat 镜像 ( https://gravatar.cat.net )',
'https://cdn.v2ex.com/gravatar' => 'Gravatar v2ex 镜像 ( https://cdn.v2ex.com )',
'https://dn-qiniu-avatar.qbox.me/avatar/' => 'Gravatar qiniu 镜像 ( https://dn-qiniu-avatar.qbox.me )',
'https://sdn.geekzu.org/avatar/' => 'Gravatar 极客 镜像 ( https://sdn.geekzu.org )',
'http://cn.gravatar.com/avatar' => 'Gravatar CN ( http://cn.gravatar.com )',
'https://secure.gravatar.com/avatar' => 'Gravatar Secure ( https://secure.gravatar.com )'

考虑

考虑到有些朋友没有gravatar头像,所以引入了使用QQ头像
不久前一个朋友提到直接用头像会暴露qq,所以我找到了,腾讯qq头像加密地址
比如https://thirdqq.qlogo.cn/g?b=sdk&k=s7FaiaNibSwRuBKft2wGnMzw&s=100&t=1552706192是吧,目前解析不出QQ号。

实现

QQ头像API加密地址 https://ptlogin2.qq.com/getface?appid=1006102&uin=qq号&imgtype=3
返回数据 pt.setHeader({"1696674719":"https://thirdqq.qlogo.cn/g?b=sdk&k=s7FaiaNibSwRuBKft2wGnMzw&s=100&t=1552706192"})

然后获取加密地址

$mail = "";
$object = explode("@", $mail)[0];  //获取qq号
$avatar = self::curl_file_get_contents("https://ptlogin2.qq.com/getface?appid=1006102&uin=" . $object . "&imgtype=3");
$pattern2 = '/pt.setHeader\((.*)\)/is';
preg_match($pattern2, $avatar, $result2);
echo json_decode($result2[1], true)["$object"]; //返回QQ头像加密地址

核心

$hander = Typecho_Widget::widget('Widget_Options')->plugin('GravatarServer');
        $secure = $isSecure ? 'https://secure.gravatar.com/avatar/' : $hander->server . "/";
        $s = "?s=" . $size;
        $r = "&r=" . $rating;
        $d = "&d=" . $default;
        if (empty($mail)) {
            return $secure . $s . $r . $d;
        } else {
            $reg = "/^\d{5,11}@[qQ][Qq]\.(com)$/";
            if (preg_match($reg, $mail) && $hander->usePriority == "qq") {
                $object = explode("@", $mail)[0];
                $avatar = self::curl_file_get_contents("https://ptlogin2.qq.com/getface?appid=1006102&uin=" . $object . "&imgtype=3");
                $pattern2 = '/pt.setHeader\((.*)\)/is';
                preg_match($pattern2, $avatar, $result2);
                return json_decode($result2[1], true)["$object"];
            } else {
                return $secure . md5($mail) . $s . $r . $d;
            }
        }

Github

下载:https://github.com/kraity/GravatarServer

#typecho

作者: 权那他

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

已有 11 条评论

  1. 蛋黄 蛋黄

    为什么启用插件时提示Server Error啊
    php版本7.3
    typecho版本是最新的

  2. 点启用提示Server Error 怎么解决

  3.  

    支持😀

  4. 这插件不错

    1. 哈哈,造轮子真舒服😂

  5. 记得可以在config.inc.php里面定义常量来替换头像地址。
    define('__TYPECHO_GRAVATR_PREFIX__', 'https://gravatar.cat.net/avatar');

    可以看一下: https://docs.qqdie.com/#/post/typecho常量

  6. 支持一下,

    1. (๑•॒̀ ູ॒•́๑)啦啦啦

      1. 正好那天搞这类的,搞的老烦了,突然就看到这个插件,真是整个人都轻松了👻

        1. 造轮子,真舒服😂

评论