欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python無損音樂搜索引擎實現代碼

系統 1979 0

Python無損音樂搜索引擎實現代碼_第1張圖片 ?

研究了一段時間酷狗音樂的接口,完美破解了其vip音樂下載方式,想著能更好的追求開源,故寫下此篇文章,本文僅供學習參考。雖然沒什么技術含量,但都是自己一點一點碼出來,一點一點抓出來的。

一、綜述:

根據酷狗的搜索接口以及無損音樂下載接口,做出爬蟲系統。采用flask框架,前端提取搜索關鍵字,后端調用爬蟲系統采集數據,并將數據前端呈現;

運行環境:windows/linux? python2.7

二、爬蟲開發:

通過抓包的方式對酷狗客戶端進行抓包,抓到兩個接口:

1、搜索接口:

http://songsearch.kugou.com/song_search_v2?keyword={關鍵字}page=1

這個接口通過傳遞關鍵字,其返回的是一段json數據,數據包含音樂名稱、歌手、專輯、總數據量等信息,當然最重要的是數據包含音樂各個品質的hash。

Python無損音樂搜索引擎實現代碼_第2張圖片 ?

默認接口返回的數據只包含30首音樂,為了能拿到所有的數據,只需要把pagesize更改就可以,所以我提取了總數據數量,然后再次發動一次數據請求,拿到全部的數據。當然,這個總數據量也就是json中的total也是作為搜索結果的依據,如果total == 0 則判斷無法搜索到數據。

搜索到數據后,我就要提取無損音樂的hash,這個hash是音樂下載的關鍵,無損音樂hash鍵名:SQFileHash,提取到無損hash(如果是32個0就表示None),我把他的名稱、歌手、hash以字典形式傳遞給下一個模塊。

代碼實現:

a.請求模塊(復用率高):

            
# coding=utf-8
import requests
import json
headers = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  'Accept-Encoding': 'gzip, deflate',
  'Accept-Language': 'zh-CN,zh;q=0.9',
  'Cache-Control': 'max-age=0',
  'Connection': 'keep-alive',
  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
         'Chrome/63.0.3239.132 Safari/537.36',
}
def parse(url):
  ret = json.loads(requests.get(url, headers=headers, timeout=5).text)
  # 返回的是已經轉換過后的字典數據
  return ret
if __name__ == '__main__':
  parse()
          

b.搜索模塊

            
# coding=utf-8
import copy
import MusicParse
def search(keyword):
  search_url = 'http://songsearch.kugou.com/song_search_v2?keyword={}page=1'.format(keyword)
  # 這里需要判斷一下,ip與搜索字段可能會限制搜索,total進行判斷
  total = MusicParse.parse(search_url)['data']['total']
  if total != 0:
    search_total_url = search_url + '&pagesize=%d' % total
    music_list = MusicParse.parse(search_total_url)['data']['lists']
    item, items = {}, []
    for music in music_list:
      if music['SQFileHash'] != '0'*32:
        item['Song'] = music['SongName'] # 歌名
        item['Singer'] = music['SingerName'] # 歌手
        item['Hash'] = music['SQFileHash'] # 歌曲無損hash
        items.append(copy.deepcopy(item))
    return items
  else:
    return None
if __name__ == '__main__':
  search()
          

到這步,音樂搜索接口以及利用完了,下面就是無損音樂搜索了。

2、音樂下載接口:

            
# V2版系統,pc版
Music_api_1 = 'http://trackercdnbj.kugou.com/i/v2/?cmd=23&pid=1&behavior=download'
# V2版系統,手機版(備用)
Music_api_2 = 'http://trackercdn.kugou.com/i/v2/?appid=1005&pid=2&cmd=25&behavior=play'
# 老版系統(備用)
Music_api_3 = 'http://trackercdn.kugou.com/i/?cmd=4&pid=1&forceDown=0&vip=1'
          

我這里準備三個接口,根據酷狗系統版本不同,采用不同加密方式,酷狗音樂下載的關鍵就是音樂接口處提交的key的加密方式,key是由hash加密生成的,不同的酷狗版本,加密方式不同:

酷狗v2版key的生成:md5(hash +”kgcloudv2″)

酷狗老版key的生成:md5(hash +”kgcloud”)

只要將音樂的hash+key添加到api_url ,get提交過去,就能返回一段json數據,數據中就包括了音樂的下載鏈接,然后在提取其download_url。下面我將采用酷狗的第一個接口完成代碼的實現,當然,酷狗存在地區的限制,接口有效性也帶檢測,如果第一個不行就換一個,你懂得!!!然后我把數據做成字典進行傳遞。

代碼實現:

            
# coding=utf-8
import copy
import hashlib
import MusicParse
import MusicSearch
# V2版系統,pc版,加密方式為md5(hash +"kgcloudv2")
Music_api_1 = 'http://trackercdnbj.kugou.com/i/v2/?cmd=23&pid=1&behavior=download'
# V2版系統,手機版,加密方式為md5(hash +"kgcloudv2") (備用)
Music_api_2 = 'http://trackercdn.kugou.com/i/v2/?appid=1005&pid=2&cmd=25&behavior=play'
# 老版系統,加密方式為md5(hash +"kgcloud")(備用)
Music_api_3 = 'http://trackercdn.kugou.com/i/?cmd=4&pid=1&forceDown=0&vip=1'
def V2Md5(Hash): # 用于生成key,適用于V2版酷狗系統
  return hashlib.md5((Hash + 'kgcloudv2').encode('utf-8')).hexdigest()
def Md5(Hash): # 用于老版酷狗系統
  return hashlib.md5((Hash + 'kgcloud').encode('utf-8')).hexdigest()
def HighSearch(keyword):
  music_list = MusicSearch.search(keyword)
  if music_list is not None:
    item, items = {}, []
    for music in music_list:
      Hash = str.lower(music['Hash'].encode('utf-8'))
      key_new = V2Md5(Hash) # 生成v2系統key
      try:
        DownUrl = MusicParse.parse(Music_api_1 + '&hash=%s&key=%s' % (Hash, key_new))['url']
        item['Song'] = music['Song'].encode('utf-8') # 歌名
        item['Singer'] = music['Singer'].encode('utf-8') # 歌手
        item['url'] = DownUrl
        items.append(copy.deepcopy(item))
      except KeyError:
        pass
    return items
if __name__ == '__main__':
  HighSearch()
          

酷狗的爬蟲系統就設計完畢了,下面開始使用flask框架搭建前后端了。

三、引擎搭建

這個搜索引擎是基于flask框架的,設計思路比較簡單,就是前端傳遞post數據(keyword)傳遞到后端,后端拿著這個keyword傳遞給爬蟲,爬蟲把數據返回給系統,系統在前端渲染出來。

代碼實現:

            
# coding=utf-8
import sys
from flask import Flask
from flask import request, render_template
from KgSpider import HighMusicSearch
reload(sys)
sys.setdefaultencoding('utf-8')
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def search():
  if request.method == 'GET':
    return render_template('index.html')
  elif request.method == 'POST':
    keyword = request.form.get('keyword')
    items = HighMusicSearch.HighSearch(keyword)
    if items != None:
      return render_template('list.html', list=items)
    else:
      return '找不到!!!不支持英文'
  else:
    return render_template('404.html')
if __name__ == '__main__':
  app.run(debug=True)
          

四、調試

整改引擎系統,也就設計完畢,然我們試試效果:

1.啟動腳本:python run.py

Python無損音樂搜索引擎實現代碼_第3張圖片 ?

2.輸入關鍵字進行搜索

Python無損音樂搜索引擎實現代碼_第4張圖片 ?

五、總結

引擎搭建完畢,也能正常的運行了,但是這只是一個模型,完全沒有考慮,多用戶訪問帶來的壓力,很容易崩潰,當然經過我的測試,發現只能搜索中文,英文完全無效,why?別問我,我也不知道!!!當然在這里我也想說一下,請尊重版權!!!雖然我是口是心非!!!!!

項目地址: 碼云項目地址

總結

以上所述是小編給大家介紹的Python無損音樂搜索引擎實現代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国内精品 | 日韩福利视频导航 | 亚洲宗合 | 四虎影院最新网址 | 欧美大黄视频 | 久久久国产精品免费视频 | 一级片九九 | 亚洲一区视频在线 | 亚洲aaa视频| 欧美一区在线观看视频 | 久久精品伊人 | 国产超碰人人做人人爱 | 成人深夜福利视频 | 午夜特级毛片 | 久草福利资源网站免费 | 欧美福利在线 | 亚洲精品乱码久久久久久9色 | xxxxxx免费| av色站| 色房四播 | 久草视频在线免费播放 | 成人亚洲欧美日韩在线 | 操一操| www.aiqingdao| 五月综合色 | 草草网| 亚洲欧美中文日韩在线v日本 | 国产在线aaa片一区二区99 | 国产欧美一区二区成人影院 | 美女被免费网站在线视频九色 | 日韩精品一区二区三区中文 | 亚洲第一黄色网址 | 秋霞日韩久久理论电影 | 天天拍天天操 | 特级欧美视频aaaaaa | 草草在线观看 | 亚洲欧美日韩精品久久 | 国产精品丝袜视频 | 亚洲影院一区 | 丝袜 亚洲 另类 欧美 变态 | 一区二区三区精品视频 |