def izvadki2zapis2dir2srez2opis( izvadki): with open( izvadki ) as f: d = usability.load( f) #print( usability.dump( d )) for fime, opis in d.items(): print( '\n\n------------', fime )#, opis) zapis2dir2srez2opis( fime, opis, optz)
def dai_opis( fopis): log() star_opis = {} #None try: with open( fopis) as f: star_opis = DictAttr( usability.load( f ) ) except IOError: pass return star_opis
def nalichni_imena( o, quick =0): if not o.nalichni_opisi: return nalichni_imena = [] #s(ime).(ime,dir,file) def dobavi( x): s = difflib.SequenceMatcher( junk ) if not quick: ratio = s.ratio elif quick==2: ratio = s.real_quick_ratio else: ratio = s.quick_ratio s._ratio = ratio s._item = x s.set_seq2( x[0].lower() ) nalichni_imena.append( s) def kym_imeto( opis): avtor = opis.get( 'автор') if avtor: if isinstance( avtor, (list,tuple)): avtor = ' '.join( avtor) avtor = avtor.strip() return avtor and ' : '+avtor or '' for fn in glob.glob( o.nalichni_opisi): try: with open( fn) as f: opis = dict( usability.load( f ) ) ime = opis.get( 'име') ime = ime and str(ime).strip() if not ime or not ime.strip('?'): ime = l2c( os.path.basename( fn)) avtor = kym_imeto( opis) ime += avtor dobavi( (ime, fn)) parcheta = opis.get( 'парчета') if not parcheta: continue for fnp,p in parcheta.items(): if isinstance( p, str): ime = p avtor1 = avtor else: ime = p.get( 'име') avtor1 = kym_imeto( p) or avtor ime = ime and str(ime).strip() ime = ime or l2c( fnp) ime += avtor1 dobavi( (ime, fn, fnp) ) except IOError: pass except Exception as e: print( fn, ':', str(e), file= sys.stderr) raise print( '#налични описи:', len( nalichni_imena), file= sys.stderr) def tyrsach( ime): return tyrsi_podobni( ime, nalichni_imena, min_ratio= 0.7 ) o.tyrsach = tyrsach return tyrsach
optz.bool( 'premesti') optz.bool( 'izvadki') optz.bool( 'parcheta') optz.bool( 'log') optz.str( 'rubrika') optz,args = optz.get() obvivka.naistina = optz.zapis obvivka.log = optz.log #False if optz.izvadki or ospath.isfile( args[0] ): izvadki2zapis2dir2srez2opis( args[0]) else: for d in appendif( [], *args): #uniq assert ospath.isdir( d), d d = d.rstrip('/') fopis = d+'/opis' if not exists( fopis): continue print( d) with open( fopis) as f: opis = usability.load( f) ime = dai_ime( opis) print( ime) if optz.gotovo: gotovo( d, opis, kym= optz.gotovo, ime=ime) elif optz.obnovi: obnovi( d, opis) else: diropis2srez( d, opis, optz) # vim:ts=4:sw=4:expandtab
print( '... ', dir) try: f = open(fn).readlines() except Exception as e: print( fn, e) continue f = [ 'автори_отделни: "'+ l.split(':',1)[-1].strip()+'"' if l.startswith( '#автори_отделни:') else l.rstrip() for l in f ] f = io.StringIO( '\n'.join( f)) #f.replace( '\n#автори_отделни:', '\nавтори_отделни:' )) opis = dict( usability.load( f ) ) ime = opis.get( 'име') ime = ime and str(ime) if not ime or not ime.strip('?'): ime = ''#l2c( os.path.basename( fn)) avtor = opis.get( 'автор') avtor_dylyg = opis.get( 'автори_отделни') if avtor_dylyg and optz.avtori_otdelni: avtor = avtor_dylyg def sykr_rubr(x): return (x ).replace('Салон_за_класифицирана_словесност', 'Салон_словесност' ).replace('Салон_за_класифицирана', 'Салон_словесност' ).replace('Голямата_къща_на_смешните_хора', 'ГКСХ' ).replace('Златните_гласове_на_радиото', 'Златните_гласове' ).replace('Запазена_марка', ''