2017-03-27 2 views
0

J'écris un script en Python qui devrait imprimer le lien vers le sous-profil (01.m3u8, 02.m3u8, 108.m3u8, etc.) . Ceci est mon code:Python: imprime une ligne si une chaîne spécifique existe dans le fichier URL

#!/usr/bin/env python 

from urllib import quote 
import requests 

input_file = quote(raw_input("Please enter the input file path: "), safe=':''/') 

read_file = requests.get(input_file, verify = False) 
for line in read_file: 
     if "m3u8" in line: 
       print line 

Le flux d'entrée est un fichier manifeste HLS. Ceci est la syntaxe de celui-ci:

#EXTM3U 
#EXT-X-VERSION:4 
#EXT-X-INDEPENDENT-SEGMENTS 
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="deu_1",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="deu",URI="06.m3u8" 
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="deu_2",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="deu",URI="07.m3u8" 
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="DEU_32_149",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="DEU",URI="108.m3u8" 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=206701,RESOLUTION=320x180,FRAME-RATE=12.500,AUDIO="audio",SUBTITLES="subs" 
01.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=681504,RESOLUTION=320x180,FRAME-RATE=25.000,AUDIO="audio",SUBTITLES="subs" 
02.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1243460,RESOLUTION=480x270,FRAME-RATE=25.000,AUDIO="audio",SUBTITLES="subs" 
03.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1917808,RESOLUTION=960x540,FRAME-RATE=25.000,AUDIO="audio",SUBTITLES="subs" 
04.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3532769,RESOLUTION=1280x720,FRAME-RATE=50.000,AUDIO="audio",SUBTITLES="subs" 
05.m3u8 

Et quand je lance mon script la sortie est:

LECT=YES,LANGUAGE="deu",URI="06.m3u8" 
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="deu_2",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE= 
"deu",URI="07.m3u8" 
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="DEU_32_149",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="DEU",URI= 
"108.m3u8" 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=206701,RESOLUTION=320x180,FRAME-RATE=12.500,AUDIO="audio",SUBTITLES="subs" 

01.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=681504,RESOLUTION=320x180,FRAME-RATE=25.000,AUDIO="audio",SUBTITLES="subs" 
0 
2.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1243460,RESOLUTION=480x270,FRAME-RATE=25.000,AUDIO="audio",SUBTITLES="subs" 
03 
.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1917808,RESOLUTION=960x540,FRAME-RATE=25.000,AUDIO="audio",SUBTITLES="subs" 
04. 
m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3532769,RESOLUTION=1280x720,FRAME-RATE=50.000,AUDIO="audio",SUBTITLES="subs" 
05. 
m3u8 

Je sais que je suis actuellement en train d'imprimer toute la ligne, mais pourquoi il rapporte:

05. 
m3u8 

et non 05.m3u8

+2

Avez-vous essayé de enlrage de votre terminal, il semble le terminal pourrait être petit pour montrer toute la ligne – Eliethesaiyan

Répondre

0

Apparemment, il y a un bibliothèque m3u8 en Python qui peut faire exactement ce que je cherche:

#!/usr/bin/env python 
from urllib import quote 
import m3u8 

input_file = quote(raw_input("Please enter the input file path: "), safe=':''/') 

m3u8_main = m3u8.load(input_file) 
for playlist in m3u8_main.playlists: 
     print playlist.uri 

La documentation complète est disponible à: m3u8 library