npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@faceunity/webapi

v0.0.1

Published

## 简介

Downloads

1

Readme

Nama Web API

简介

Web API的使用分为三个流程:

  • 联系我司获取key和secret
  • 通过key和secret获取access_token
  • 通过access_token访问API

获取access_token

获取access_token时,需要用到key和secret,本文档中假设

Key = '12345' //必须携带
Secrect = '54321'

假设获取access_token的请求链接为:https://token.faceunity.com/api/v1/GetAccessToken?Key=12345 。获取access_token的具体流程如下:

1. 将本次请求参数按照名称进行升序排列

排序前:

{
    "Key":"12345"
}

排序后:

{
    "params":"test"
}

**2. 构造被签名参数串 **

被签名串的构造规则为:被签名串 = 所有请求参数拼接(无需HTTP转义),并在本签名串的结尾拼接secret。

本例中排序后参数见上,故参数拼接后为Key12345paramstest,然后加上账户中的secret,即本例中的54321 ,最终被签名串为Key12345paramstest54321

**3. 计算签名 **

计算被签名串的sha1值生成Signature。

Nodejs代码

const { createHash } = require("crypto");

function signature(params,secrect) {
    let keys = Object.keys(params).sort();  //按参数排序
    let sign_str: string = '';
    keys.forEach((value, index) => {        //构造被签名串
        sign_str += value + params[value];
    });                                     
    sign_str += secrect;                    //连接secrect
    return createHash('sha1').update(sign_str).digest('hex'); //返回被签名串的sha1值
}

Python代码

import hashlib
import urlparse
import urllib
 
def _verfy_ac(private_key, params):
    items=params.items()
    # 请求参数串
    items.sort()
    # 将参数串排序
 
    params_data = "";
    for key, value in items:
        params_data = params_data + str(key) + str(value)
    params_data = params_data + private_key
 
    sign = hashlib.sha1()
    sign.update(params_data)
    signature = sign.hexdigest()
 
    return signature
    # 生成的Signature值

签名计算命令行工具:Windows版 Linux版 Macos版

Exmaple:faceunity-cli signature --key 111 --secrect 222

4. 拼接出请求链接

将计算出的Signature拼接到尾部(各参数需要url编码,例如Key为lbA2MypNve2PeZpaOiPUGnSt+FHePw==,编码后为lbA2MypNve2PeZpaOiPUGnSt%2BFHePw%3D%3D)例如https://token.faceunity.com/api/v1/GetAccessToken?params=test&Key=12345&Signature=cac49742c5e52e63b285b6a549c7d362b19aa054

5. 发送请求,获取access_token

请求成功后会返回如下结构

{
    "code":2,
    "message":"success",
    "data":{
        "access_token":"82f205d0-8a31-11e8-8c11-b74c5a2e235c",
        "expirein":600
    }
}

data.access_token:申请到的access_token。

data.expirein:token的过期时间,单位为秒。

访问API

!> 请求API时需在url地址中带上access_token参数,如https://api.faceunity.com/api/beauty?access_token=82f205d0-8a31-11e8-8c11-b74c5a2e235c

!> 需要上传文件的接口都使用form-data方式上传

!> 上传清晰的人脸照片效果更好

API

/api/beauty

描述:美颜接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | params | String | 否 | 美颜参数,序列化后的json字符串,例如{"skin_detect":1,"heavy_blur":1,"blur_level":0.7,"color_level":0.3,"red_level":1},,序列化后的json字符串,例如{"skin_detect":1,"heavy_blur":1,"blur_level":0.7,"color_level":0.3,"red_level":1},详情 | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer|Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/sticker

描述:贴纸接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | :--------: | :----: | :--: | :--------------------------------------: | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/cosmetics

描述:人脸美妆

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | params | String | 是 | 序列化的JSON字符(人脸美妆素材) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

params:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | tex_brow | String | 否 | 眉毛 (眉毛素材) | | tex_eye | String | 否 | 眼妆 (眼妆素材) | | tex_pupil | String | 否 | 美瞳 (美瞳素材) | | tex_blusher | String | 否 | 腮红 (腮红素材) | | makeup_lip_color | String | 否 | 嘴唇,长度为4的RGBA数组,如[229.5,53.55,124.95,0.7] |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/poster

描述:人脸融合

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 是 | 图片数据 | | templete | FormData | 是 | 渲染的海报图片, 以下图片经测试效果较好(海报列表) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/facewarp

描述:哈哈镜接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/armesh

描述:AR Mesh

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具([默认道具](#AR Mesh)) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/animoji

描述:animoji

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/changeface

描述:换脸接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

/api/background

描述:背景分割接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |

视频处理接口

/api/video/upload

描述:视频上传接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ----------- | -------- | -------- | -------------------------------------------------------- | | video | FormData | 是 | 视频数据 | | item/bundle | String | 是 | 默认道具/自定义道具ID | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ----------- | -------- | --------------------------------------------- | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer | 是 | 渲染后返回的图片数据 |

/api/video/download

描述:视频下载接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | TaskId | String | 是 | type为异步时返回的TaskId | | type | String | 是 | video | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer | 是 | 渲染后返回的图片数据 |

/api/facedetection

描述:表情识别接口

请求方式:POST

参数:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 是 | 图片数据 |

返回值:

| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | Json | 是 | 上传图片的表情系数 |

道具列表:

贴纸

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- baimao_lm_fu | 示例 | baozi_lm_fu | 示例
caituzi_zh_fu | 示例 | call_lm_fu | 示例
caomei_lm_fu | 示例 | chibang_lm_fu | 示例
chmaomi_ztt_fu| 示例 | dmmao_zh_fu | 示例
fantuan_lm_fu | 示例 | fenghongmao_ztt_fu | 示例
fengya_ztt_fu | 示例 | fenhongshu_ztt_fu | 示例
fense_lm_fu | 示例 | ffmao_zh_fu | 示例
ffxiong_zh_fu | 示例 | freestyle_ztt_fu | 示例
glassesP_ztt_fu| 示例 | glassesY_ztt_fu| 示例
haijun_lm_fu | 示例 | haijunmao_lm_fu| 示例
Hatshenshi_ztt_fu| 示例 | hboluo_zh_fu | 示例
honghuzi_ztt_fu| 示例 |huangguang_ztt_fu| 示例
huangyu_lm_fu | 示例 | hudie_lm_fu | 示例
huzi_lm_fu | 示例 | juanhuzi_lm_fu | 示例
lhudie_zh_fu | 示例 | ljiao_zh_fu | 示例
nuqwa_zh_fu | 示例 | shucha_zh_fu | 示例
touhua_ztt_fu | 示例 | wjdok_zh_fu | 示例
xiaoermao_ztt_fu| 示例 | xinglu_ztt_fu | 示例
xlong_zh_fu | 示例 |yingtaomao_ztt_fu| 示例
CatSparks | 示例 | ChalkCat2 | 示例
ChalkRabbi | 示例 | Crown | 示例
DaisyPig | 示例 | demon | 示例
item0201 | 示例 | item0203 | 示例
item0205 | 示例 | item0209 | 示例
item0211 | 示例 | item0502 | 示例
item0503 | 示例 | seye | 示例
tears | 示例 | wcat | 示例
etmaozi_zh_fu | 示例 | ettuzi_zh_fu | 示例
etxigua_zh_fu | 示例 | etye_zh_fu | 示例
huanxing_ztt_fu| 示例 | miaomi_ztt_fu| 示例
qingwa_lm_fu | 示例 |taiyanghua_ztt_fu| 示例
xiaoji_ztt_fu | 示例 | PrincessCrown| 示例
tiara | 示例 | YellowEar | 示例
fu_zh_zbaixin | 示例 | fu_zh_zbtang | 示例
fu_ztt_lihua | 示例 | fu_ztt_meigui | 示例
niulang_ztt_fu | 示例 | qiyuan_ztt_fu | 示例
qxhua_zh_fu | 示例 | qxniu_zh_fu | 示例
qxzhinv_zh_fu | 示例 |sanjiantao_lm_fu | 示例
zhinv_ztt_fu | 示例 | BigEarFox | 示例
CatGray | 示例 | ChalkCat | 示例
evil | 示例 | EyeBall | 示例
fox | 示例 | GourdBro | 示例
huanlady1 | 示例 | huanlady2 | 示例
huanlady3 | 示例 | huanlady4 | 示例
huanlady5 | 示例 | item0202 | 示例
item0206 | 示例 | item0207 | 示例
item0504 | 示例 | item0505 | 示例
item0506 | 示例 | krabbit | 示例
pig | 示例 | PinkCat | 示例
pirate | 示例 | pirate2 | 示例
rabbit | 示例 | rabbit1 | 示例
redribbt | 示例 | VectorCat | 示例
aixingou | 示例 | aixinniao | 示例
dhj | 示例 | dylm | 示例
hana | 示例 | long | 示例
mogu | 示例 | sanye | 示例
touhua | 示例 | BeagleDog | 示例
ColorCrown | 示例 | Deer | 示例
HappyRabbi | 示例 | hartshorn | 示例
item0204 | 示例 | item0208 | 示例
item0210 | 示例 | item0501 | 示例
mask_hat | 示例 | |

Animoji

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- baimao_Animoji | 示例 | douniuquan_Animoji| 示例
huangya_Animoji | 示例 | frog_Animoji| 示例
hetun_Animoji | 示例 | kuloutou_Animoji| 示例
hashiqi_Animoji | 示例 | |

AR Mesh

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- bluebird | 示例 | fenhudie| 示例
huanghudie | 示例 | lanhudie| 示例
tiger_bai | 示例 | tiger_huang| 示例
zihudie | 示例 | baozi | 示例
tiger | 示例 | xiongmao | 示例

哈哈镜

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- facewarp1 | 示例 | facewarp2 | 示例
facewarp3 | 示例 | facewarp4 | 示例
facewarp5 | 示例 | facewarp6 | 示例

换脸

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- mask_guocaijie | 示例 | mask_huangxiaoming| 示例
mask_linzhiling | 示例 | mask_liudehua | 示例
mask_luhan | 示例 | mask_matianyu | 示例
mask_tongliya | 示例 | mask_zhangbozhi | 示例

背景分割

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- hez_ztt_fu | 示例 | sea_lm_fu | 示例 gufeng_zh_fu | 示例 | ice_lm_fu | 示例 xiandai_ztt_fu | 示例 | |

素材列表

人脸融合

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- 1 | 示例 | 2 | 示例
3 | 示例 | 4 | 示例
5 | 示例 | 6 | 示例
7 | 示例 | 8 | 示例 9 | 示例 | 10| 示例

人脸美妆

眉毛

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- brow-1 | 示例 | brow-2 | 示例
brow-3 | 示例 | |

眼妆

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- eye-1 | 示例 | eye-2 | 示例
eye-3 | 示例 | |

美瞳

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- eyepupil-1 | 示例 | eyepupil-2 | 示例
eyepupil-3 | 示例 | |

腮红

item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |-------------------------------- zhuangrong_sh-1 | 示例 | zhuangrong_sh-2 | 示例
zhuangrong_sh-3 | 示例 | |