CMS端API使用

该API包括大部分CMS端数据获取,视频获取、图集获取、标签分类获取、视频m3u8等相关信息。

API路由文件routes/index.js,涉及到的文件controller/cms.js,可自行修改api返回等。

以下API2大部分都是需要传递APIKEY的,使用前推荐在header中添加{token: apikey}

获取分类、标签、标签管理

Get /api2/gettags

#返回信息
{
    "tags": [
        {
            "counts": 2,
            "_id": "6087860146a58264c794d70d",
            "tag": "邱淑贞",
            "groupid": {
                "_id": "6046dd714b180d7bcd0d0b4b",
                "title": "人物"
            }
        },
        {
            "counts": 2,
            "_id": "6087860146a58264c794d716",
            "tag": "张敏"
        }
    ],
    "categories": [
        {
            "_id": "60d872f766c8886d0a95caec",
            "title": "动漫",
            "createAt": "2021-06-27T12:45:43.361Z",
            "__v": 0
        }
    ],
    "taggroups": [
        {
            "_id": "6046dd714b180d7bcd0d0b4b",
            "title": "人物",
            "createAt": "2021-03-09T02:29:05.128Z",
            "__v": 0
        }
    ]
}

#参数说明
tags为标签,counts为标签出现数量,groupid为该标签已添加到的标签管理(未添加到标签管理的标签则不存在此字段)
categories为视频分类
taggroups为标签管理

全套数据获取总API

GET /api2/getcontents

#调用方法,且只能获取到已经发布的电影、剧集、图集
/api2/getcontents?page=1&size=18&category=&tag=&tags=&user=&type=movie,tv&q=&order=countDesc

#调用参数信息
size是返回符合所有条件的数量,如果我同时返回type的电影、剧集类型,则每个类型都会返回size个,总返回数最大为size乘以type类型个数。
page为返回页码,比如api会返回符合条件的视频/剧集,然后获取总数会根据size切割成多个页码,page就是返回其中一个页码
type指定返回类型,比如movie为电影,tv为剧集,图集为image,如果你想多个一起返回,则使用英文逗号分开,如type=movie,tv
category是分类,且目前仅视频/剧集支持文字参数;图集只能通过其分类ID获取。
tag标签,且目前仅支持视频/剧集
tags标签数组(英文,分开),采用智能推荐算法,即多个标签命中权限排序,标签使用得当可根据用户关注返回完全相同的内容,目前支持视频/剧集、图集。
user用户ID,返回指定用户ID上传的视频数据
q搜索,返回符号该搜索关键词的内容,且目前仅支持视频/剧集
order为排序方式,为countDesc、countAsc、createAsc和createDesc,分别为播放/浏览次数倒序、播放/浏览次数正序、创建时间正序、创建时间倒序。

#调用说明
category tag q tags user这5种参数不能一起用,只能存在一个,type page size order是公用的,都为可选参数

调用示例如下:

#返回最新的电影十个数据
/api2/getcontents?page=1&size=10&type=movie

#返回最新的电影和剧集各十个数据
/api2/getcontents?page=1&size=10&type=movie,tv

#返回恐怖片分类中的电影和剧集中最新的十个数据
/api2/getcontents?page=1&size=10&type=movie,tv&category=恐怖片

#返回标签为日本的电影和剧集中最新的十个数据
https://www.leimulamu.com/api2/getcontents?page=1&size=10&type=movie,tv&tag=日本

#根据标签日本、动漫、科幻智能推荐算法API返回视频和剧集中最靠前的十个数据
/api2/getcontents?page=1&size=10&type=movie,tv&tags=日本,动漫,科幻

#返回搜索关键词龙珠的视频和剧集中最靠前的十个数据
https://www.leimulamu.com/api2/getcontents?page=1&size=10&type=movie,tv&q=龙珠

#返回指定用户ID上传的视频数据
/api2/getcontents?page=1&size=10&type=movie,tv&user=5c5e974c17a9ef6920622b3d

#返回图集类型最新的10个数据
/api2/getcontents?page=1&size=10&type=image  

返回信息如下:

#电影返回,poster2封面2信息,count播放次数,_id电影id,tags标签,category分类,previewvideo预览视频,poster封面1
[
    {
        "poster2": {
            "url": "/videos/202008/27/5f4761b75a92e955b55052e4/poster.jpg",
            "height": 814,
            "width": 540
        },
        "count": 15000,
        "tags": [
            "喜剧",
            "动作",
            "恐怖"
        ],
        "_id": "5f4761b75a92e955b55052e4",
        "originalname": "鬼打鬼之黄金道士",
        "createAt": "2021-04-27T04:49:36.708Z",
        "category": "电影",
        "previewvideo": "/videos/202008/27/5f4761b75a92e955b55052e4/preview.mp4",
        "poster": "/videos/202008/27/5f4761b75a92e955b55052e4/cover.jpg"
    }
]

#剧集返回,poster2和poster均为封面信息,_id剧集id,count播放次数,tags标签,category分类,episodes剧集信息(episode单集标题,movieid单集视频ID)
[
    {
        "poster2": {
            "url": "/poster/5ca0de597b64b73b0111165b/poster2.jpg",
            "width": 600,
            "height": 888
        },
        "count": 27252,
        "tags": [
            "喜剧",
            "科幻",
            "动画",
            "奇幻"
        ],
        "_id": "5ca0de597b64b73b0111165b",
        "title": "爱,死亡和机器人",
        "episodes": [
            {
                "_id": "5ca0dea919cc103abac8a49a",
                "episode": "01",
                "movieid": "5ca052227b64b73b0111162e"
            },
            {
                "_id": "5ca0dea919cc103abac8a499",
                "episode": "02",
                "movieid": "5ca052227b64b73b01111641"
            }
        ],
        "createAt": "2020-08-25T09:46:25.990Z",
        "poster": "/poster/5ca0de597b64b73b0111165b/poster.jpg",
        "category": "剧集"
    }
]

#图集信息,poster2和poster均为封面信息,images为全部图片地址
[
    {
        "poster2": {
            "url": "/images/5ee35ad291c8d479a076db75/poster2.jpg",
            "width": 600,
            "height": 1233
       },
        "images": [
            "/images/5ee35ad291c8d479a076db75/0.jpg",
            "/images/5ee35ad291c8d479a076db75/2.jpg",
        ],
        "_id": "5ee35ad291c8d479a076db75",
        "title": "水手服cosplay,清纯可爱性感",
        "createAt": "2020-06-12T10:37:06.083Z",
        "poster": "/images/5ee35ad291c8d479a076db75/poster.jpg"
    }
]

#文章咨询信息,poster2和poster均为封面信息,content为文章内容
[
    {
        "poster2": {
            "url": "/uploads/poster-file-1589959111721.jpg",
            "width": 600,
            "height": 375
        },
        "_id": "5d05fd3984023b28ca7996c2",
        "title": "二次元文化正在俘获亿万青年,二次元与主流文化融合加速",
        "content": "<p>文章内容</p>\r\n",
        "createAt": "2019-06-16T08:26:33.826Z",
        "poster": "/uploads/file-1589959111721.jpg"
    }
]

由于考虑到api效率问题,视频/剧集的描述返回都精简了,如有需求可联系我们单独为你加上该参数返回。

获取视频播放信息

Get /api2/getvideo/id  //id为movieid即电影id
Header {'token': apiKey}

#返回信息,下面全部的域名地址由转码设置的绑定域名决定,可自行修改
{
    "photos": [
        "https://videos.efvcms.com/videos/60e013d3bbf8db7bf9d747df/1.gif",
        "https://videos.efvcms.com/videos/60e013d3bbf8db7bf9d747df/0.jpg",
        "https://videos.efvcms.com/videos/60e013d3bbf8db7bf9d747df/1.jpg",
        "https://videos.efvcms.com/videos/60e013d3bbf8db7bf9d747df/2.jpg",
        "https://videos.efvcms.com/videos/60e013d3bbf8db7bf9d747df/3.jpg",
        "https://videos.efvcms.com/videos/60e013d3bbf8db7bf9d747df/4.jpg"
    ],
    "m3u8": "https://videos.efvcms.com/videos/60e013d3bbf8db7bf9d747df/20000/index.m3u8",
    "id": "60e013d3bbf8db7bf9d747df",
    "count": 105,
    "title": "明日之战",
    "summary": "克里斯·帕拉特商谈主演科幻影片[幽灵征募](Ghost Draft,暂译),克里斯·麦凯([乐高大电影])执导,扎克·迪恩([陷阱])操刀剧本。故事讲述一对父子被征募到一场未来战争中,这场战争决定着人...",
    "category": "美剧",
    "likes": [
        {
            "count": 16321,
            "_id": "60068fa654a23c201cd0855b",
            "originalname": "许嵩 - 断桥残雪",
            "poster": "https://efv.zhuanma.co/videos/202101/19/60068fa654a23c201cd0855b/cover.jpg"
        }
    ]
}

#参数说明
photos 为截图信息
m3u8 为m3u8链接
count 为视频播放次数
summary 为视频描述
likes 为推荐列表,根据标签推荐相似的视频
category 为视频分类

播放页获取视频信息

#id为视频id
Get /api2/getplay?type=movie|tv&id=id
Header {'token': apiKey}

response {
    movie,
    success,
    tv,   //如果type是tv才会有此返回,返回视频所属剧集详细信息。
    photos
}

搜索视频

Get /api2/getcontents?q=keywords&page=page&size=size&type=movie,tv

response {
    movies  //视频列表
}

热门视频

Get /api2/gethots

response {
    movies
}

返回日期分类的周、月、年热门视频

Get /api2/gethotsbydate

response {
    allhotmovies,
    monthhotmovies,
    yearhotmovies,
    weekhotmovies,
    host,
}

获取随机视频,剧集列表

Get /api2/getrandom
Header {'token': apiKey}

response {
    movies,
    host
}

获取图集列表

Get /api2/getimages?count=12&page=1

response {
    host, 
    images, 
    pages
}

获取图集漫画详情

Get /api2/getimage?id=id

response {
    host,
    image
}

获取视频下载价格

Get /api2/getdownloadprice?token=token&id=id

response {
    success: 0|1|2
    path //如果已经购买,并且在时限内则直接返回下载链接
    price //未购买或过期返回积分购买下载权限价格
}

积分购买下载权限

Get /api2/appdownload?token=token&id=id

response {
    success 0|1,
    message,
    path
}

获取全局导航信息和前端相关设置

Get /api2/getnav

response {
    categories,
    globaltags,
    portal
}

根据登录token,判断是否过期或者失效

Post /api2/checkauth

data {
    token
}

response {
    auth: true|false,
    user
}

获取标签列表,标签分组及全部分类

Get /api2/gettags

response {
    tags,
    categories,
    taggroups
}

API注册接口

Post /api2/postregister

data {
    username,
    email,
    password
}

response {
    success: 0|1,
    message,
    token,
    user
}

API登录接口

Post /api2/postlogin

data {
    email,
    password
}

response {
success: 0|1,
token,
user,
userfollow //用户关注的标签,用于智能推荐算法推荐相关关注内容
}

签到接口

Post /api2/checkin

data {
    token
}

response {
    success,
    message
}

获取付费用户组接口

Get /api2/getvipgroups

response {
    success:1,
    vipgroups
}

获取VIP用户组的价格

Get /api2/getjiage?group=groupid&duration=30

response {
    score, 
    price
}

使用积分购买VIP用户组接口

Post /api2/scorebuyvip

data {
    token,
    vipgroup,
    duration
}

response {
    success: 1|0,
    message
}

API直接使用支付接口购买VIP用户组

Post /api2/directbuyvip

data {
    group,
    duration,
    token
}

response {
    success,
    message,
    id   //订单ID,用于跳转订单页面进行支付
}

获取订单详情API

Get /api2/getitem?id=id

response {
    success: 1,
    item,
    pay
}

API发起码支付

Post /api2/codepay

data {
    id
}

response {
    success,
    url, //支付页面链接
    message
}

获取用户信息

Get /api2/getuser?id=id

response {
    success: 1|0 ,
    user
}

API发起购买积分

Post /api2/buyscore
    
data {
    token,
    score
}

response {
    success: 1|0,
    id, //订单ID
    message
}

使用卡劵的API接口

Post /api2/usecard

data {
    card,
    token
}

response {
    success,
    message
}

获取视频m3u8信息

#type参数,320为240P、480为360P、640为480P、1138为640P、1280为720P、1920为1080P、2560为2K、20000为原画320为240P、480为360P、640为480P、1138为640P、1280为720P、1920为1080P、2560为2K、20000为原画
Get /api2/getm3u8?type=320&id=id&token=token

response {
    success: 1|0|2,
    message,
    hd,  //返回分辨率
    m3u8
}

API积分点播视频

Post /api2/buymovie

data {
    id,
    token
}

response {
    success,
    message
}

切换用户关注标签的接口,若关注则取关,若没关注则关注

Post /api2/toggleuserfollow

data {
    tag,
    token
}

response {
    success,
    message
}

此套接口做了严格的数据检验,所以可放心使用,包含了从数据展示,获取,到购买,支付接口,积分购买,下载,积分点播等所有方方面面,可自行测试。