快手批量上傳視頻軟件,Python編寫的一個快手批量上傳視頻源碼,生成后即可獲得簡單的批量上傳工具,可以將視頻進行批量壓縮調(diào)整,能大幅節(jié)省上傳者的操作時間,下面給出快手批量上傳視頻軟件詳細(xì)的源碼說明,有需求的朋友們可以下載試試。 快手批量上傳視頻軟件介紹獲取手機號->模擬登錄->獲取kuaishou.web.cp.api_ph->獲取上傳token->申請塊上傳文件->上傳文件->文件上傳完畢->發(fā)布視頻 發(fā)布視頻需要coverKey,fileId,kuaishou.web.cp.api_ph,這三個參數(shù) coverKey和fileId是上傳文件完畢時獲取到的 kuaishou.web.cp.api_ph是登錄時獲到的 軟件特色代替人工,無需人工值守, 幫助用戶批量自動上傳視頻 支持各種mp4視頻,可以自動adsl換ip操作 優(yōu)勢亮點軟件自帶修改視頻(剪切和MD5功能)讓每個視頻都不重復(fù) 支持自由設(shè)置間隔時間,徹底解放雙手 不用守著電腦,自動批量上傳 源碼一覽#coding:utf-8 import urllib import urllib.request import ssl import http.cookiejar import requests,json import re import time import random import os from http.cookiejar import MozillaCookieJar from urllib.request import urlopen ssl._create_default_https_context=ssl._create_unverified_context c=http.cookiejar.LWPCookieJar()#生成一個儲存cookie的對象 cookie=urllib.request.HTTPCookieProcessor(c)
opener=urllib.request.build_opener(cookie)#把這儲存器綁定到opener對象中
urllib.request.install_opener(opener)
定時=1#分鐘
header ={
'Referer':'https://cp.kuaishou.com/article/publish/video', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0' }
def login():
# print("ccccc")
手機號=input('請輸入手機號:')
#獲取驗證碼 req=urllib.request.Request('https://id.kuaishou.com/pass/kuaishou/sms/requestMobileCode') req.headers=header#模擬瀏覽器
data={ 'sid':'kuaishou.web.cp.api', 'type':'53', 'countryCode':'+86', 'phone':手機號, 'ztIdentityVerificationType':"", 'ztIdentityVerificationCheckToken':"" }
data=urllib.parse.urlencode(data).encode('utf-8') html=opener.open(req,data).read()#html會返回驗證碼成功或不成功 #print(html)
code=input('請輸入驗證碼:')
#驗證 驗證碼區(qū)
req=urllib.request.Request('https://id.kuaishou.com/pass/kuaishou/login/mobileCode') req.headers=header#模擬瀏覽器
data={ 'countryCode':'+86', 'sid':'kuaishou.web.cp.api', 'createId':'true', 'phone':手機號, 'smsCode':code
}
data=urllib.parse.urlencode(data).encode('utf-8') html=opener.open(req,data).read()#html會返回驗證碼成功或不成功
#print(html)
#獲取kuaishou.web.cp.api.at 提取字符串=html.decode('utf-8')
# print(re.search('kuaishou.web.cp.api.at',提取字符串).span()) 元組= re.search('kuaishou.web.cp.api.at',提取字符串).span()
list_str = list(提取字符串) for num in range(0,元組[0]+25): list_str.pop(0) 提取字符串 = ''.join(list_str)
元組= re.search('",',提取字符串).span()
list_str = list(提取字符串) for num in range(元組[0],len(list_str)): list_str.pop(元組[0])
提取字符串 = ''.join(list_str)
kuaishou_web_cp_api_at=提取字符串
# print(kuaishou_web_cp_api_at)
# print(取第一個數(shù)) # print(type(取第一個數(shù))) # print(type(num))
隨機數(shù)=random.randint(0,9)
#獲取kuaishou.web.cp.api_ph
data={ 'authToken':kuaishou_web_cp_api_at, 'sid':'kuaishou.web.cp.api' }
data=json.dumps(data).encode() header2 ={
'Connection':'keep-alive', 'Content-Length':len(data),
'EagleEye-pAppName':'e6zufio2qe@6aa9d0be6640ab'+str(隨機數(shù)), 'EagleEye-SessionID':'stk'+str(隨機數(shù))+'Lke6od75zahpCh3pq8nk99qR',
'Pragma':'no-cache', 'Referer':'https://passport.kuaishou.com/account/login/?sid=kuaishou.web.cp.api&redirectURL=https%3A%2F%2Fcp.kuaishou.com%2Fprofile', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0', } req=urllib.request.Request('https://passport.kuaishou.com/account/login/api/verifyToken',data=data,method='POST') req.headers=header2#模擬瀏覽器
html=opener.open(req,data).read()#html會返回驗證碼成功或不成功 #print(html)
提取字符串=html.decode('utf-8') 元組= re.search('kuaishou.web.cp.api_ph',提取字符串).span() list_str = list(提取字符串) for num in range(0,元組[0]+25): list_str.pop(0) 提取字符串 = ''.join(list_str)
元組= re.search('",',提取字符串).span() list_str = list(提取字符串) for num in range(元組[0],len(list_str)): list_str.pop(元組[0]) 提取字符串 = ''.join(list_str)
kuaishou_web_cp_api_ph=提取字符串 #print(kuaishou_web_cp_api_ph)
#html=urlopen(req,data)
# print(c) # print(len(data)) # print(html.read().decode())
文件個數(shù) = 0 集合=set(())
for root, dirs, files in os.walk(r"."): # root 表示當(dāng)前正在訪問的文件夾路徑 # dirs 表示該文件夾下的子目錄名list # files 表示該文件夾下的文件list # 遍歷文件 for f in files:
字符串=re.search('.mp4',os.path.join(root, f)) if 字符串!=None: 集合.add(os.path.join(root, f)) 文件個數(shù) += 1 # print(集合) # print(os.path.join(root, f))
列表=list(集合) print('一共有'+str(文件個數(shù))+'個視頻')
循環(huán)次數(shù)=0 while 循環(huán)次數(shù)<> 循環(huán)次數(shù)=循環(huán)次數(shù)+1
time.sleep(60*定時)#秒
文件名=列表[0] 真與假=True while 真與假: 元組= re.search(r'\\',文件名) if 元組==None: 真與假=False else: list_str = list(文件名) for num in range(0,元組.end()): list_str.pop(0) 文件名 = ''.join(list_str)
print('正在上傳'+文件名)
#模擬上傳視頻 #1.獲取上傳token
data={ 'kuaishou.web.cp.api_ph':kuaishou_web_cp_api_ph, 'uploadType':'1' }
data=json.dumps(data).encode() header3 ={ 'Connection':'keep-alive', 'Content-Length':len(data), 'Content-Type':'application/json;charset=utf-8', 'Pragma':'no-cache', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0' }
req=urllib.request.Request('https://cp.kuaishou.com/rest/cp/works/v2/video/pchttp://img2.deepxp.cn/upload/down_shipin2/pre',data=data,method='POST')
req.headers=header3#模擬瀏覽器
#data=urllib.parse.urlencode(data).encode('utf-8') html=opener.open(req,data).read()#html會返回驗證碼成功或不成功
# print(html.decode('utf8'))
提取字符串=html.decode('utf-8') 元組= re.search('token',提取字符串).span() list_str = list(提取字符串) for num in range(0,元組[0]+8): list_str.pop(0) 提取字符串 = ''.join(list_str)
元組= re.search('",',提取字符串).span() list_str = list(提取字符串) for num in range(元組[0],len(list_str)): list_str.pop(元組[0]) 提取字符串 = ''.join(list_str)
上傳token=提取字符串
# print(上傳token)
#2.https://upload.kuaishouzt.com/apihttp://img2.deepxp.cn/upload/down_shipin2/resume #/api/上傳/恢復(fù)
req=urllib.request.Request('https://upload.kuaishouzt.com/apihttp://img2.deepxp.cn/upload/down_shipin2/resume?upload_token='+上傳token) req.headers=header#模擬瀏覽器
html=opener.open(req).read()#html會返回驗證碼成功或不成功
#print(html.decode('utf8'))
time.sleep(1)
#3.申請塊上傳文件
with open(列表[0],'rb') as f: 視頻數(shù)據(jù)二進制=f.read()
文件大小=len(視頻數(shù)據(jù)二進制)
文件大小2=文件大小
迭代次數(shù) = 0 最后一次文件大小=0 while (迭代次數(shù) <>
判斷是否為負(fù)=文件大小2-4194304 if 判斷是否為負(fù) <> #print(迭代次數(shù)) 最后一次文件大小=文件大小2 # print(最后一次文件大小) break
迭代次數(shù) = 迭代次數(shù) + 1 文件大小2=判斷是否為負(fù)
# print("迭代次數(shù)"+str(迭代次數(shù)))
if 迭代次數(shù)==0: # print("進入迭代次數(shù)==0")
Content_Range='bytes 0-'+str(文件大小)+'/'+str(文件大小)
header_視頻上傳={
'Accept':'application/json, text/plain, */*', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Connection':'keep-alive', 'Content-Length':len(視頻數(shù)據(jù)二進制), 'Content-Range':Content_Range, 'Content-Type':'application/octet-stream', 'Host':'upload.kuaishouzt.com', 'Origin':'https://cp.kuaishou.com', 'Referer':'https://cp.kuaishou.com/article/publish/video?origin=www.kuaishou.com', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0' }
req=urllib.request.Request('https://upload.kuaishouzt.com/apihttp://img2.deepxp.cn/upload/down_shipin2/fragment?upload_token='+上傳token+'&fragment_id=0',data=data,method='POST')
req.headers=header_視頻上傳#模擬瀏覽器
html=opener.open(req,視頻數(shù)據(jù)二進制).read()#html會返回驗證碼成功或不成功
# print(html.decode('utf8')) else:
for i in range(0,迭代次數(shù)): # print("i"+str(i)) if i==迭代次數(shù):
# print("進入最后上傳塊")
Content_Range='bytes '+str(迭代次數(shù)*4194304)+'-'+str(文件大小-1)+'/'+str(文件大小)
header_視頻上傳={
'Accept':'application/json, text/plain, */*', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Connection':'keep-alive', 'Content-Length':最后一次文件大小, 'Content-Range':Content_Range, 'Content-Type':'application/octet-stream', 'Host':'upload.kuaishouzt.com', 'Origin':'https://cp.kuaishou.com', 'Referer':'https://cp.kuaishou.com/article/publish/video?origin=www.kuaishou.com', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0' }
req=urllib.request.Request('https://upload.kuaishouzt.com/apihttp://img2.deepxp.cn/upload/down_shipin2/fragment?upload_token='+上傳token+'&fragment_id='+str(迭代次數(shù)),data=data,method='POST')
req.headers=header_視頻上傳#模擬瀏覽器
文件切割=視頻數(shù)據(jù)二進制[迭代次數(shù)*4194304:文件大小] # print("文件大小"+str(文件大小-迭代次數(shù)*4194304)) html=opener.open(req,文件切割).read()#html會返回驗證碼成功或不成功
else: # print(str(i))
Content_Range='bytes '+str(i*4194304)+'-'+str((i+1)*4194304-1)+'/'+str(文件大小) # Content_Range='bytes 0-4194303/11765090' header_視頻上傳={
'Accept':'application/json, text/plain, */*', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Connection':'keep-alive', 'Content-Length':4194304, 'Content-Range':Content_Range, 'Content-Type':'application/octet-stream', 'Host':'upload.kuaishouzt.com', 'Origin':'https://cp.kuaishou.com', 'Referer':'https://cp.kuaishou.com/article/publish/video?origin=www.kuaishou.com', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0' }
req=urllib.request.Request('https://upload.kuaishouzt.com/apihttp://img2.deepxp.cn/upload/down_shipin2/fragment?upload_token='+上傳token+'&fragment_id='+str(i),data=data,method='POST')
req.headers=header_視頻上傳#模擬瀏覽器
文件切割=視頻數(shù)據(jù)二進制[i*4194304:(i+1)*4194304]
html=opener.open(req,文件切割).read()#html會返回驗證碼成功或不成功
#print("11111111111"+html.decode('utf8'))
# print(len(data))
header_視頻上傳={
'Accept':'application/json, text/plain, */*', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Connection':'keep-alive', 'Content-Length':'0', 'Host':'upload.kuaishouzt.com', 'Origin':'https://cp.kuaishou.com', 'Referer':'https://cp.kuaishou.com/article/publish/video?origin=www.kuaishou.com', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0'
}
req=urllib.request.Request('https://upload.kuaishouzt.com/apihttp://img2.deepxp.cn/upload/down_shipin2/complete?fragment_count=1&upload_token='+上傳token,method='POST')
req.headers=header_視頻上傳#模擬瀏覽器
html=opener.open(req).read()#html會返回驗證碼成功或不成功
# print(html.decode('utf8'))
#3.文件上傳完畢
data={ 'fileLength':文件大小,#文件大小 'fileName':文件名,#文件名稱 'fileType':'video/mp4', 'kuaishou.web.cp.api_ph':kuaishou_web_cp_api_ph, 'token':上傳token }
data=json.dumps(data).encode() header3 ={ 'Connection':'keep-alive', 'Content-Length':len(data), 'Content-Type':'application/json;charset=utf-8', 'Pragma':'no-cache', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0' }
req=urllib.request.Request('https://cp.kuaishou.com/rest/cp/works/v2/video/pchttp://img2.deepxp.cn/upload/down_shipin2/finish',data=data,method='POST')
req.headers=header3#模擬瀏覽器
html=opener.open(req,data).read()#html會返回驗證碼成功或不成功
# print(html.decode('utf8'))
提取字符串=html.decode('utf-8') 元組= re.search('coverKey',提取字符串).span() list_str = list(提取字符串) for num in range(0,元組[0]+8+3): list_str.pop(0) 提取字符串 = ''.join(list_str)
元組= re.search('",',提取字符串).span() list_str = list(提取字符串) for num in range(元組[0],len(list_str)): list_str.pop(元組[0]) 提取字符串 = ''.join(list_str)
coverKey=提取字符串
#print(coverKey)
提取字符串=html.decode('utf-8') 元組= re.search('fileId',提取字符串).span() list_str = list(提取字符串) for num in range(0,元組[0]+6+2): list_str.pop(0) 提取字符串 = ''.join(list_str)
元組= re.search(',"',提取字符串).span() list_str = list(提取字符串) for num in range(元組[0],len(list_str)): list_str.pop(元組[0]) 提取字符串 = ''.join(list_str)
fileId=提取字符串
# print(fileId)
#發(fā)布視頻
data={ 'caption':"", 'collectionId':"", 'coverCenterX':"", 'coverCenterY':"", 'coverCropped':'false', 'coverKey':coverKey, 'coverTimeStamp':-1, 'coverTitle':"", 'coverTitleStyle':"", 'coverType':1, 'domain':"", 'fileId':fileId, 'kuaishou.web.cp.api_ph':kuaishou_web_cp_api_ph, 'latitude':"", 'longitude':"", 'movieId':"", 'notifyResult':0, 'photoStatus':1, 'photoType':0, 'pkCoverKey':"", 'publishTime':0, 'secondDomain':"" }
data=json.dumps(data).encode() header_submit ={ 'Connection':'keep-alive', 'Content-Length':len(data), 'Content-Type':'application/json;charset=utf-8', 'Pragma':'no-cache', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0' }
req=urllib.request.Request('https://cp.kuaishou.com/rest/cp/works/v2/video/pc/submit',data=data,method='POST') req.headers=header_submit#模擬瀏覽器
html=opener.open(req,data).read()#html會返回驗證碼成功或不成功
print(html.decode('utf8'))
os.remove(列表[0])
列表.remove(列表[0])
login() 相對于大多數(shù)用戶來說,視頻軟件的編輯功能是面向?qū)I(yè)人員或有興趣愛好的人員使用的功能。 |
1深度技術(shù)win10正式版ghost(32位)旗艦......
2番茄花園win10 X86 ghost 標(biāo)準(zhǔn)通......
3番茄花園Win10_Ghost Win10 64......
4雨林木風(fēng) GHOST WIN10 X64 快速裝......
5深度技術(shù)GHOST WIN10 X64 尊貴專業(yè)......
6筆記本W(wǎng)in10系統(tǒng) 64位官方正式版2023年......
7筆記本win10正式版ghost(32位)旗艦免......
8雨林木風(fēng)win10(32位)ghost 修正專業(yè)......