Hervorragende Software und praktische Tutorials
Dieses Tool ruft die Live-Übertragungsadresse von Migu Video in Echtzeit ab und speichert sie in ./lives/migu.txt. Sie können es direkt verwendenTVBox APP-Konfiguration.
http://127.0.0.1:9978/file/TVBoxx/MeowTV/TVBoxx/lives/migu.txt
/storage/emulated/0/ Der Speicherpfad dieses Tools ist /TVBoxx/MeowTV/TVBoxx/Sie können ihn nach Belieben ändern
Zeitbedarf: ca. 4 Stunden oder länger, spezifischer Selbsttest
Nein, nein, nein, nein, ich sage es dreimal, weil es wichtig ist.m3u8 Migu Video Live-Übertragungsadresse.
Über das m3u8 des Migu-Videos ##
https://blog.csdn.net/chouzhou9701/article/details/119260799
importiere Anfragen, JSON, Zeit, Zufallsprinzip aus URL-Bibliothek, importiere Parsen aus Pprint, importiere Pprint #Alle Kanäle: https://m.miguvideo.com/m/home/f08583e602f846a5b870f3de3b673326?plt=sub&channelId=10010001005 def get_topVomsID(): #CCTVs VomsID: url='https://program-sc.miguvideo.com/live/v2/tv-data/a5f78af9d160418eb679a6dd0429c920' res=requests.get(url,headers=headers) res_js=json.loads(res.text)['body'] livelist=res_js['liveList'] #all:['Popular', 'Sport', 'CCTV', ['Satellitenfernsehen', 'Lokales', 'Film und Fernsehen', 'Nachrichten', 'Bildung', 'Panda', 'Unterhaltung', 'Kinder', 'Dokumentation', 'Eindruck von der Welt', 'Radio'] mychannels=['Popular', 'Sport', 'CCTV', 'Satellitenfernsehen', 'Film und Fernsehen'] # selbst ausgewählte Kanäle #print(livelist) #nowVomsId=res_js['nowVomsId'] top_names,vomsIDs=[],[] für Liste in livelist: top_name,vomsID=list['name'],list['vomsID'] wenn top_name in mychannels: top_names.append(top_name) vomsIDs.append(vomsID) drucken(f'selbst ausgewählte Kanäle:{top_names}') returniere top_names,vomsIDs def get_tv_id(id): #CCTV Programmliste jetzt|nächstes, Symbol, pID, Name # CCTV: url=f'https://program-sc.miguvideo.com/live/v2/tv-data/{id}' #print(url) res=requests.get(url,headers=headers) res_js=json.loads(res.text)['body'] datalist=res_js['dataList'] Namen,pIDs=[],[] für Daten in der Datenliste: name=data['name'] pID=data['pID'] names.append(name) pIDs.append(pID) nw=data.get('now','') if nw!='': jetzt=nw['Startzeit']+'-'+nw['Endzeit']+' '+nw['Spielname'] wenn 'nächstes' in Daten: nt=Daten['nächstes'] nächstes=nt['Startzeit']+'-'+nt['Endzeit']+' '+nt['Spielname'] drucken(Name,pID,jetzt,nächstes) sonst: drucken(Name,pID,jetzt) Namen,pIDs zurückgeben def get_play_url(pIDs): #print(pIDs) h5_urls=[] für ID in pIDs: #print(id) #rateType=3HD #print(id)#live "pID":"608807420" url=f'https://webapi.miguvideo.com/gateway/playurl/v3/play/playurl?contId={id}&rateType=3&startPlay=true' #url='http://webapi.miguvideo.com/gateway/playurl/v2/play/playurlh5?contId=635491149&rateType=3&startPlay=true' #url='https://webapi.miguvideo.com/gateway/playurl/v3/play/playurl?contId=635491149&rateType=3&startPlay=true' #'http://webapi.miguvideo.com/gateway/playurl/v2/play/playurlh5?contId=631780532&rateType=3& clientId=5e31849abe9be8ad087ca5fbd67b0e14&startPlay=true&xh265=false&channelId=0131_10010001005' #time.sleep(1) res=requests.get(url,headers=headers) play_jsons=json.loads(res.text)##Nur eine Quelle message=play_jsons["message"] if message=="SUCCESS": #pprint(play_jsons) h5_url=play_jsons['body']['urlInfo']['url'] #TypeError: 'NoneType' Copyright-Einschränkungen beim Zugriff#cctv1608807420 h5_urls.append(h5_url) sonst: print(f'ID:{id} ,Urheberrechtsbeschränkungen,Kann nicht ansehen') h5_urls.append('error') return h5_urls def ddCalcu(url): #play_url analysiert getm3u8-Adresse erneutnew_url = parse.urlparse(url) #print(new_url) para = dict(parse.parse_qsl(new_url.query)) #print(para) userid = para.get("userid","") timestamp = para.get("timestamp","") ProgramID = para.get("ProgramID","") Channel_ID = para.get("Channel_ID","") puData = para.get("puData","") t = userid wenn userid sonst "eeeeeeeee" r = timestamp wenn timestamp sonst "tttttttttttttttt" n = Programm-ID wenn Programm-ID sonst "ccccccccc" a = Kanal-ID wenn Kanal-ID sonst "nnnnnnnnnnnnnnnn" o = puData wenn puData sonst "" wenn nicht o: URL zurückgeben s = Liste("2624") u = Liste(t)[int(s[0])] oder "e" l = Liste(r)[int(s[1])] oder "t" c = Liste(n)[int(s[2])] oder "c" f = Liste(a)[len(a)-int(s[3])] oder "n" d = Liste(o) h = [] p = 0 #print(p*2 < len(d)) während p*2 < len(d): h.append(d[len(d)-p-1]) wenn p < len(d) - p -1: h.append(o[p]) wenn p == 1: h.append(u) wenn p == 2: h.append(l) wenn p == 3: h.append(c) wenn p == 4: h.append(f) p += 1 v = "".join(h) return url + "&ddCalcu=" + v def api(new_url): # analysiert Header zum dritten Mal={ 'Host': 'h5live.gslb.cmvideo.cn', 'Connection': 'keep-alive', 'Accept': 'text/plain, */*; q=0.01', 'X-Requested-With': 'mark.via', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', 'Origin':'http://m.miguvideo.com', 'Referer':'http://m.miguvideo.com/', 'User-Agent':'Mozilla/5.0 (Linux; Android 10; SP300 Build/CMDCSP300;) AppleWebKit/537.36 (KHTML, wie Gecko) Version/4.0 Chrome/92.0.4515.105 Mobile Safari/537.36'} #param={'crossdomain':'www'} time.sleep(1) #104: Netzwerkverbindungsausnahme Versuchen Sie #requests.exceptions.ConnectionError: Versuchen Sie: res=requests.get(new_url,headers=headers,timeout=10) #print(res.status_code) m3u8=str(res.text) geben Sie m3u8 zurück, außer requests.exceptions.ConnectionError als e: drucken('✘Netzwerkverbindungsausnahme: ', e) geben Sie False zurück, außer requests.exceptions.Timeout als e: drucken('✘Verbindungstimeout: ',e) außer requests.exceptions.RequestException als e: drucken('✘Anforderungsausnahme: ', e) außer requests.exceptions.HTTPError als e: drucken(f'✘HTTP-Fehler, Statuscode: {e.response.status_code}, {e}') außer ValueError als e: drucken('✘Ausnahme beim Parsen der Antwort: ', e) def run(): top_vmos=get_topVomsID() top_names,vomsIDs=top_vmos[0],top_vmos[1] ftime = time.strftime("%Y%m%d %H:%M", time.localtime()) s='🎈🦋🦜🍀💋🎤🎗🎖\ 🏅✨🎋🌳🍃🌱🌿☘💥\ 🥇🥈🥉🌹🏵 ️🍂🌺🎍🌴' f=öffnen('lives/migu.txt','w+') f.schreiben(f'🎖Migu Live-Quelle,#genre#\n') f.schreiben(f'von caliph21_{ftime} Update,https://15799848.s21v.faiusr.com/58/ABUIABA6GAAgr-2n9AUoqsakNg.mp4\n') f.schreiben('Neustart,https://vd4.bdstatic.com/mda-mkn4iq79ihtufbc1/sc/cae_h264/1637639849265611965/mda-mkn4iq79ihtufbc1.mp4\n\n') f.schließen() für i im Bereich(Länge(vomsIDs)): Bild = zufällige Auswahl (en) Top-Name = Top-Namen [i] Drucken ('\ n', Top-Name, f '{i + 1} / {Länge (vomsIDs)}') #time.sleep (1) TV-ID = TV-ID abrufen (vomsIDs [i]) Drucken ('\ n') #time.sleep (1) h5-URLs = Wiedergabe-URL abrufen (TV-ID [1]) f = öffnen ('lives/migu.txt', 'a +') f. schreiben (f '{Bild} | {Top-Name}, #-Genre # \ n \ n') f. schließen () für Name, URL in Zip (TV-ID [0], h5-URLs): # Drucken (URL) wenn URL! = 'Fehler': neue URL = ddCalcu (URL) #print(neue_URL) #time.sleep(1) m3u8=api(neue_URL+'&crossdomain=www') #print(url==neue_URL) wenn m3u8!=Falsch: # entferne 104 Netzwerkverbindungsausnahme print(f'Quelle wird aktualisiert: {name} ……') #print(m3u8) mit open('lives/migu.txt','a+') als f: f.write(name+','+str(m3u8)+'\n') f.close() wenn __name__ == '__main__': #names,pIDs=[],[] headers={'User-Agent':'Mozilla/5.0 (Linux; Android 10; SP300 Build/CMDCSP300;) AppleWebKit/537.36 (KHTML, wie Gecko) Version/4.0 Chrome/93.0.4515.105 Mobile Safari/537.36'} run() #url = „https://h5live.gslb.cmvideo.cn/migu/kailu/20200324/cctv4meihd/50/index.m3u8?msisdn=20231224165648c5b9040c723843188ccd7b0e30f81b36&mdspid =&spid=699004&netType=0&sid=2200179344&pid=2028597139×tamp=20231224165648&Channel_ID=0116_25000000-99000-100300010010001&ProgramID=6088074 16&ParentNodeID=-99&assertID=2200179344&client_ip=240e:478:4840:1642:17a3:aca9:695:be83&SecurityKey=20231224165648&promotionId=&mvid=22001 79344&mcid=500020&playurlVersion=WX-A1-6.12.1.1-RELEASE&userid=&jmhm=&videocodec=h264&bean=mgsph5&puData=8c5826a81b06fdc46a46a9128be66cd0" #url='https://h5live.gslb.cmvideo.cn/wd_r2/cctv/cctv1hd/600/index.m3u8?msisdn=202312241405015bc0ae24f1bb42dc9e16ff0f7ac931f9&mdspid=& spid=699004&netType=0&sid=2201057821&pid=2028597139×tamp=20231224140501&Channel_ID=0116_25000000-99000-100300010010001&ProgramID=60880742 0&ParentNodeID=-99&assertID=2201057821&client_ip=240e:478:4840:1642:17a3:aca9:695:be83&SecurityKey=20231224140501&promotionId=&mvid=22010 57821&mcid=500020&playurlVersion=WX-A1-6.12.1.1-RELEASE&userid=&jmhm=&videocodec=h264&bean=mgsph5&puData=3f841e2a0b365c2914ee68cd75073bdb' #new_url = ddCalcu(url) #print(new_url) #from transformers import CLIPModel #model = CLIPModel.from_pretrained("openai/clip-vit-large-patch14", from_tf=True)