好久没有写博客了,最近升级做爸爸了,很开心的事情。内心又很忧郁,怎么能给媳妇和儿子一个相对好的物质经济条件。现在什么都没有的我,至少还有你们。

话不多说了,这篇博客还是和自己用vue做web app相关。

因为自己没有这些音乐 MV相关的资源,借人家的当然是捷径。也希望能帮助那些和我有同样需求的人。

qq音乐网址: https://y.qq.com

所有先关的API已经简单封装到 https://github.com/xiangwenhu/vbox/blob/master/src/api

大约20多个,呵呵哒.

基础的地址信息配置

  1. const COMMON_PARAMS = 'g_tk=5381&loginUin=0&hostUin=0&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0'
  2. // const C_Y_QQ_COM = 'https://c.y.qq.com'
  3. const C_Y_QQ_COM = '/cyqq'
  4.  
  5. /* 歌手 */
  6. // 搜索歌手
  7. const URL_SEARCH_SINGER = `${C_Y_QQ_COM}/v8/fcg-bin/v8.fcg?channel=singer&page=list&format=json&${COMMON_PARAMS}`
  8. // 相似歌手
  9. const URL_SINGER_SIM = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_v8_simsinger.fcg?utf8=1&format=jsonp&${COMMON_PARAMS}`
  10. // 歌手的歌曲
  11. const URL_SINGER_SONGS = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_v8_singer_track_cp.fcg?format=json&order=listen&songstatus=1&${COMMON_PARAMS}`
  12. // 歌手的专辑
  13. const URL_SINGER_ALBUM = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_v8_singer_album.fcg?format=json&order=time&${COMMON_PARAMS}`
  14. // 歌手描述
  15. const URL_SINGER_DESC = `${C_Y_QQ_COM}/splcloud/fcgi-bin/fcg_get_singer_desc.fcg?utf8=1&outCharset=utf-8&format=xml`
  16.  
  17. /* 专辑 */
  18. // 专辑的分类信息和默认首页
  19. const URL_ALBUM_LIBRARY = `${C_Y_QQ_COM}/v8/fcg-bin/album_library?${COMMON_PARAMS}&format=json`
  20. // 专辑信息
  21. const URL_ALBUM_INFO = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_v8_album_info_cp.fcg?${COMMON_PARAMS}`
  22.  
  23. /* 搜索 */
  24. // 热门搜索关键字
  25. const URL_HOT_KEY = `${C_Y_QQ_COM}/splcloud/fcgi-bin/gethotkey.fcg?${COMMON_PARAMS}`
  26. // 搜索结果-单曲
  27. const URL_SEARCH_CLIENT_SONG = `${C_Y_QQ_COM}/soso/fcgi-bin/client_search_cp?format=json&ct=24&qqmusic_ver=1298&new_json=1&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&${COMMON_PARAMS}`
  28. // 搜索结果-mv
  29. const URL_SEARCH_CLIENT_MV = `${C_Y_QQ_COM}/soso/fcgi-bin/client_search_cp?ct=24&format=json&qqmusic_ver=1298&remoteplace=txt.yqq.mv&aggr=0&catZhida=1&lossless=0&sem=1&t=12&${COMMON_PARAMS}`
  30. // 搜素专辑
  31. const URL_SEARCH_CLIENT_ALBUM = `${C_Y_QQ_COM}/soso/fcgi-bin/client_search_cp?ct=24&format=json&qqmusic_ver=1298&remoteplace=txt.yqq.album&aggr=0&catZhida=1&lossless=0&sem=10&t=8&${COMMON_PARAMS}`
  32. // 搜索后的智能搜索
  33. const URL_SEARCH_SMARTBOX = `${C_Y_QQ_COM}/splcloud/fcgi-bin/smartbox_new.fcg?is_xml=0&format=json&${COMMON_PARAMS}`
  34.  
  35. /* 排行 */
  36. // 排行榜分类
  37. const URL_TOPLIST_OPT = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_v8_toplist_opt.fcg?page=index&format=html&tpl=macv4&v8debug=1`
  38. // 某个排行的列表
  39. const URL_TOPLIST_LIST = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_v8_toplist_cp.fcg?tpl=3&page=detail&type=top&${COMMON_PARAMS}`
  40.  
  41. // 节目的vkey
  42. const URL_VKEY = `${C_Y_QQ_COM}/base/fcgi-bin/fcg_music_express_mobile3.fcg?cid=205361747&uin=0&guid=488797456&${COMMON_PARAMS}`
  43.  
  44. /* 歌单 */
  45. // 歌单的分类
  46. const URL_DISS_TAG_CONF = `${C_Y_QQ_COM}/splcloud/fcgi-bin/fcg_get_diss_tag_conf.fcg?format=json&${COMMON_PARAMS}`
  47. // 按照分类查询歌单
  48. const URL_DISS_BYTAG = `${C_Y_QQ_COM}/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg?format=json&sin=0&ein=29&${COMMON_PARAMS}`
  49. // 获取某个歌单的内容
  50. const URL_DISS_INFO = `${C_Y_QQ_COM}/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&format=json&${COMMON_PARAMS}`
  51. // 相似歌单
  52. const URL_DISS_SIMILAR = `${C_Y_QQ_COM}/musichall/fcgi-bin/fcg_similar_recomm.fcg?recomtype=2&format=json`
  53.  
  54. /* MV */
  55. // MV查询 taglist=1 有标签
  56. const URL_MV_BYTAG = `${C_Y_QQ_COM}/v8/fcg-bin/getmv_by_tag?utf8=1&otype=json&format=json&${COMMON_PARAMS}`
  57. // MV信息
  58. const URL_MV_INFO = `${C_Y_QQ_COM}/mv/fcgi-bin/fcg_getmvinfo.fcg?format=json&${COMMON_PARAMS}`
  59. // 相似MV
  60. const URL_MV_SIMILAR = `${C_Y_QQ_COM}/mv/fcgi-bin/fcg_getmvlist.fcg?reqtype=1&cid=205360328&format=json&${COMMON_PARAMS}`
  61.  
  62. // 首页推荐
  63. const URL_RRCOM = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_first_yqq.fcg?format=json&tpl=v12&page=other&${COMMON_PARAMS}`
  64.  
  65. /* 歌曲 */
  66. // 歌曲歌词
  67. const URL_SONG_LYR = `${C_Y_QQ_COM}/lyric/fcgi-bin/fcg_query_lyric_new.fcg?${COMMON_PARAMS}&format=json`
  68. // 歌曲信息TO::
  69. const URL_SONG_INFO = `${C_Y_QQ_COM}/v8/fcg-bin/fcg_play_single_song.fcg?songmid=0016IcYd27ZJWw&tpl=yqq_song_detail&format=json&g_tk=1885845528&${COMMON_PARAMS}`
  70. // 歌曲所在的专辑
  71. const URL_SONG_ALBUM = `${C_Y_QQ_COM}/rcmusic/fcgi-bin/fcg_iphone_music_rec_songlist?cid=338&ct=20&uin=10000&&g_tk=1885845528&${COMMON_PARAMS}`
  72.  
  73. const MusicJsonCallback = function (data) {
  74. return data
  75. }
  76.  
  77. global.MusicJsonCallback = MusicJsonCallback
  78.  
  79. export default {
  80. URL_SEARCH_SINGER,
  81. URL_SINGER_SIM,
  82. URL_SINGER_SONGS,
  83. URL_SINGER_ALBUM,
  84. URL_SINGER_DESC,
  85. URL_ALBUM_LIBRARY,
  86. URL_ALBUM_INFO,
  87. URL_HOT_KEY,
  88. URL_SEARCH_CLIENT_SONG,
  89. URL_SEARCH_CLIENT_MV,
  90. URL_SEARCH_CLIENT_ALBUM,
  91. URL_SEARCH_SMARTBOX,
  92. URL_TOPLIST_OPT,
  93. URL_TOPLIST_LIST,
  94. URL_VKEY,
  95. URL_DISS_TAG_CONF,
  96. URL_DISS_BYTAG,
  97. URL_DISS_INFO,
  98. URL_DISS_SIMILAR,
  99. URL_MV_BYTAG,
  100. URL_MV_INFO,
  101. URL_MV_SIMILAR,
  102. URL_RRCOM,
  103. URL_SONG_LYR,
  104. URL_SONG_INFO,
  105. URL_SONG_ALBUM
  106. }

具体请求Other

  1. import URLConsts from './URLConsts'
  2.  
  3. export default {
  4. // 热搜关键字
  5. hotkey: function () {
  6. let url = `${URLConsts.URL_HOT_KEY}`
  7. return fetch(url)
  8. },
  9. /**
  10. * 排行分类
  11. */
  12. topList() {
  13. let url = URLConsts.URL_TOPLIST_OPT
  14.  
  15. return fetch(url).then(res => {
  16. return res.text()
  17. }).then(content => {
  18. function jsonCallback(data) {
  19. return JSON.stringify(data)
  20. }
  21. return eval(content)
  22. })
  23. },
  24. /**
  25. * 排行榜详细数据
  26. * @param {*} topid id
  27. * @param {*} song_begin 开始
  28. * @param {*} song_num 结束
  29. */
  30. topListList(topid = 4, song_begin = 0, song_num = 30) {
  31. let today = new Date(), yes = new Date(today.getTime() - 1000 * 60 * 60 * 24),
  32. date = yes.getFullYear() + '-' + ((yes.getMonth() + 1) + '').padStart(2, '0') + '-' + (yes.getDate() + '').padStart(2, '0'),
  33. url = `${URLConsts.URL_TOPLIST_LIST}&topid=${topid}&date=${date}&song_begin=${song_begin}&song_num=${song_num}`
  34. return fetch(url)
  35. },
  36.  
  37. /**
  38. * 歌曲的vkey
  39. * @param {*} songmid 歌曲id
  40. */
  41. vkey(songmid) {
  42. let url = `${URLConsts.URL_VKEY}&songmid=${songmid}&filename=C400${songmid}.m4a`
  43. return fetch(url)
  44. },
  45. /**
  46. * 歌单的分类
  47. */
  48. dissTagConf() {
  49. return fetch(URLConsts.URL_DISS_TAG_CONF)
  50. },
  51.  
  52. /**
  53. * 按照分类查询歌单
  54. * @param {*} categoryId
  55. * @param {*} sortId 排序 5 推荐 / 2 最新
  56. * 返回结果 dissid 为歌单编号
  57. */
  58. dissByTag(categoryId = 10000000, sortId = 5) {
  59. let url = `${URLConsts.URL_DISS_BYTAG}&categoryId=${categoryId}&sortId=${sortId}&rnd=${Math.random().toFixed(16)}`
  60. return fetch(url, {
  61. method: 'POST',
  62. headers: {
  63. 'Accept': 'application/json',
  64. 'Content-Type': 'application/json'
  65. },
  66. body: JSON.stringify({
  67. headers: {
  68. referer: 'https://y.qq.com/portal/playlist.html',
  69. 'Accept': 'application/json',
  70. 'Content-Type': 'application/json'
  71. }
  72. })
  73. })
  74. },
  75. /**
  76. * 按照id获取歌单信息
  77. * @param {*} disstid 歌单id
  78. */
  79. dissInfo(disstid) {
  80. let url = `${URLConsts.URL_DISS_INFO}&disstid=${disstid}`
  81. return fetch(url)
  82. },
  83.  
  84. /**
  85. * 相似歌单
  86. * @param {*} dissid 歌单id
  87. * @param {*} maxnum 最大返回条数
  88. */
  89. dissSimilar(dissid, maxnum = 6) {
  90. let url = `${URLConsts.URL_DISS_SIMILAR}&dissid=${dissid}&maxnum=${maxnum}&_=${new Date().getTime()}`
  91. return fetch(url)
  92. },
  93.  
  94. // 首页推荐
  95. RecomList() {
  96. let url = `${URLConsts.URL_RRCOM}&rnd=${(Math.random() * Math.pow(10, 16)).toFixed(0)}`
  97. return fetch(url)
  98. }
  99.  
  100. }

 搜索Search

  1. import URLConsts from './URLConsts'
  2.  
  3. export default {
  4. // 歌手搜索
  5. singers: function (type = 'all_all', hot = 'all', pagenum = 1, pagesize = 100) {
  6. let url = `${URLConsts.URL_SEARCH_SINGER}&key=${type}_${hot}&pagenum=${pagenum}&pagesize=${pagesize}`
  7. return fetch(url)
  8. },
  9. // 专辑信息
  10. albumInfo: function (albummid) {
  11. let url = `${URLConsts.URL_ALBUM_INFO}&albummid=${albummid}`
  12. return fetch(url)
  13. },
  14. /**
  15. * @param {*w} 关键字
  16. * @param {*remoteplace}类型 txt.yqq.mv/txt.yqq.album/txt.yqq.center
  17. * @param {*p} 页码
  18. * @param {*n} 页大小
  19. * 返回结果:zhida.type 2:专辑 0:歌曲 1: 歌手
  20. */
  21. searchSongs(w, p = 1, n = 30) {
  22. let url = `${URLConsts.URL_SEARCH_CLIENT_SONG}&remoteplace=txt.yqq.center&w=${encodeURIComponent(w)}&p=${p}&n=${n}`
  23. return fetch(url)
  24. },
  25. /**
  26. * 执行搜索后搜索mv
  27. * @param {*} w 关键字
  28. * @param {*} p 页面
  29. * @param {*} n 特大小
  30. */
  31. searchMVs(w, p = 1, n = 30) {
  32. let url = `${URLConsts.URL_SEARCH_CLIENT_MV}&w=${encodeURIComponent(w)}&p=${p}&n=${n}`
  33. return fetch(url)
  34. },
  35. // 执行搜索后搜索专辑
  36. searchAlbums(w, p = 1, n = 30) {
  37. let url = `${URLConsts.URL_SEARCH_CLIENT_ALBUM}&w=${encodeURIComponent(w)}&p=${p}&n=${n}`
  38. return fetch(url)
  39. },
  40.  
  41. /**
  42. * 执行搜索后的智能搜索
  43. * @param {*} key 关键字
  44. */
  45. smartBox(key) {
  46. let url = `${URLConsts.URL_SEARCH_SMARTBOX}&key=${encodeURIComponent(key)}`
  47. return fetch(url)
  48. },
  49.  
  50. /**
  51. *
  52. * @param {*} cmd firstpage 返回分类信息 /get_album_info 不返回分类信息
  53. * @param {*} page 页码
  54. * @param {*} pagesize 页大小
  55. * @param {*} sort 1 最新 / 2 最热
  56. * @param {*} language 语种
  57. * @param {*} genre 流派
  58. * @param {*} year 年代
  59. * @param {*} pay 价格 1 免费 / 2 免费
  60. * @param {*} type 类别 专辑/演唱会等
  61. * @param {*} company 唱片公司 华纳唱片/环球唱片等
  62. */
  63. albumLib(cmd = 'firstpage', page = 0, pagesize = 20, sort = 1, language = -1, genre = 0, year = 1, pay = 0, type = -1, company = -1) {
  64. let url = `${URLConsts.URL_ALBUM_LIBRARY}&cmd=${cmd}&page=${page}&pagesize=${pagesize}&sort=${sort}&language=${language}&genre=${genre}&year=${year}&pay=${pay}&type=${type}&company=${company}`
  65. return fetch(url)
  66. },
  67.  
  68. /**
  69. * 通过标签搜索MV
  70. * @param {*} area 区域
  71. * @param {*} tag 类型 官方版/舞蹈等
  72. * @param {*} year 年份
  73. * @param {*} type 排序 2最热/1最新
  74. * @param {*} taglist 是否带标签, 1带/0不带
  75. * @param {*} pageno 页码
  76. * @param {*} pagecount 也大小
  77. */
  78. mvByTag(area = 0, tag = 0, year = 0, type = 2, taglist = 1, pageno = 0, pagecount = 20) {
  79. let url = `${URLConsts.URL_MV_BYTAG}&area=${area}&tag=${tag}&year=${year}&type=${type}&taglist=${taglist}&pageno=${pageno}&pagecount=${pagecount}&_=${Math.random().toFixed(16)}`
  80. return fetch(url)
  81. },
  82.  
  83. /**
  84. * 获得MV的信息
  85. * @param {*} vid mv id
  86. */
  87. mvInfo(vid) {
  88. let url = `${URLConsts.URL_MV_INFO}&vid=${vid}`
  89. return fetch(url).then(res => res.text()).then(content => {
  90. return eval(content)
  91. })
  92. },
  93.  
  94. /**
  95. * 相似MV
  96. *@param {*} vid mv id
  97. */
  98. mvSimilar(vid) {
  99. let url = `${URLConsts.URL_MV_SIMILAR}&vid=${vid}`
  100. return fetch(url)
  101. },
  102.  
  103. /**
  104. * 获取歌词信息 decodeURIComponent(escape(window.atob('sds==' )))
  105. * @param {*} songmid 歌曲id
  106. */
  107. lyric(songmid) {
  108. let url = `${URLConsts.URL_SONG_LYR}&songmid=${songmid}&pcachetime=${new Date().getTime()}`
  109. return fetch(url, {
  110. method: 'POST',
  111. headers: {
  112. 'Accept': 'application/json',
  113. 'Content-Type': 'application/json'
  114. },
  115. body: JSON.stringify({
  116. headers: {
  117. referer: 'https://y.qq.com/portal/player.html'
  118. }
  119. })
  120. }).then(res => res.text()).then(content => eval(content))
  121. },
  122. // 歌曲信息
  123. songInfo(songmid) {
  124. let url = `${URLConsts.URL_SONG_INFO}&songmid=${songmid}`
  125. return fetch(url)
  126. },
  127. // 歌曲所在的专辑
  128. songAlbums(songid) {
  129. let url = `${URLConsts.URL_SONG_ALBUM}&songid=${songid}`
  130. return fetch(url)
  131. }
  132.  
  133. }

  歌手相关Singer

  1. import URLConsts from './URLConsts'
  2.  
  3. export default class Singer {
  4.  
  5. constructor(singermid) {
  6. // 歌手id
  7. this.singermid = singermid
  8. }
  9.  
  10. // 相似歌手
  11. simsinger(start = 0, num = 5) {
  12. let url = `${URLConsts.URL_SINGER_SIM}&singer_mid=${this.singermid}&start=${start}&num=${num}`
  13. return fetch(url)
  14. }
  15.  
  16. // 歌曲
  17. songs(begin = 0, num = 30) {
  18. let url = `${URLConsts.URL_SINGER_SONGS}&singermid=${this.singermid}&begin=${begin}&num=${num}`
  19. return fetch(url)
  20. }
  21.  
  22. // 专辑
  23. albums(begin = 0, num = 30) {
  24. let url = `${URLConsts.URL_SINGER_ALBUM}&singermid=${this.singermid}&begin=${begin}&num=${num}`
  25. return fetch(url)
  26. }
  27.  
  28. // 歌手描述
  29. desc() {
  30. let r = new Date().getTime()
  31. let url = `${URLConsts.URL_SINGER_DESC}&singermid=${this.singermid}&r=${r}`
  32. return fetch(url, {
  33. method: 'POST',
  34. headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
  35. body: JSON.stringify({
  36. headers: {
  37. referer: 'https://c.y.qq.com/xhr_proxy_utf8.html',
  38. 'Host': 'y.qq.com',
  39. 'Origin': 'https://y.qq.com'
  40. }
  41. })
  42. })
  43. }
  44. }

  

 

 

QQ音乐API-借他人之力实现我的音乐盒的更多相关文章

  1. 【QQ音乐Api】移花接木 打造自己的音乐电台

    最近突发奇想想做个在线音乐小网页.需求很简单,如下 搜索歌曲 或 歌手 在线播放音乐 借用qq 或者 百度的 音乐接口 需求明确那就直接动手了 我首先尝试的百度音乐,但是不能在线播放(提示forbid ...

  2. QQ音乐API

    今天分享的是QQ音乐API 搜索歌曲API:http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0& amp;n={2}&am ...

  3. QQ音乐API分析记录

    我一直是QQ音乐的用户,最近想做一个应用,想用QQ音乐的API,搜索了很久无果,于是就自己分析QQ音乐的API. 前不久发现QQ音乐出了网页版的,是Flash的,但是,我用iPhone打开这个链接的时 ...

  4. 调皮的QQ音乐API:修复无法获取歌单

    上一篇完整版:http://www.cnblogs.com/TwilightLemon/p/7076938.html QQ音乐的API真是太调皮了,获取歌单的API又更换了好多次,喵喵喵 旧版API( ...

  5. 网易云和QQ音乐api

    最近有点闲,听歌的时候遇见好听的想下载却遇到尴尬的事,版权!唉,知道我干什么了吧 网易云音乐 获取排行榜中的歌曲列表 https://music.163.com/discover/toplist?id ...

  6. 使用浏览器抓取QQ音乐接口(歌曲篇)

    前言 前面我们获取了歌曲的排行榜的数据,我们现在需要实现歌曲播放 前面我们写了一段函数来得到了回调的数据,现在我们需要使用这一段数据,来实现播放歌曲 完整代码 <!DOCTYPE html> ...

  7. QQ音乐的各种相关API

    QQ音乐的各种相关API 分类: oc2014-01-29 15:34 2676人阅读 评论(2) 收藏 举报 基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证 ...

  8. 音乐API之QQ音乐

    欢迎大家来到我的博客,这是我在博客园写的第一篇文章,但不会是最后一篇,希望大家多多关注我,支持我哦!正文开始,今天我们要讲的是QQ音乐的API,都是来源于官方的地址,以前我也想写一个,但百度谷歌之后都 ...

  9. QQ音乐无损歌曲接口api

    1.打开QQ音乐官网 y.qq.com 2.选择你要的歌曲,进入后查看网址,以虎口脱险这个歌曲为例:http://y.qq.com/#type=song&mid=000Ib8E71sUNi7 ...

随机推荐

  1. QWT与QT Designer

    QWT是一套非常不错的开发库,它能结合QT开发,做出非常好的曲线,刻度,表盘等效果来.  qwt的下载以及动态链接库的编译等这里就不做介绍了.在源码目录下可以找到designer目录,其中有插件的源码 ...

  2. java 内存数据存储

    近期在学习的过程中,越发认为基础知识的重要性,so 恶补一下 直接上图上演示样例: 图一:

  3. 1692: [Usaco2007 Dec]队列变换|后缀数组|贪心

    将字符串翻转后接到原串的后面,中间加一个分隔符,每次都贪心选择rankrank小的那个 事实上就是练习一发后缀数组的模板 #include<algorithm> #include<i ...

  4. Linux批量杀死包括某个keyword的进程

    ps -ef|grep ./amplxe-gui|grep -v grep|cut -c 9-15|xargs kill -9 批量杀死包括keyword"./amplxe-gui" ...

  5. intellij安装lombok插件,解决注解@Slf4j注入后找不到变量log

    1.进入设置 2.搜索插件 3.安装

  6. Linux下查看Go语言软件运行情况

    在Linux下,使用"jps"可以查看用Java语言写的软件的运行情况,如果要查看GO语言写的软件的运行情况,可以使用"gops",但这不是系统自带的,需要进行 ...

  7. while,until

    while ] 注释:中括号写的条件判断式中不能用<.=.>这类符号,要用-lt.-eq.-gt这类符号,且变量前要用$来取值 do sum=$(($sum+$i)) i=$(($i+)) ...

  8. loadrunner设置分压机 压力测试

    压力机设置分压机使用场景: 当本地主机内存较小,运行速度较慢,压力较大等多种需求场景下,可以使用分压机. 一.将另一台机器设置为压力机 1,开始菜单找到HP LoadRunner-->Advan ...

  9. Mybatis-Oralce批量插入方法

    mybatis-Oralce 中批量插入方法一:<insert id="insertBatchSelective" parameterType="java.util ...

  10. Python模块之pickle(列表,字典等复杂数据类型与二进制文件的转化)

    1.pickle模块简介 The pickle module implements binary protocols for serializing and de-serializing a Pyth ...