日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python中不论类的名字是什么歌_Python自动猜歌名,还愁排名上不去嘛?

發(fā)布時(shí)間:2024/9/27 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中不论类的名字是什么歌_Python自动猜歌名,还愁排名上不去嘛? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

相傳,就在前幾日,在網(wǎng)上閑逛時(shí),刷到了一個(gè)猜歌的小程序。這個(gè)小程序通過(guò)播放歌曲部分片段,然后讓用戶來(lái)猜它的歌名,大概是這樣的:

作為一個(gè)腦熱的聽(tīng)歌愛(ài)好者,于是他越陷越深,越刷越得勁。可是,他的 「排名竟一直上不去」!正當(dāng)他惆悵之際,一個(gè)絕妙的想法 「ding」的一下就出現(xiàn)了,學(xué)會(huì)了它,媽媽再也不用擔(dān)心他的排名上不去了!

一、思路分析

為了搞清楚猜歌的過(guò)程是什么樣的,首先通過(guò)抓包來(lái)對(duì)請(qǐng)求和響應(yīng)進(jìn)行分析。在PC版微信中打開(kāi)小程序,然后通過(guò)Fiddler進(jìn)行抓包。我們會(huì)發(fā)現(xiàn)猜歌的過(guò)程由兩個(gè)請(qǐng)求構(gòu)成。 (ps.當(dāng)然也可以直接抓手機(jī)端的包,但是由于各種原因,會(huì)相對(duì)復(fù)雜一些)一個(gè)是 「獲取歌曲的相關(guān)信息」(包括答案)。對(duì)!你沒(méi)有聽(tīng)錯(cuò),返回的數(shù)據(jù)直接包括了猜歌的答案,請(qǐng)求如下:

這是一個(gè)get請(qǐng)求,包括了用于登陸驗(yàn)證的 「token」、 「user_id」等,返回的結(jié)果為歌曲相關(guān)的信息,其中最重要的是 「answer」(紅圈部分)。

另一個(gè)是 「發(fā)送猜歌請(qǐng)求」,如下:

這同樣是一個(gè)get請(qǐng)求,也包含了token等參數(shù),還包含了提交的答案 「answer」和歌曲的 「sid」。通過(guò)返回的 「is_right」字段便可以判斷是否猜對(duì)。(1則猜對(duì),否則不對(duì))

那么,思路已經(jīng)很明晰了:通過(guò)python編寫程序,首先獲取歌曲的答案,然后將答案提交。

二、獲取答案

首先定義一個(gè)類:

classguessStar:

def__init__(self,token,userId):

'''

初始化函數(shù)

'''

self.token = token # 用戶token

self.userId = userId # 用戶ID

隨后,根據(jù)抓包的請(qǐng)求定義一個(gè)獲取答案的函數(shù):

defget_answer(self):

'''

獲取答案函數(shù)

'''

url = 'https://api.zuiqiangyingyu.net/index.php/api/guess_v2/Index'

headers = { 'Connection': 'keep-alive',

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',

'content-type': 'application/json',

'Accept-Encoding': 'gzip, deflate, br'}

params = (( 'token',self.token), # 用戶token,需要換成自己的

( 'user_id',self.userId), # 用戶ID,需要換成自己的

( 'wechat_type', 'wechat_song'))

res = requests.get(url,headers=headers,params=params) # 發(fā)送請(qǐng)求

data = res.json # 獲取返回結(jié)果(json格式)

music = data[ 'd'][ 'list'][ 0] # 音樂(lè)數(shù)據(jù)

sid = music[ 'id'] # 音樂(lè)ID

answer = music[ 'answer'] # 對(duì)應(yīng)的答案

return(sid,answer)

這個(gè)請(qǐng)求很簡(jiǎn)單,只需要將數(shù)據(jù)包對(duì)于的url、參數(shù)、請(qǐng)求頭等模擬出來(lái)即可。

三、提交答案

同樣,通過(guò)抓包分析后定義一個(gè)提交答案的函數(shù):

defguess(self,sid,answer):

'''

猜歌函數(shù)

'''

url= 'https://api.zuiqiangyingyu.net/index.php/api/guess_v2/Sub'

headers = { 'Connection': 'keep-alive',

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',

'content-type': 'application/json',

'Accept-Encoding': 'gzip, deflate, br'}

params = (( 'token',self.token), # 用戶token,需要換成自己的

( 'user_id',self.userId), # 用戶ID,需要換成自己的

( 'sid',sid), # 音樂(lè)ID

( 'answer',answer), # 答案

( 'wechat_type', 'wechat_song'))

res = requests.get(url,headers=headers,params=params)

result = res.json[ 'd'][ 'user'][ 'is_right'] # 猜歌的結(jié)果

returnresult

函數(shù)返回的是is_right字段,如果是1則表示答案正確,否則則是錯(cuò)誤的。

四、猜猜猜

有了get_answer和guess函數(shù),我們便可愉快地開(kāi)始自動(dòng)化猜歌答題了,定義如下函數(shù):

defdo_guess(self,num):

'''

進(jìn)行猜歌(通過(guò)num指定次數(shù))

'''

N = 0

whileTrue:

sid,answer = self.get_answer

result = self.guess(sid,answer)

ifresult == '1': # 如果猜對(duì)

N += 1

print( '第%s首歌回答正確!'%sid)

else:

print( '第%s首歌回答錯(cuò)誤!'%sid)

ifN >= num: # 如果達(dá)到指定次數(shù)

break

其中num參數(shù)表示猜歌的次數(shù)。在主函數(shù)中調(diào)用它:

if__name__ == '__main__':

star = guessStar( 'xxxx', 'xxx')

star.do_guess( 1001) # 開(kāi)始猜歌

xxxx分別表示賬號(hào)的token和用戶ID,這里需要大家換成自己的。所謂 「一千零一夜」,于是我也跑1001次好了,run一下:

在運(yùn)行之前,我是這樣的:

運(yùn)行之后,我是這樣的:

沒(méi)有錯(cuò),我的排名正在噌噌噌地往上升!!舒服了~~

寫在最后

我想本篇文章的真正意義可能不在于代碼本身,而是希望為大家提供更加廣泛的思路:

Python不僅是課堂上紛繁復(fù)雜的理論知識(shí),還能為我們的生活提供便利;

Python不僅是項(xiàng)目中枯燥無(wú)味的日復(fù)一日,還能為我們的生活帶來(lái)歡;

Python不僅是成長(zhǎng)里孜孜不倦的埋頭苦學(xué),還能為我們的生活增添成就;

無(wú)論是Python、Java、C#,乃至攝影、繪畫(huà)。whatever,它們都是我們興趣或是謀生的技能。我想,只有真正的 「熱愛(ài)它們」,它們也才能在我們的生活中更好地結(jié)出盛果、生根發(fā)芽!

總結(jié)

以上是生活随笔為你收集整理的python中不论类的名字是什么歌_Python自动猜歌名,还愁排名上不去嘛?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。