示例#1
0
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)
示例#2
0
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
示例#3
0
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
示例#4
0
    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
示例#5
0
    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('Запазена_марка', ''