[color=#008800][i]#! /usr/bin/env python[/i][/color]
[color=#008800][i]# -*- coding: utf-8 -*-[/i][/color]
[color=#AA22FF][b]from[/b][/color] [color=#0000FF][b]argparse[/b][/color] [color=#AA22FF][b]import[/b][/color] ArgumentParser
[color=#AA22FF][b]from[/b][/color] [color=#0000FF][b]random[/b][/color] [color=#AA22FF][b]import[/b][/color] shuffle
[color=#AA22FF][b]def[/b][/color] [color=#00A000]read_m3u[/color](name):
[color=#AA22FF][b]with[/b][/color] [color=#AA22FF]open[/color](name,[color=#BB4444]'rb'[/color]) [color=#AA22FF][b]as[/b][/color] m3u_file:
stripped [color=#666666]=[/color] (line[color=#666666].[/color]strip() [color=#AA22FF][b]for[/b][/color] line [color=#AA22FF][b]in[/b][/color] m3u_file)
[color=#AA22FF][b]return[/b][/color] [line [color=#AA22FF][b]for[/b][/color] line [color=#AA22FF][b]in[/b][/color] stripped
[color=#AA22FF][b]if[/b][/color] line [color=#AA22FF][b]and[/b][/color] [color=#AA22FF][b]not[/b][/color] line[color=#666666].[/color]startswith([color=#BB4444]'#'[/color])]
[color=#AA22FF][b]def[/b][/color] [color=#00A000]random_line_gen[/color](playlist):
[color=#AA22FF][b]while[/b][/color] [color=#AA22FF]True[/color]:
shuffle(playlist)
[color=#AA22FF][b]for[/b][/color] line [color=#AA22FF][b]in[/b][/color] playlist:
[color=#AA22FF][b]yield[/b][/color] line
[color=#AA22FF][b]def[/b][/color] [color=#00A000]gen_list[/color](playlists, lines[color=#666666]=[/color][color=#AA22FF]None[/color]):
[color=#AA22FF][b]if[/b][/color] [color=#AA22FF][b]not[/b][/color] lines:
lines [color=#666666]=[/color] [color=#AA22FF]len[/color]([color=#AA22FF]max[/color](playlists, key[color=#666666]=[/color][color=#AA22FF]len[/color]))
shuffled_playlist [color=#666666]=[/color] [color=#AA22FF]map[/color](random_line_gen, playlists)
[color=#AA22FF][b]while[/b][/color] lines:
[color=#AA22FF][b]for[/b][/color] playlist [color=#AA22FF][b]in[/b][/color] shuffled_playlist:
[color=#AA22FF][b]print[/b][/color](playlist[color=#666666].[/color]next())
lines [color=#666666]-=[/color] [color=#666666]1[/color]
[color=#AA22FF][b]if[/b][/color] __name__ [color=#666666]==[/color] [color=#BB4444]"__main__"[/color]:
parser [color=#666666]=[/color] ArgumentParser(description[color=#666666]=[/color][color=#BB4444]"Creates a new,random playlist."[/color])
parser[color=#666666].[/color]add_argument([color=#BB4444]"file"[/color], nargs[color=#666666]=[/color][color=#BB4444]"+"[/color], help[color=#666666]=[/color][color=#BB4444]"file1 file2 ..."[/color])
parser[color=#666666].[/color]add_argument([color=#BB4444]"--lines"[/color], [color=#AA22FF]type[/color][color=#666666]=[/color][color=#AA22FF]int[/color], default[color=#666666]=[/color][color=#AA22FF]None[/color])
args [color=#666666]=[/color] parser[color=#666666].[/color]parse_args()
gen_list([color=#AA22FF]map[/color](read_m3u, args[color=#666666].[/color]file), args[color=#666666].[/color]lines)