Closed vasudevavarun closed 1 year ago
Hello @vasudevavarun yes. You can load the playlist and then you have an object. You can rearrange the playlists and dump them again. Do you need some help to do this?
Hello @vasudevavarun yes. You can load the playlist and then you have an object. You can rearrange the playlists and dump them again. Do you need some help to do this?
Yes please, That would be really helpful.
This will do what you want:
from m3u8 import loads
playlist_text = '...' # Your text goes here
parsed_playlist = loads(playlist_text)
parsed_playlist.playlists.sort(key=lambda x: x.stream_info.average_bandwidth).
new_playlist_text = parsed_playlist.dumps()
This gets you:
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:URI="eng.m3u8",TYPE=AUDIO,GROUP-ID="default-audio-group",LANGUAGE="en",NAME="eng",AUTOSELECT=YES,CHANNELS="2"
#EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=458007,AVERAGE-BANDWIDTH=360905,RESOLUTION=416x234,FRAME-RATE=25,CODECS="avc1.4d4014,mp4a.40.2",AUDIO="default-audio-group"
200000.m3u8
#EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=615175,AVERAGE-BANDWIDTH=458716,RESOLUTION=416x234,FRAME-RATE=25,CODECS="avc1.4d4015,mp4a.40.2",AUDIO="default-audio-group"
300000.m3u8
#EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=1311903,AVERAGE-BANDWIDTH=863114,RESOLUTION=640x360,FRAME-RATE=25,CODECS="avc1.4d401e,mp4a.40.2",AUDIO="default-audio-group"
700000.m3u8
#EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=2578647,AVERAGE-BANDWIDTH=1568642,RESOLUTION=1024x576,FRAME-RATE=25,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="default-audio-group"
1400000.m3u8
#EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=3991279,AVERAGE-BANDWIDTH=2357309,RESOLUTION=1280x720,FRAME-RATE=25,CODECS="avc1.4d4020,mp4a.40.2",AUDIO="default-audio-group"
2200000.m3u8
#EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=6707127,AVERAGE-BANDWIDTH=4113283,RESOLUTION=1920x1080,FRAME-RATE=25,CODECS="avc1.4d4029,mp4a.40.2",AUDIO="default-audio-group"
4000000.m3u8
This will do what you want:
from m3u8 import loads playlist_text = '...' # Your text goes here parsed_playlist = loads(playlist_text) parsed_playlist.playlists.sort(key=lambda x: x.stream_info.average_bandwidth). new_playlist_text = parsed_playlist.dumps()
This gets you:
#EXTM3U #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-MEDIA:URI="eng.m3u8",TYPE=AUDIO,GROUP-ID="default-audio-group",LANGUAGE="en",NAME="eng",AUTOSELECT=YES,CHANNELS="2" #EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=458007,AVERAGE-BANDWIDTH=360905,RESOLUTION=416x234,FRAME-RATE=25,CODECS="avc1.4d4014,mp4a.40.2",AUDIO="default-audio-group" 200000.m3u8 #EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=615175,AVERAGE-BANDWIDTH=458716,RESOLUTION=416x234,FRAME-RATE=25,CODECS="avc1.4d4015,mp4a.40.2",AUDIO="default-audio-group" 300000.m3u8 #EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=1311903,AVERAGE-BANDWIDTH=863114,RESOLUTION=640x360,FRAME-RATE=25,CODECS="avc1.4d401e,mp4a.40.2",AUDIO="default-audio-group" 700000.m3u8 #EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=2578647,AVERAGE-BANDWIDTH=1568642,RESOLUTION=1024x576,FRAME-RATE=25,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="default-audio-group" 1400000.m3u8 #EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=3991279,AVERAGE-BANDWIDTH=2357309,RESOLUTION=1280x720,FRAME-RATE=25,CODECS="avc1.4d4020,mp4a.40.2",AUDIO="default-audio-group" 2200000.m3u8 #EXT-X-STREAM-INF:CLOSED-CAPTIONS=NONE,BANDWIDTH=6707127,AVERAGE-BANDWIDTH=4113283,RESOLUTION=1920x1080,FRAME-RATE=25,CODECS="avc1.4d4029,mp4a.40.2",AUDIO="default-audio-group" 4000000.m3u8
Hey, Thank you so much. It worked like a charm.
Thank you @bbayles
Hi!
Is their any way in by which I can sort my m3u8 according to bandwidth?