def printv(v): for each in v: print(each) def open_random_from_list(filelist): import os from random import choice size=len(filelist) rn=choice(range(size)) song=filelist[rn] os.startfile(song) return (rn,song) def load_string_list_utf8(filename): import io v=[] with io.open(filename,'r',encoding='utf8') as fileobj: while True: line = fileobj.readline() if not line: break v.append(line[:-1]) return v def create_file_library(exts,ndirs): import os file_library=[] for ndir in ndirs: for path,dirs,files in os.walk(ndir): for fn in files: if os.path.splitext(fn)[1] in exts: file_library.append(os.path.join(path,fn)) return file_library def write_lib_obj(v,filename): import sys io=open(filename,'wb') io.write((v["libtype"] + '\x0d\x0a'+ ",".join(v["dirs"]) + '\x0d\x0a').encode('utf-8')) for each in v["lib"]: each+='\x0d\x0a' try: io.write(bytes(each.encode('utf-8'))) except: print('write failed') io.close() def load_lib_obj_from_file(filename): import io d={} with io.open(filename,'r',encoding='utf8') as fileobj: line = fileobj.readline()[:-1] d["libtype"]=line line = fileobj.readline()[:-1] d["dirs"]=line.split(',') d["lib"]=[] while True: line = fileobj.readline() if not line: break d["lib"].append(line[:-1]) return d # global variables glibfn='guilib.txt' gextd={'music':['.mp3','.wav','.flac'],'video':['.mp4','.avi','.wmv']} try: #load from ram print('ram obj') glibobj=oldlibobj except: #load from file print('file obj') try: glibobj=load_lib_obj_from_file(glibfn) except: #default obj print('default obj') glibobj={'libtype':'music' ,'dirs':[r'C:\Users\X\Music'] ,'lib':[] } glibobj['index']=0 #try: # print("grn=",grn) from random import choice import os def parse_ui(): s=entry_handle.get() print('entrytext=',s) # global gdirs glibobj['dirs']=s.split(',') print (glibobj) def button1fn():#play random tu=open_random_from_list(glibobj['lib']) glibobj['index']=tu[0] print (tu) update_ui() def first_in_folder(): i=glibobj['index'] v=glibobj['lib'] while i>=0 and os.path.split(v[i])[0]==os.path.split(v[i-1])[0]: i=i-1 return i def last_in_folder(): i=glibobj['index'] v=glibobj['lib'] while i