五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

Python實(shí)現(xiàn)自動化刷抖音的實(shí)例

發(fā)布日期:2022-03-12 12:57 | 文章來源:腳本之家


都說抖音有毒,一刷就停不下來了。看來抖音這款產(chǎn)品緊緊抓住了人們內(nèi)心深處的某些需求。當(dāng)然今天不是來探討抖音這款產(chǎn)品的啊。今天我們來學(xué)習(xí)如何用Python實(shí)現(xiàn)自動刷抖音,并為顏值高的的小哥哥小姐姐點(diǎn)贊并評論。
項(xiàng)目環(huán)境
語言:Python3
編輯器:Pycharm
其他工具:手機(jī)一個,數(shù)據(jù)線一條,android studio

實(shí)現(xiàn)思路

1.獲取手機(jī)抖音短視頻的截圖
2.調(diào)用百度API識別人臉
3.對符合條件的視頻點(diǎn)贊和評論
獲取抖音視頻的截圖
獲取視頻截屏,在這里用的是adb工具。adb工具即Android Debug Bridge(安卓調(diào)試橋)。是連接Android手機(jī)與PC端的橋梁,通過adb可以管理、操作模擬器和實(shí)體設(shè)備,如安裝軟件、查看設(shè)備軟硬件參數(shù)、系統(tǒng)升級、運(yùn)行shell命令等。在這里通過命令行窗口發(fā)送對應(yīng)的命令,就可以實(shí)現(xiàn)手機(jī)的截屏。如果沒有安裝adb工具包,需要先安裝adb工具包。

具體實(shí)現(xiàn)代碼

# 圖片壓縮比例
SIZE_normal = 1.0
SIZE_small = 1.5
SIZE_more_small = 2.0

# adb手機(jī)截圖
def get_screen_shot_img():
 # 截圖
 os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg")
 os.system("adb pull /sdcard/screenshot.jpg face.jpg")
 # 壓縮圖片
 img = Image.open("face.jpg").convert('RGB')
 scale = SIZE_small
 w, h = img.size
 img.thumbnail((int(w / scale), int(h / scale)))
 img.save('face.jpg')

調(diào)用百度API識別人臉

(1)進(jìn)入百度云的人臉識別控制臺

https://console.bce.baidu.com/ai/?_=1528192333418&fromai=1#/ai/face/overview/index

若沒有百度賬號,可以用手機(jī)號快速注冊一個。

(2)創(chuàng)建人臉識別應(yīng)用

賬號登錄成功之后,你需要創(chuàng)建應(yīng)用才能正式調(diào)用百度api,應(yīng)用創(chuàng)建成功后會獲取到應(yīng)用對應(yīng)的API Key及Secret Key,用著兩個參數(shù)進(jìn)行接口調(diào)用操作,及相關(guān)配置。

點(diǎn)擊上圖中的創(chuàng)建應(yīng)用,填寫【應(yīng)用名稱】和【應(yīng)用描述】,即可創(chuàng)建應(yīng)用(其他選項(xiàng)可以不做操作,使用默認(rèn)值即可)

(3)獲取秘鑰

創(chuàng)建完成后,點(diǎn)擊“返回應(yīng)用列表”進(jìn)行下一步操作。平臺將會分配給你此應(yīng)用的相關(guān)憑證:API Key、Secret Key。他將用于在下一步獲取調(diào)用接口所需的Access Token中。

(4)拿到API Key,Secret Key之后,通過這兩個參數(shù)獲取調(diào)用接口所需的Access Token

具體實(shí)現(xiàn)代碼

def get_access_token():
 # client_id 為官網(wǎng)獲取的AK, client_secret 為官網(wǎng)獲取的SK
 host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官網(wǎng)獲取的AK】' \
  '&client_secret=【官網(wǎng)獲取的SK】 '
 header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
 "Content-Type": "application/json"}
 req = request.Request(url=host, headers=header_dict)
 res = request.urlopen(req)
 res = res.read()
 res_json = json.loads(res.decode('utf-8'))
 return res_json["access_token"]

調(diào)用百度API

'''
調(diào)用百度API,進(jìn)行人臉探測
imgPath:圖片的地址
access_token:開發(fā)者token
'''

def get_face_info_from_bai_du(img_path, access_token):
 # 接口請求地址
 request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
 # 二進(jìn)制方式打開圖片文件
 f = open(img_path, 'rb')
 # 圖片轉(zhuǎn)換為base64
 img = base64.b64encode(f.read())
 params = {"face_field": "age,beauty,gender", "image": img, "image_type": 'BASE64', "max_face_num": 5}
 params = urllib.parse.urlencode(params).encode(encoding='utf-8')
 request_url = request_url + "?access_token=" + access_token
 # 調(diào)用post請求方法
 face_info = get_info_post_json_data(request_url, params)
 # json字符串轉(zhuǎn)對象
 face_json = json.loads(face_info)
 print(face_info)
 if face_json['error_msg'] == 'SUCCESS':
  # 如果沒有發(fā)現(xiàn)人像,會返回空
  if face_json['result']['face_num'] == 0:
face_dict = {}
  else:
# 把想要的部分提取存入字典中
result = face_json['result']['face_list'][0]
gender = result['gender']['type']
age = str(result['age'])
beauty = str(result['beauty'])
face_dict = {"gender": gender, "age": age, "beauty": beauty}
 return face_dict

注意此處有坑,說說我入坑的過程。申請完ak和sk之后我調(diào)用人臉識別的api。返回的消息是:{‘error_code': 6, ‘error_msg': ‘No permission to access data'}。我一查官方文檔說是沒有獲取用戶數(shù)據(jù)的權(quán)限。需要啥權(quán)限呢,難道調(diào)用這個接口還需要申請權(quán)限?不是有ak和sk嗎?各種百度,無果。放棄了。晚上繼續(xù)搞,這次從官方文檔入手找原因。無意看到說是api升級了。從v2升級到了v3。我申請的ak和sk對應(yīng)的是v3版的。而我調(diào)用的接口確實(shí)v2版的。具體體現(xiàn)在請求URL的區(qū)別上,所以苦苦找不到原因。從入坑的經(jīng)歷獲取的教訓(xùn)是:一定要仔細(xì)看官方文檔;找不出bug的時候,就先放一放,回頭再看,就會茅塞頓開,一切迎刃而解。

下面給出正常調(diào)用api返回的json數(shù)據(jù)

{
 "error_code":0,
 "error_msg":"SUCCESS",
 "log_id":304592828857184421,
 "timestamp":1542885718,
 "cached":0,
 "result":{
  "face_num":1,
  "face_list":[
{
 "face_token":"9ae54ea1941d2b9d8a7e881f3ae39fe1",
 "location":{
  "left":374.5,
  "top":406.94,
  "width":140,
  "height":136,
  "rotation":30
 },
 "face_probability":0.99,
 "angle":{
  "yaw":-12,
  "pitch":10.26,
  "roll":29.76
 },
 "age":21,
 "beauty":53.22,
 "gender":{
  "type":"female",
  "probability":1
 }
}
  ]
 }
}

人臉識別這塊。是根據(jù)你調(diào)用接口所傳的參數(shù)來返回你需要的值。傳的參數(shù)越多,返回消息越詳細(xì)。我這里只獲取年齡,性別,顏值這幾個參數(shù)。同樣v2版的接口和v3版的接口返回的數(shù)據(jù)格式也是有區(qū)別的。
對符合條件的視頻點(diǎn)贊和評論
獲取到api返回的數(shù)據(jù)后就是一些判斷。我這里的判斷是:如果識別到人臉,年齡在18歲以上,顏值在40以上。就點(diǎn)贊+評論。

具體實(shí)現(xiàn)

'''
將獲得的數(shù)據(jù)進(jìn)行分析
face_dict:人臉識別后的數(shù)據(jù)
'''

def analysis_face(face_dict):
 # 如果發(fā)現(xiàn)人臉繼續(xù)判斷
 if len(face_dict) != 0:
  # 如果為女生
  if face_dict["gender"] == "female":
print("性別:女")
print("年齡:" + face_dict["age"])
print("顏值:" + face_dict["beauty"])
# 如果顏值在40以上,并且年齡大于18繼續(xù)
if float(face_dict["beauty"]) > 40 and float(face_dict["age"]) > 18:
 # 點(diǎn)贊
 commentaries()
 print("------------------捕獲小姐姐一枚------------------")
 print("------------------顏值好高哦,已點(diǎn)贊❤------------")
else:
 print("顏值不及格,繼續(xù)努力,下一個")
  # 如果為男生
  else:
print("性別:男")
print("年齡:" + face_dict["age"])
print("顏值:" + face_dict["beauty"])
# 如果顏值在40以上,并且年齡大于18繼續(xù)
if float(face_dict["beauty"]) > 40 and float(face_dict["age"]) > 18:
 # 點(diǎn)贊
 commentaries()
 print("------------------捕獲小哥哥一枚------------------")
 print("------------------顏值好高哦,已點(diǎn)贊❤------------")
else:
 print("顏值不及格,繼續(xù)努力,下一個")
 else:
  print("沒有發(fā)現(xiàn)小姐姐和小哥哥,下一個")
 # 上滑新視頻
 next_video()

怎么實(shí)現(xiàn)點(diǎn)贊和評論呢?沒錯還是使用adb工具。不過這里還需要用到一個Android studio 插件——Android Device Monitor。為什么要用他呢。因?yàn)楫?dāng)我們點(diǎn)贊的時候,需要知道點(diǎn)贊這個按鈕在屏幕的具體位置。同理評論也需要知道評論輸入框的坐標(biāo)位置。

下面來看怎么用Android Device Monitor獲取手機(jī)屏幕坐標(biāo)信息。

連接上手機(jī)之后,如上圖4個步驟。就可以獲取到手機(jī)屏幕任意一點(diǎn)的位置坐標(biāo)。這里只需要輸入大概的位置坐標(biāo)即可。那么這個插件從哪來呢。據(jù)說Android Studio3.0之前的版本,都自帶這個插件。而我剛好是3.0之后的版本,所以還需要另外做些工作。具體使用方式如下:

在android-sdk/tools/目錄的命令行中輸入以下內(nèi)容:monitor。即進(jìn)入CMD窗口,cd到當(dāng)時安裝Android-sdk的目錄,再繼續(xù)cd到tools目錄下,然后輸入命令monitor,這是期待已久的Android Device Monitor就會出現(xiàn)。因?yàn)槊靠钍謾C(jī)的屏幕尺寸可能不一樣。所以下面的參數(shù)僅是我手機(jī)測量得到的坐標(biāo)。

下面就是具體點(diǎn)贊評論的實(shí)現(xiàn)

# 點(diǎn)贊評論
def commentaries():
 os.system("adb shell input tap 1000 1200")  # 點(diǎn)贊
 time.sleep(0.01)
 os.system("adb shell input tap 1000 1400")  # 點(diǎn)擊評論按鈕
 time.sleep(0.05)
 os.system("adb shell input tap 50 2000")  # 獲取EditText輸入框焦點(diǎn)
 os.system("adb shell am broadcast -a ADB_INPUT_TEXT --es msg '真好真好'")  # 評論
 os.system("adb shell input tap 1000 1860")  # 發(fā)送評論
 time.sleep(1)
 os.system("adb shell input tap 500 100")  # 退回主界面

這里還有一點(diǎn)需要注意:adb shell input text 不支持中文輸入。只能輸入'hello world'這樣的英文,輸入英文前也是需要將鍵盤切換到英文輸入模式下的。繼續(xù)百度,如何實(shí)現(xiàn)中文輸入,發(fā)現(xiàn)另一個神器—ADBKeyBoard.apk,一款老外寫的輸入法。完美解決不能輸入中文的問題。源碼地址:https://github.com/senzhk/ADBKeyBoard。安裝這個app。并將默認(rèn)輸入法切換成ADBKeyBoard。

最后提醒大家,抖音會限制一個賬號在一段時間內(nèi)的評論次數(shù),長時間高頻率的評論抖音就會暫時關(guān)掉你的評論權(quán)限。會給你來一句“你的發(fā)言太快了,請你控制寄幾”,估計(jì)害怕有人專門刷評論。不過個把小時就會解封。

到此這篇關(guān)于Python實(shí)現(xiàn)自動化刷抖音的實(shí)例的文章就介紹到這了,更多相關(guān)Python 自動化刷抖音內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部