标签: python源码

爬取最新QQ音乐下载地址分析

爬取最新QQ音乐下载地址分析以下均以歌名 不要说话 分析 通过音乐名字搜索 12345678910111213'qq' => [ 'method' => 'GET', 'url' => 'http://c.y.qq.com/soso/fcgi-bin/client_search_cp', 'referer' => 'http://m.y.qq.com', 'proxy' => false, 'body' => [ 'w' => $query, 'p' => $page, 'n' => 10, 'format' => 'json' ], 'user-agent' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'] 即组成 http://c.y.qq.com/soso/fcgi-bin/client_search_cp?w=不要说话&p=1&n=10&format=json 通过定义的useragent通过Get取得的内容如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102{ "code":0, "data":{ "keyword":"不要说话", "priority":0, "qc":[ ], "semantic":{ "curnum":0, "curpage":1, "list":[ ], "totalnum":0 }, "song":{ "curnum":10, "curpage":1, "list":[ { "albumid":35182, "albummid":"000J1pJ50cDCVE", "albumname":"不想放手", "albumname_hilight":"不想放手", "alertid":23, "belongCD":0, "cdIdx":7, "chinesesinger":0, "docid":"14691017891116423173", "grp":[ ], "interval":285, "isonly":0, "lyric":"《时尚先生》电影主题曲", "lyric_hilight":"《时尚先生》电影主题曲", "media_mid":"004cc3OU0GLJHb", "msgid":16, "newStatus":2, "nt":1413023447, "pay":{ "payalbum":0, "payalbumprice":0, "paydownload":1, "payinfo":1, "payplay":0, "paytrackmouth":1, "paytrackprice":200 }, "preview":{ "trybegin":74064, "tryend":102207, "trysize":960887 }, "pubtime":1214755200, "pure":0, "singer":[ { "id":143, "mid":"003Nz2So3XXYek", "name":"陈奕迅", "name_hilight":"陈奕迅" } ], "size128":4566820, "size320":11416753, "sizeape":0, "sizeflac":30255204, "sizeogg":6051718, "songid":9059607, "songmid":"002B2EAA3brD5b", "songname":"不要说话", "songname_hilight":"<em>不要说话</em>", "strMediaMid":"004cc3OU0GLJHb", "stream":1, "switch":16888579, "t":1, "tag":11, "type":0, "ver":0, "vid":"e0011thbfzs" } ], "totalnum":600 }, "tab":0, "taglist":[ ], "totaltime":0, "zhida":{ "chinesesinger":0, "type":0 } }, "message":"", "notice":"", "subcode":0, "time":1632975151, "tips":""} 通过返回的json可以取得歌曲的songmid为 002B2EAA3brD5b 通过歌曲的songmid取得音频信息 1234567891011'qq' => [ 'method' => 'GET', 'url' => 'http://c.y.qq.com/v8/fcg-bin/fcg_play_single_song.fcg', 'referer' => 'http://m.y.qq.com', 'proxy' => false, 'body' => [ 'songmid' => $songid, 'format' => 'json' ], 'user-agent' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'] 即通过 http://c.y.qq.com/v8/fcg-bin/fcg_play_single_song.fcg?songmid=002B2EAA3brD5b&format=json 和自定义的头,返回的json如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124{ "code":0, "data":[ { "action":{ "alert":21, "icons":8535932, "msgdown":0, "msgfav":0, "msgid":14, "msgpay":6, "msgshare":0, "switch":16888579 }, "aid":0, "album":{ "id":35182, "mid":"000J1pJ50cDCVE", "name":"不想放手", "pmid":"000J1pJ50cDCVE_3", "subtitle":"《时尚先生》电影主题曲", "time_public":"2008-06-30", "title":"不想放手" }, "bpm":66, "data_type":0, "es":"", "file":{ "b_30s":0, "e_30s":60000, "hires_bitdepth":0, "hires_sample":0, "media_mid":"004cc3OU0GLJHb", "size_128mp3":4566820, "size_192aac":6893143, "size_192ogg":6051718, "size_24aac":0, "size_320mp3":11416753, "size_48aac":1733017, "size_96aac":3476533, "size_96ogg":3079411, "size_ape":0, "size_dts":0, "size_flac":30255204, "size_hires":0, "size_try":960887, "try_begin":74064, "try_end":102207, "url":"" }, "fnote":4009, "genre":1, "id":9059607, "index_album":7, "index_cd":0, "interval":285, "isonly":0, "ksong":{ "id":4841, "mid":"000A57lN1qgVTQ" }, "label":"0", "language":0, "mid":"002B2EAA3brD5b", "modify_stamp":0, "mv":{ "id":173498, "name":"", "title":"", "vid":"e0011thbfzs", "vt":0 }, "name":"不要说话", "ov":0, "pay":{ "pay_down":1, "pay_month":1, "pay_play":0, "pay_status":0, "price_album":0, "price_track":200, "time_free":0 }, "sa":0, "singer":[ { "id":143, "mid":"003Nz2So3XXYek", "name":"陈奕迅", "pmid":"", "title":"陈奕迅", "type":0, "uin":0 } ], "status":0, "subtitle":"《时尚先生》电影主题曲", "tid":0, "time_public":"2008-06-30", "title":"不要说话", "trace":"", "type":0, "url":"", "version":0, "volume":{ "gain":-8.178000000000001, "lra":9.406000000000001, "peak":1 } } ], "url":{ "9059607":"ws.stream.qqmusic.qq.com/C100002B2EAA3brD5b.m4a?fromtag=38" }, "url1":{ }, "extra_data":[ ], "joox":0, "joox_login":1, "msgid":0} 通过登录QQ取得guid和uin进而取得vkeyQQ音乐的地址如下: dl.stream.qqmusic.qq.com/C400000QCwge3B6Ad1.m4a?vkey= 6FBECDE68E94D9E5B1F6731C5A8D83AE2DE961466D2CF64694D86F94590B3E27592575D38322394478AFC921DA703B6805A4278DE54344F1&GUID= 1849502645&UIN=1000&fromtag=66其实就是:dl.stream.qqmusic.qq.com/C400$songmid.m4a?vkey=$vkey的值&guid=$guid值&uin=$uin&fromtag=66 guid需要QQ登录后才能取得,uin就是你登录的QQ号,经测试guid和qq号可以任意输出,而不需要登录,仅客户端的VIP歌曲无效根据guid和uin通过https://u.y.qq.com/cgi-bin/musicu.fcg取得vkey,取得过程可以看下面的python代码 python代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import requestsimport jsonclass QQmusic: def __init__(self): self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'} self.sl = [] self.musicList = [] # 获取页面 def getPage(self,url,headers): res = requests.get(url,headers = headers) res.encoding = 'utf-8' return res # 获取音乐songmid def getSongmid(self): num = int(input('请输入获取条数:')) # num = 20 #name = input('请输入歌名或歌手:') name = '张学友' url = 'http://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=%d&w=%s'%(num,name) # 搜索音乐 res = self.getPage(url,headers=self.headers) print(res.text) html = res.text html = html[9:] html = html[:-1] # 获取songmid js = json.loads(html) songlist = js['data']['song']['list'] for song in songlist: print(song) songmid = song['songmid'] name = song['songname'] self.sl.append((name,songmid)) print('获取成功songmid') # 获取音乐资源,guid是登录后才能获取,nin也是 def getVkey(self): guid = 7347620869 #guid = input('请输入guid:') #经过测试不用登录也能获取vkey,但限制仅能客户端播放的除外 uin = 0 #input('请输入uin:') for s in self.sl: print('开始获取资源') # 获取vkey,purl name = s[0] songmid = s[1] keyUrl = 'http://u.y.qq.com/cgi-bin/musicu.fcg?&data={"req":{"param":{"guid":"%s"}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"%s","songmid":["%s"],"uin":"%s"}},"comm":{"uin":%s}}'%(guid,guid,songmid,uin,uin) res = self.getPage(keyUrl,headers=self.headers) print(res.text) html = res.text keyjs = json.loads(html) purl = keyjs['req_0']['data']['midurlinfo'][0]['purl'] if len(purl)==0 : #仅限客户端播放的音乐purl会为空 continue # 拼凑资源url url = 'http://dl.stream.qqmusic.qq.com/' + purl self.musicList.append((name,url)) print('资源地址获取成功') # 下载音乐 def downloadMusic(self): for m in self.musicList: url = m[1] res = self.getPage(url,headers=self.headers) music = res.content name = m[0] + '.mp3' with open(name, 'wb') as f: f.write(music) print('下载OK') f.closedQQ = QQmusic()QQ.getSongmid()QQ.getVkey()QQ.downloadMusic()

编程实现关闭显示器等的python源代码-等同于按显示器的电源键

可实现功能通过显示器的 DDC/CI 来直接操作显示器,拯救可怜的显示器按键。 支持的操作: 调整亮度 调整对比度 设置色温 / 颜色预设 设置RGB颜色的比例 OSD语言 开关机 切换输入源 自动调整图像 (VGA输入需要) 恢复出厂设置 系统需求Windows Vista +Python3 (建议安装时选上Python Launcher)支持DDC/CI的外接显示器,不支持笔记本内置显示器 使用参考GUI 模式不附加参数启动 monitor_ctrl.py 即可启动GUI,直接拖动滑条设置显示器的参数。 由于显示器应用VCP指令可能需要一定时间,为避免出错,GUI模式将忽略命令行指定的操作。 GUI中显示的配置不会自动刷新,要查看新的配置目前需要重启应用程序。 将文件后缀修改为 .pyw, 直接双击打开,可以避免显示conhost黑窗口 命令行模式当指定 -c 选项或者 tkinter import失败就会使用CLI模式。 py monitor_ctrl.py [-h] [-m Model_string] [-s Settings_string] [-r] [-t] [-c] [-l] [-v] -h 显示帮助 -m 指定要应用到的Monitor Model,不指定则应用到所有可操作的显示器 -s property1=value1:property2=”value 2” 应用多项设置 -r 将显示器恢复出厂设置 -t 对输入执行自动调整(仅VGA输入需要) -c 不启用GUI -l 显示可操作的显示器model -v Verbose logging

实现GiteePages自动部署的aardio源码

问题的由来github提供开源项目管理,同时提供静态网站github page,但国内访问速度很慢,经常打不开,gitee码云在国内,提供和github一样的功能,但gitee page每次推送文件后,不会自动刷新(免费版),必须手动刷新!网上已有提供python自动刷新Gitee Pages的源码! python自动部署Gitee Pages源码 python环境要求python3 + selenium + chromedrive.exe。 先安装好python3(最好设置好国内镜像源,不然安装库,因墙的缘故可能失败) 再安装好selenium库pip install seleniumpip install Alert 下载chrome对应的chromedriver 2.python源码 123456789101112131415161718192021222324252627import timefrom selenium import webdriverfrom selenium.webdriver.common.alert import Alertoption = webdriver.ChromeOptions()#指定chrome浏览器option.binary_location=r'D:\Program Files\CentBrowser64\chrome.exe'#指定chromedriver和chrome版本要匹配driver = webdriver.Chrome(r'D:\Program Files\CentBrowser64\chromedriver.exe')driver.get('https://gitee.com/login')driver.maximize_window()time.sleep(2)user_login = driver.find_element_by_id('user_login')user_login.send_keys("gitee的用户名")driver.find_element_by_id('user_password').send_keys("gitee的登录密码")driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div[1]/div[2]/div[1]/form[1]/div/div/div/div[4]/input').click()time.sleep(2)driver.get('https://gitee.com/此处改为you_gitee_id/此处改为you_gitee_id/pages')driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[2]/div/form/div[6]').click()Alert(driver).accept()time.sleep(5)print("成功")driver.quit()fp = open("D:\log.txt", "a+")now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())fp.write("部署时间:{0}\n".format(now_time))fp.close() 提供此代码的开源项目地址:https://github.com/witmy/my-giteepages上面的代码修改了一下,指定了chrome浏览器地址和chromedriver的地址,这样就不会运行不了!特别适合小白! aardio自动部署Gitee Pages的源码python的代码,如果是新手,安装python,然后直接运行上面的源码,成功的机率很小,因为Chrome driver是需要浏览器和driver版本匹配的!上面的python源码,如果你不熟悉python,基本上调试不会成功!不过不要紧,下面我讲的,小白也会的aardio教程,一步一步复杂粘贴就能实现,你不需要会python,不需要会aardio,一样可以编译一个自动更新gitee pages的执行文件!