Skip to content

教程:创建源

cf edited this page Jan 4, 2024 · 5 revisions

源api函数介绍

所有函数均为async异步函数。源api函数的传入参数和传出参数均为字符串。如果传出参数是对象,需要先JSON.stringfy转换为字符串。

图片源

你可以在 这里 找到模板代码。

1. recommendAlbums

推荐相册API,默认调用此接口并在页面显示。

传入参数

  • pageNum 页数,从1开始,String格式

传出参数

  • JSON.stringfy(resultAlbums)的结果 resultAlbums对象格式如下:
var resultAlbums = {
  currPage: 1, //当前页数
  totalPage: 5, //总页数
  albums: [
    {
      id: "dhs89adgh", //必传项
      name: "相册1", //相册名称,可不传
      coverUrl: "http://xxx.jpg", //封面url,可不传
      coverHeaders: { "user-agent": "xxx" }, //封面url的headers,可不传
      tags: ["历史", "教育"], //可不传
      title: "我的相册1", //相册标题,可不传
      description: "这是我的第一个相册", //相册描述,可不传
      creator: "buyaobushuo", //创建者,可不传
      createAt: "2023-01-01", //创建时间,可不传
      detailPageUrl: "http://xxx", //详情页url,可不传
      extra: {}, //可添加自定义选项
    },
  ],
};

2. searchAlbums

搜索相册API,搜索相册的结果。

传入参数

  • pageNum 页数,从1开始,String格式

  • keyword 搜索的关键词,String格式

传出参数

  • JSON.stringfy(resultAlbums)的结果 resultAlbums对象格式如下:
var resultAlbums = {
  currPage: 1, //当前页数
  totalPage: 5, //总页数
  albums: [
    {
      id: "dhs89adgh", //必传项
      name: "相册1", //相册名称,可不传
      coverUrl: "http://xxx.jpg", //封面url,可不传
      coverHeaders: { "user-agent": "xxx" }, //封面url的headers,可不传
      tags: ["历史", "教育"], //可不传
      title: "我的相册1", //相册标题,可不传
      description: "这是我的第一个相册", //相册描述,可不传
      creator: "buyaobushuo", //创建者,可不传
      createAt: "2023-01-01", //创建时间,可不传
      detailPageUrl: "http://xxx", //详情页url,可不传
      extra: {}, //可添加自定义选项
    },
  ],
};

3. pictures

查看相册中的图片。

传入参数

  • pageNum 页数,从1开始,String格式

  • album JSON.stringfy(album)的结果,album对象参考resultAlbumsalbums列表中的对象。

传出参数

  • JSON.stringfy(resultPictures)的结果 resultPictures对象格式如下:
var resultPictures = {
  currPage: 1,
  totalPage: 5,
  pictures: [
    {
      url: "http://xxx.jpg", //图片地址,必传项
      headers: { "user-agent": "xxx" }, //图片headers,可不传
      width: 1024, //宽度,可不传
      height: 768, //高度,可不传
      size: "3.5M", //尺寸,可不传
      tags: ["历史", "军事"], //类型,可不传
    },
  ],
};

音乐源

你可以在 这里 找到模板代码。

1. recommendPlaylists

推荐歌单API,默认调用此接口并在页面显示。

传入参数

  • pageNum 页数,从1开始,String格式

传出参数

  • JSON.stringfy(resultPlaylists)的结果 resultPlaylists对象格式如下:
var resultPlaylists = {
  currPage: 1,
  totalPage: 5,
  playlists: [
    {
      id: "dhs89adgh", //必传项
      name: "歌单1", //歌单名称,可不传
      coverUrl: "http://xxx.jpg", //封面,可不传
      coverHeaders: { "user-agent": "xxx" }, //封面的headers,可不传
      creator: "buyaobushuo", //创建者,可不传
      createAt: "2023-01-01", //创建时间,可不传
      introduce: "歌单介绍", //介绍,可不传
      numMusics: 10, //歌曲数量,可不传
      extra: {}, //可添加自定义选项
    },
  ],
};

2. recommendMusics

推荐音乐API,默认调用此接口并在页面显示。

传入参数

  • pageNum 页数,从1开始,String格式

传出参数

  • JSON.stringfy(resultMusics)的结果 resultMusics对象格式如下:
var resultMusics = {
  currPage: 1,
  totalPage: 1,
  musics: {
    id: "1212", //必传项
    musicName: "不能说的秘密", //歌曲名称,必传项
    singer: "周杰伦", //歌手,必传项
    quality: ["320kb"], //歌曲质量,获取播放地址时可能会用到,可不传
    coverUrl: "http://xxx.jpg", //封面,可不传
    coverHeaders: { referer: "xxx" }, //封面的headers,可不传
    photoUrl: "http://xxx.jpg", // photoUrl比coverUrl要更清晰,可不传
    photoHeaders: { referer: "xxx" },  // 可不传
    extra: {}, //可添加自定义选项
  },
};

3. searchPlaylists

搜索歌单API。

传入参数

  • pageNum 页数,从1开始,String格式

  • keyword 搜索的关键词,String格式

传出参数

  • JSON.stringfy(resultPlaylists)的结果

4. searchMusics

搜索歌曲API。

传入参数

  • pageNum 页数,从1开始,String格式

  • keyword 搜索的关键词,String格式

传出参数

  • JSON.stringfy(resultMusics)的结果

5. playlistMusics

查看歌单中的音乐API。

传入参数

  • pageNum 页数,从1开始,String格式

  • playlist JSON.stringfy(playlist)的结果,playlist对象参考resultPlaylistsplaylists列表中的对象。

传出参数

  • JSON.stringfy(resultMusics)的结果

6. musicUrl

音乐播放地址API。

传入参数

  • music JSON.stringfy(music)的结果,music对象参考resultMusicsmusics列表中的对象。

  • quality null或字符串。如果是字符串,是quality列表中的某个值。

传出参数

  • JSON.stringfy(ResultMusicUrl)的结果 resultMusics对象格式如下:
var ResultMusicUrl= {
    url: "http://xxx", //音乐的播放链接
    headers: { referer: "xxx" }, //headers,可不传
};

7. musicLyric

获取音乐的歌曲API。

传入参数

  • music JSON.stringfy(music)的结果,music对象参考resultMusicsmusics列表中的对象。

传出参数

  • 歌词字符串

8. musicComments

获取音乐的评论API。

传入参数

  • pageNum 页数,从1开始,String格式

  • music JSON.stringfy(music)的结果,music对象参考resultMusicsmusics列表中的对象。

传出参数

  • JSON.stringfy(resultComments)的结果 resultComments对象格式如下:

注:歌曲评论一般有热评,可在pageNum=1时获取并传出

var resultComments = {
  currPage: 1,
  totalPage: 1,
  comments: {
    userName: "小呆", // 用户名,必传
    content: "好好听!", //评论,必传
    createTime: "2023-01-01", //创建时间,可不传
    photoUrl: "http://xxx.jpg", //评论附带的图片,可不传
    photoHeaders: {}, //图片headers,可不传
    thumbUp: 22, //点赞数,可不传
    replies: [], //当前评论的回复列表,格式同当前comment,可不传
  },
};

小说源

你可以在 这里 找到模板代码。

1. recommendNovels

推荐书籍API,默认调用此接口并在页面显示。

传入参数

  • pageNum 页数,从1开始,String格式

传出参数

  • JSON.stringfy(resultNovels)的结果 resultNovels对象格式如下:
var resultNovels = {
  novels: {
    id: "123", //必传项
    name: "仙逆", //书名,必传项
    author: "耳根", //作者,可不传
    coverUrl: "http://xxx.jpg", //封面地址,可不传
    coverHeaders: {}, //封面headers,可不传
    size: "10万字", //书籍大小/字数,可不传
    latestUpdate: "2023-01-01", //最新更新时间,可不传
    tags: ["玄幻"], //类型,可不传
    introduce: "仙逆", //介绍,可不传
    readingChapterId: "100", //正在阅读章节的id,可不传,不需要传
    readingDatetime: "2023-01-01", //最新阅读时间,可不传,不需要传
    extra: {}, //可添加自定义选项
  },
  currPage: 1,
  totalPage: 1,
};

2. searchNovels

搜索书籍API。

传入参数

  • pageNum 页数,从1开始,String格式

  • keyword 搜索的关键词,String格式

传出参数

  • JSON.stringfy(resultNovels)的结果。

3. novelDetail

查看书籍详情API。

传入参数

  • novel JSON.stringfy(novel)的结果,novel对象参考resultNovelsnovels列表中的对象。

传出参数

  • JSON.stringfy(resultChapters)的结果。resultChapters对象格式如下:
var resultChapters = {
  chapters: [
    {
      id: "1", //章节id 必传
      chapterName: "第一章", //章节名称 必传
      chapterUrl: "http://xxx", //章节地址 可不传
    },
  ], //所有章节
  introduce: "介绍", //介绍 可不传
  author: "作者", //作者 可不传
  latestUpdate: "2023-01-01", //最新更新时间 可不传
  tags: ["玄幻"], //类型 可不传
  size: "1百万字", //大小 可不传
  extra: {}, //可添加自定义选项 可不传
};

4. novelContent

书籍某一章节的内容API。

传入参数

  • novel JSON.stringfy(novel)的结果,novel对象参考resultNovelsnovels列表中的对象。

  • chapter JSON.stringfy(chapter)的结果,chapter对象参考resultChapterschapters列表中的对象。

传出参数

  • 内容字符串

影视源

你可以在 这里 找到模板代码。

1. recommendVideos

推荐影视API,默认调用此接口并在页面显示。

传入参数

  • pageNum 页数,从1开始,String格式

传出参数

  • JSON.stringfy(resultVideos)的结果 resultVideos对象格式如下:
var resultVideos = {
  currPage: 1, //当前页数
  totalPage: 5, //总页数
  videos: [
    {
      id: "12", // 必传
      videoName: "名称", // 影视名称,必传
      coverUrl: "http://xxx.jpg", // 封面url,可不传
      coverHeaders: {}, // 封面headers,可不传
      detailPageUrl: "http://xxx", // 详情页url,可不传
      actors: "1,2,3", // 演员,可不传
      introduce: "xxx", // 介绍,可不传
      tags: ["tag1", "tag2"], // 类型,可不传
      latestUpdate: "2023-01-01", // 最新更新时间,可不传
      extra: {}, // 额外信息
    },
  ],
};

2. searchVideos

搜索影视API。

传入参数

  • pageNum 页数,从1开始,String格式

  • keyword 搜索的关键词,String格式

传出参数

  • JSON.stringfy(resultVideos)的结果。

3. videoDetail

影视详情API。

传入参数

  • video JSON.stringfy(video)的结果,video对象参考resultVideosvideos列表中的对象。

传出参数

  • JSON.stringfy(videoDetail)的结果。
var videoDetail = {
  seasons: [
    {
      seasonName: "第一季", //名称,必传
      seasonUrl: "http://xxx", //地址,可不传
      episodes: [
        {
          name: "第一集", //名称,必传
          url: "http://xxx", //播放地址,必传
          headers: {}, //headers,可不传
          audioTrack: "http://xxx.mp3", //音频的播放地址,可不传
        },
      ], //剧集列表,这里可以为空,在获取seasonDetail时再获取
    },
    {
      seasonName: "第二季",
      seasonUrl: "http://xxx",
      episodes: [], //这里可以为空,在获取episodeDetail时再获取
    },
  ], // 必传
  actors: "1,2,3", //演员,可不传
  introduce: "xxx", //介绍, 可不传
  tags: [], //类型, 可不传
  latestUpdate: "2023-01-01", //最新更新时间, 可不传
  extra: {}, // 可不传
};

4. seasonDetail

剧集详情API。

传入参数

  • video JSON.stringfy(video)的结果,video对象参考resultVideosvideos列表中的对象。

  • videoDetail JSON.stringfy(videoDetail)的结果。

  • season JSON.stringfy(season)的结果,season对象参考resultSeasonsseasons列表中的对象。

传出参数

  • JSON.stringfy(season)的结果。
var season = {
  seasonName: "第一季", //名称,必传
  seasonUrl: "http://xxx", //地址,可不传
  episodes: [
    {
      name: "第一集", //名称,必传
      url: "http://xxx", //地址,可以是页面地址,然后在`episodeDetail`中获取具体播放地址;必传
      headers: {}, //headers,可不传
      audioTrack: "http://xxx.mp3", //音频的播放地址,可不传
    },
  ], 
};

5. episodeDetail

某一集的详情API。

传入参数

  • episode JSON.stringfy(episode)的结果,episode对象参考resultEpisodesepisodes列表中的对象。

传出参数

  • JSON.stringfy(episode)的结果。episode对象参考resultEpisodesepisodes列表中的对象。

网盘源

你可以在 这里 找到模板代码。

1. recommendSources

推荐网盘资源API,默认调用此接口并在页面显示。

传入参数

  • pageNum 页数,从1开始,String格式

传出参数

  • JSON.stringfy(resultNetDiskSources)的结果 resultNetDiskSources对象格式如下:
var resultNetDiskSources = {
  currPage: 1, //当前页数
  totalPage: 5, //总页数
  sources: [
    {
      id: "id1", //id,必传
      title: "资源1", //标题,必传
      detailUrl: "http://xxx", //详情页地址,必传
      introduce: "介绍", //介绍,可不传
      imageList: ["http://x.jpg"], //介绍图片的列表,可不传
      tags: ["影视"], //类型,可不传
      datetime: "2023-01-01", //创建时间,可不传
      readNum: 6, //阅读量,可不传
      commentNum: 2, //评论量,可不传
      thumbNum: 1, //点赞量,可不传
      extra: {}, //额外信息,可不传
    },
  ],
};

2. searchSources

搜索网盘资源API。

传入参数

  • pageNum 页数,从1开始,String格式

传出参数

  • JSON.stringfy(resultNetDiskSources)的结果。

预置函数介绍

为了更方便地实现一些功能,在编写源时,除了js的原生方法,你还可以直接使用下面的一些对象方法。

fetch

可以使用fetch命令发送网络请求

var url = "";
var response = await fetch(url);
var text = await response.text();

NodeHtmlParser

NodeHtmlParser使用的是node-html-parser库,用于页面解析

var root = NodeHtmlParser.parse(text);
var pageElements = root.querySelectorAll("ul.joe_pagination > li > a");

CryptoJS

CryptoJS使用的是crypto-js库,用于加密解密

content = CryptoJS.AES.decrypt(content, "key", {
  iv: "iv",
}).toString(CryptoJS.enc.Latin1);

windowLog

为了更方便的进行调试,可以使用windowLog方法进行日志输出

await windowLog('some log');

bigInt

bigInt类型