import sys import datetime, calendar, time import os.path from svd_util import optz, datetimez optz.text( 'year') optz.text( 'hour') optz.bool( 'ilocal') optz.bool( 'olocal') optz.bool( 'fake', '-n' ) optz,args = optz.get() def delta( dt, what): v = getattr( optz, what) if v: iv = int(v) if v[0].isdigit(): dt = dt.replace( **{ what: iv }) else: if what == 'hour': what = 'seconds' iv = 3600*iv dt = dt + datetime.timedelta( **{ what: iv }) return dt for a in args: d = os.path.getmtime(a) dti = datetimez.timestamp2datetime( d, local= optz.ilocal) dt = dti dt = delta( dt, 'year') dt = delta( dt, 'hour')
if res != exp: print( '\n %(res)s ?=\n %(exp)s' % locals()) assert res == exp for w,w1 in zip( t0.split(), t1.split() ): tst( hyphtext( w, **cfg), w1 ) tst( hyphtext( t0, **cfg), t1 ) print( t1) if __name__ =='__main__': from svd_util import optz optz.help( u''' %prog [options] <infile >outfile %prog [options] думи за пренасяне ... '''.rstrip()) optz.text( 'hyphen',help= u'"тире" за отбелязване на пренасянето (меко/скрито-тире); подразбира се "%default"', default= config.hyphen ) optz.bool( 'html', help= u'ползва HTML-меко-тире %(HTML_HYPHEN)r (вместо горното)' % locals() ) optz.str( 'start', help= u'започва да променя след този текст' ) optz.bool( 'htmlpre', help= u'пропуска съдържанието на <pre>..</pre> групи' ) optz.int( 'minsize', help= u'думи под тази дължина не се пренасят; подразбира се %default', default =config.minsize ) optz.bool( 'utf', help= u'вх/изх utf8' ) optz.bool( 'iutf', help= u'вх utf8' ) optz.bool( 'iguess',help= u'вх познай кодировката' ) optz.bool( 'outf', help= u'изх utf8' ) optz.bool( 'i1251', help= u'вх cp1251' ) optz.bool( 'o1251', help= u'изх cp1251' ) optz.bool( 'cp1251',help= u'вх/изх cp1251' ) optz.bool( 'test', help= u'самопроверка' ) optz.bool( 'demo', help= u'демо' ) optz,args = optz.get()
#XXX HACK shutil.copytree _makedirs = os.makedirs def makedirs( *a,**ka): if 1: ka['exist_ok'] = True return _makedirs( *a,**ka) else: #see svd_util.osextra.makedirs... py<=3.4 try: _makedirs( *a,**ka)#, exist_ok =True) except OSError as e: if e.errno != errno.EEXIST: raise os.makedirs = makedirs from svd_util import optz optz.text( 'include', '-i', help= 'these-only, regexp.match, applied over whole path' ) optz.text( 'exclude', '-x', help= 'these-skip, regexp.match, applied over whole path, has priority over --include' ) optz,argz = optz.get() exclude = None if optz.exclude: import re print( 'excluding:', optz.exclude) exclude = re.compile( optz.exclude) include = None if optz.include: import re print( 'including:', optz.include) include = re.compile( optz.include) src,dst = argz[:2]
optz.list( 'dirinclude', help= 'include dirpattern (multiple)') optz.bool( 'verbose', '-v') optz.simvolni = True #', '-L', help= 'обхожда и символни връзки') ops = { os.rename : 'mv move', os.link : 'ln link', # os.link : 'cp copy', None: 'print' } op2op = {} for op,names in ops.items(): for n in names.split(): op2op[n] = op optz.text( 'op', type= 'choice', choices= ' '.join( sorted( ops.values())).split(), help= 'operation: ln/link mv/move cp/copy, default: print') optz,argz = optz.get() target = argz.pop( -1) ops = [] def match1( f, p): return fnmatch.fnmatch( f,p) def match( f, patterns): for p in patterns: if match1( f, p): return True def included( a, inc, exc):
Haikyuu Лунтик Терраформирование == Terra Formars Хвост Феи == Gekijouban Fairy Tail S\d{1,2}E\d+ ''') if __name__ == '__main__': srcs = dict( (d.__name__, d) for d in Iztochnik.__subclasses__()) from svd_util import optz optz.text( 'ienc', help= 'входно кодиране; подразбиране - автоматично' ) optz.text( 'oenc', help= 'изходно кодиране', ) optz.int( 'stranici', help= 'колко страници; подразбиране - според източника', default=0 ) optz.list( 'iztochnik', type= 'choice', choices= sorted( srcs), help= 'източник (%s), може няколко пъти; подразбиране - всички' % ' '.join( sorted( srcs)) ) optz.text( 'skriti', help= 'файл с филтрите') optz.bool( 'podrobno', help= 'показва извлечените имена') optz.bool( 'trij', help= 'изтрива филтрираните елементи вместо само да ги скрива/свива') optz,argz = optz.get() if optz.ienc=='auto': optz.ienc=None if optz.oenc: from svd_util.eutf import fix_std_encoding, filew fix_std_encoding( ENC= optz.oenc)
optz.simvolni = True #', '-L', help= 'обхожда и символни връзки') ops = { os.rename: "mv move", os.link: "ln link", # os.link : 'cp copy', None: "print", } op2op = {} for op, names in ops.items(): for n in names.split(): op2op[n] = op optz.text( "op", type="choice", choices=" ".join(sorted(ops.values())).split(), help="operation: ln/link mv/move cp/copy, default: print", ) optz, argz = optz.get() target = argz.pop(-1) ops = [] def match1(f, p): return fnmatch.fnmatch(f, p) def match(f, patterns):
sizemins += o.cron_later_minutes print( t.minute, t.hour, t.day, t.month, '*', o.cron_user or '', o.cron, sizemins and '-m '+str(sizemins) or '', '--fname', fname, '--stream', x.stream, ) if __name__ == '__main__': from svd_util import optz optz.bool( 'html_strict', help= 'хтмл-парсер: стриктен' ) optz.bool( 'html_notfixed', help= 'хтмл-парсер: непоправен оригинален' ) optz.text( 'ienc', help= 'входно кодиране [автоматично]' ) optz.text( 'oenc', help= 'изходно кодиране [%default] (напр. за crontab)', ) optz.text( 'cron', help= 'прави crontab, пускайки тази команда (може с аргументи)') # optz.text( 'cron_file', help= 'записва го в този файл, иначе stdout') optz.text( 'cron_user', help= 'потребител за crontab, ако трябва' ) optz.bool( 'cron_fname_notime', help= 'без дата/час в резултатното име' ) optz.int( 'cron_earlier_minutes', help= 'пуска толкова минути по-рано') optz.int( 'cron_later_minutes', help= 'спира толкова минути по-късно') optz.int( 'cron_later_percent', help= 'спира толкова процента по-късно') optz.bool( 'nofilter', help= 'всичко, без филтри' ) optz.int( 'days', help= 'филтър толкова дни от днес [%default]', default=1 ) optz.append( 'force', help= 'включва на запис, формат: канал-чч:мм-чч:мм[-име] но може без име', ) # optz.bool( 'preferdaily', help= 'при наличие на дневна и всичко, без филтри' ) choices= list( bnr_kanali.keys()) optz.append( 'channel', choices= choices,
fps = float_framepersecond offset= min:sec scale= float_time_scaler title= instead-of-input-file-name ''' from cutter import Cutter from svd_util import optz, struct, eutf optz.usage( '''%prog cutfile cutfile can be - for stdin ''') optz.bool( 'do_nothing', '-n') optz.bool( 'verbose', '-v') optz.bool( 'makedir', '-d') optz.text( 'path', help= 'out-path' ) optz.text( 'metafname', help= 'out-metadata-filename' ) optz.text( 'infile', help= 'input .wav if not in cutfile' ) #optz.text( 'inpath', help= 'path for input files if relative, default=dirname(cutfile)-or-.' ) #optz.text( 'encoding', default='utf8', help= 'default=%default' ) optz.text( 'album', help= 'common title of all inputs' ) optz.text( 'offset', help= 'mm:ss.s or ssss.s' ) optz.add( 'fps', type=float, default=1, help= 'frame-per-second float for time-as-frames, default=%default' ) optz.add( 'scale', type=float, default=1, help= 'float coef to scale the times' ) import sys, re from os.path import dirname, join from svd_util.minsec import sec2minsec, prnsec, minsec2sec def zaglavie(x): return x and x[0].upper() + x[1:]
#!/usr/bin/env python #svd'2k2-7 'better view onto python profiler results' #XXX BEWARE That 2.4 - 2.5 - 2.6 have diff.file-format try: from svd_util import optz except: import os.path, sys p = os.path.realpath( __file__).split('/') sys.path.insert( 0, '/'.join( p[:-2]) ) import optz #hope it lives in .. optz.help( '%prog [options] [numberlines] infile') optz.bool( 'hotshot', help= 'load data as hotshot') optz.text( 'strip', help= 'regexp to strip from filenames; replaced with .#') optz.text( 'rootstrip', default= '.*/(site-packages|python\d\.\d+)/', help= 'regexp to strip from filenames; replaced with ##; defaults to %defaults', ) optz.bool( 'withcalls', help= 'include call-stacks') options,args = optz.get() import re import pstats def func_strip_path(func_name): filename, line, name = func_name if options.rootstrip: filename = re.sub( options.rootstrip, '##', filename) if options.strip: filename = re.sub( options.strip, '.#', filename) return filename, line, name return func_name
#!/usr/bin/env python from __future__ import print_function import sys from svd_util import optz optz.usage( '%prog [opts] wavfile[s]' ) optz.bool( 'verbose', '-v') optz.text( 'outfile', '-o', help= 'outfile, "-" for stdout') optz.int( 'maxsize', '-l', help= 'max size in MBs, per item') options,args = optz.get() def prn( *a): print( *a, file=sys.stderr) import wave o = None oname = options.outfile if oname == '-': oname = sys.stdout sz = options.maxsize totals = 0.0 oparams = None for a in args: i = wave.open( a, 'r') params = (nchannels, sampwidth, framerate, nframes, comptype, compname) = i.getparams() iparams = params[:3]+params[4:] size = nframes/float(framerate) totals += size prn( '< %s: %.2f s' % (a, size,) , options.verbose and params or '') if oparams: assert iparams == oparams, (oparams, iparams) oparams = iparams
iformats = formats oformats = formats + 'text'.split() ifmts = fullmap( iformats) ofmts = fullmap( oformats) from svd_util import optz optz.usage( '%prog [options] files') optz.str( 'input', default='python', type='choice', choices = list(ifmts), help= f'input format [%default]: {", ".join(iformats)} ; initial letters also work') optz.str( 'output', default ='html', type='choice', choices = list(ofmts) + 'text'.split(), help= f'output format [%default]: {", ".join(oformats)} ; initial letters also work') optz.str( 'subst_in', help= 'file to put the output substituting some part (what/where depends on output-type, i.e. json_opera)') optz.bool( 'flat' , help= 'dump') #optz.bool( 'html', help= 'out=.html') #optz.bool( 'adr', help= 'out=.adr') #optz.bool( 'netscape', help= 'out=.html, netscape/firefox/opera export dl/dt style') optz.text( 'rootiname', help= 'root = in[ /from/here ]') optz.text( 'rootoname', help= 'out[ /to/there ] = root') optz.text( 'skip', help= 'path/to/skip') optz.bool( 'nounique', help= 'ignore UNIQUEID' ) optz.bool( 'align', help= '(for out=.adr)') optz.bool( 'notrash', help= 'ignore trash (for out=.adr)' ) optz.bool( 'nosort', help= 'dont sort items' ) options,args = optz.get() if options.nounique: Node.ATTRS.remove( 'UNIQUEID') #from svd_util.eutf import readlines options.output = ofmts[ options.output ] options.input = ifmts[ options.input ]
left/right column separator = can be just space if names has no spaces dont-check !: dir/file = some/thing! wont-check roots: dir/file = /d/i/r.. specials: dir/ -> dir/(.*).mp3->dir/the-single.mp3 --singles -> auto-apply above, for all ./dirs that have single mp3 ''' ext_equivs = 'mp3 wma ogg'.split() import sys def printerr(*a,**k): print( file= sys.stderr, *a,**k) from svd_util import optz optz.text( 'base', help= 'base url') optz.text( 'path', help= 'base filepath') #optz.text( 'root', help=' root filepath, so root+ /base-url is valid filepath') optz.bool( 'on', help= 'RewriteEngine on') optz.bool( 'singles', help= 'for all ./dirs that have single mp3 inside, route dir/(.*).mp3->dir/the-single.mp3') optz,args = optz.get() #RewriteEngine on if optz.on: print( 'RewriteEngine on') if optz.base: print( 'RewriteBase', optz.base) path = optz.path or '' from os.path import splitext, exists, isdir, join, dirname, basename from glob import glob
#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import os join = os.path.join from svd_util import optz optz.help( 'apply moves-around-dirs/deletes from template/ into .') optz.bool( 'real', '-y', ) optz.text( 'exclude', '-x', help= 'regexp',) optz.list( 'ignore' , '-i', help= 'file/dir-names', default= []) optz.bool( 'alsodirs' , help= 'check moving of dirs too') optz.bool( 'dup2ignore' , help= 'ignore duplicates') optz.text( 'deldir' , default='del', help= 'folder to move deleted items into [%default]') optz,args = optz.get() none = not optz.real template = args[0].rstrip('/') from collections import defaultdict tree = {} paths = set() try: os.mkdir( 'del') except Exception as e: print( e) #optz.exclude = [ a.rstrip('/') for a in optz.exclude ] exclude = None if optz.exclude: import re
return root def key4tree(x): return x.NAME #getattr( x, 'URL', '') def key4flat(x): return x.URL, x.NAME from svd_util import optz optz.usage( '%prog [options] files') optz.bool( 'o2py' ) optz.bool( 'py2o' ) optz.bool( 'ipy' ) optz.bool( 'align' ) optz.bool( 'flat' ) optz.bool( 'html', ) optz.text( 'root', ) optz.bool( 'nounique', help= 'ignore UNIQUEID' ) optz.bool( 'notrash', help= 'ignore trash' ) options,args = optz.get() if options.nounique: ATTRS.remove( 'UNIQUEID') #from svd_util.eutf import readlines #inp = codecs.getreader('utf-8') for a in args: #r = '\n'.join( readlines( open( a ))) r = open( a, encoding='utf-8').read().strip() if options.ipy or options.py2o: root = eval( r, dict(dict=Node) )
#see http://hints.macworld.com/article.php?story=20080623213342356 from os.path import join import os.path as ospath import os, stat, shutil from svd_util import optz, osextra optz.list( 'exclude', help= 'exclude filepattern (multiple)') optz.list( 'include', help= 'include filepattern (multiple)') optz.list( 'direxclude', help= 'exclude dirpattern (multiple)') optz.list( 'dirinclude', help= 'include dirpattern (multiple)') optz.bool( 'dont', '-n', help= 'dont actualy do anything') optz.bool( 'verbose', '-v', help= 'verbose') optz.bool( 'linkusage', help= 'symlink used or unused links to archive/_used/ or _unused') optz.text( 'orgarchive', help= 'path to the original hidden archive .HPF...') optz.text( 'archive', help= 'archive-dir-name -instead of that hidden .HPF... [%DEFAULT]', default= '_archiv') optz,argz = optz.get() target = argz.pop( -1) archive = optz.archive def match1( f, p): return fnmatch.fnmatch( f,p) def match( f, patterns): for p in patterns: if match1( f, p): return True def included( a, inc, exc): if inc and not match( a, inc): return if exc and match( a, exc): return return a
#!/usr/bin/env python # sdobrev 2012 'generate a (wiki) page from first __doc__ line/para of input python files (e.g. for github)' try: from svd_util import optz except: import os.path, sys p = os.path.realpath( __file__).split('/') sys.path.insert( 0, '/'.join( p[:-2]) ) import optz #hope it lives in .. import sys, os optz.text( 'base', help= 'base prefix for all links',) optz.bool( 'wikilink', help= 'show as [[name|link]]' ) optz.bool( 'mdlink', help= 'show as [name](link)' ) optz.bool( 'para', help= 'get whole first paragraph' ) optz.text( 'unprefix', help= 'strip this prefix from input file names' ) optz,args = optz.get() quotes = '"\'' items = {} for f in args: opened = False for a in open(f): a = a.strip() if not a: if opened: break continue if not opened: if a[0]=='#': continue
#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function from svd_util import optz import os,sys optz.bool( 'fake') optz.text( 'input', '-i', help= 'input encoding', default= 'utf8') optz.text( 'output', '-o', help= 'output encoding') optz,argz = optz.get() #if opt('-icp1251', '-i=cp1251'): ienc = 'cp1251' #if opt('-icp866', '-i=cp866'): ienc = 'cp866' #if opt('-outf8', '-o=utf8'): oenc = 'utf8' for x in argz: dir,x = os.path.split( x) fn = x.decode( optz.ienc) print( x, fn) if optz.fake: continue if optz.oenc: fn = fn.encode( optz.oenc) os.rename( *(os.path.join( dir,f) for f in (x, fn))) # vim:ts=4:sw=4:expandtab
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import ezodf from ezodf.text import Paragraph, Heading, Span, ListItem, List, CN from sla import sla, DictAttr, State import lxml.etree import sys from svd_util import optz optz.text( 'template') optz,args = optz.get() odt = ezodf.newdoc( doctype='odt', filename= args[0], template= optz.template ) body = odt.body pic = body.find( CN("draw:frame")) body.clear() if pic: body.append( pic) def Heading2(): return Heading( outline_level=2) def Heading3(): return Heading( outline_level=3) styles = { 'h1': Heading, 'h3': Heading2, 'p' : Paragraph, 'dd list-entry': ListItem, 'dt list-hdr': Heading3, 'dt list-hdr0': Heading3, 'dl': List, 'ul': List, 'mail': None,
#!/usr/bin/env python #sdobrev 2007- from svd_util import optz optz.help( '''default use is filter: %prog [options] input_encoding output_encoding <input >output output_encoding default is utf8 ; use "utf2" as special input_encoding to double decode utf8 ''' .strip()) optz.bool( 'reverse', help= 'reverses each line' ) optz.text( 'input', '-i', default= '-', help= 'input filename, -/empty means stdin, default: stdin') optz.text( 'output', '-o', default= '-', help= 'output filename, = means overwrite input, -/empty means stdout, default: stdout') #optz.bool( 'overwrite') #optz.bool( 'unicodeio', help= 'i/o is utf, but encode2input+decode2output') optz, argz = optz.get() import codecs import sys import os stdin = sys.stdin stdout= sys.stdout _v3 = sys.version_info[0]>=3 if _v3: stdin= stdin.buffer stdout=stdout.buffer e_from = argz[0] e_to = (argz[1:] or ['utf8'])[0] utf2 = e_from == 'utf2' if utf2: e_from = 'utf8'
#!/usr/bin/env python3 # -*- coding: utf8 -*- from svd_util import optz optz.usage( '%prog [optz] ot-dir < ren-script-stdin') #optz.optany( 'ot') optz.text( 'link_kym', help= 'направи ново дърво от връзки с този корен') optz.bool( 'rename', help= 'преименувай на място') optz.bool( 'rename_alt', help= 'преименувай на място и остави символна връзка към старото име.alt') optz.list( 'opis', help= 'подменя имена в опис ; може няколко пъти') optz.bool( 'link_zagolemi_pootdelno', help= 'връзки: раздели заголеми/ на /moze /neizv ..') optz.bool( 'nothing', '-n') oparser = optz.oparser optz,args = optz.get() import os, sys, stat from os.path import join, exists, dirname, basename, splitext allfiles = {} def link( ot, ikym, *pfxs): print( ot, ikym) ot = join( dir_ot, ot) assert exists( ot) if not optz.link_zagolemi_pootdelno and sum('zagolemi' in p for p in pfxs): pfxs = ['zagolemi'] for pfx in pfxs: kym = join( optz.link_kym, pfx, ikym) ss = list( os.stat( ot) ) ## dict( size= ss[ stat.ST_SIZE], .. for ix in stat.ST_CTIME, stat.ST_NLINK: ss[ix] = None if kym in allfiles: old = allfiles[kym]
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from svd_util import optz optz.usage( '%prog [options] < metatoc-script-stdin') optz.text( 'outpath2opispath', help= 'какво да се добави към outpath за да се стигне до .../opis') optz.bool( 'opis', help= 'състави опис') optz.bool( 'toc', help= 'състави .toc за CDTEXT') optz.bool( 'cyr2lat', help= 'ако cd-toc приема само латиница') opts,args = optz.get() import sys import os.path from svd_util import struct, py3 dictOrder = py3.dictOrder DictAttr = struct.DictAttr #allitems = [] #paths = dictOrder() albumi = dictOrder() def add( *items, **ka): #global allitems for i in items: i = DictAttr( i) #allitems.append( i) path = i.path opis = os.path.join( path, opts.outpath2opispath or '', 'opis') i.opis = opis ialbum = i.album or i.title try:
if save: open(url.replace("/", "__"), "wb").write(d) # remove hanging open < d = re.sub(b"<([^>]*?<)", rb"\1", d) # if d!=d1: print( 2222222) if ienc: d = d.decode(ienc) return d from svd_util.struct import DictAttr from svd_util import optz optz.text("url", default="http://pozvanete.bg/imoti-prodava-offline&maxAds=100?page={npage}") optz.int("pages", default=11) optz.list("includes_info") optz.list("excludes_name") optz.bool("load") optz.bool("save") optz.bool("cache") optz.bool("io", help="load+save") optz.text("fload", default="danni.pozv", help="[%default]") optz.text("fsave", default="danni.pozv", help="[%default]") optz.bool("allprn", help="покажи всички въобще, а не само новите") optz.bool("curprn", help="покажи всички сега-прочетени, а не само новите") optz.text("merge", help="смеси тези данни") optz.bool("podrobno", "-v", help="видимост!") optz.bool("prezapis", help="презаписва дори и да няма нужда") optz.bool("debug", help="само гледа входа")
None: 'print', } op2op = {} for op,names in ops.items(): for n in names.split(): op2op[n] = op import subprocess def extern( s,t): subprocess.call( [optz.op, s, t ] ) def getop( optz): return op2op.get( optz.op, extern) optz.text( 'op', #type= 'choice', #choices= ' '.join( sorted( ops.values())).split(), default= 'print', help= 'operation: ln/link mv/move cp/copy print, anyother - exec it; default: print') optz,argz = optz.get() target = argz.pop( -1) def match1( f, p): return fnmatch.fnmatch( f,p) def match( f, patterns): for p in patterns: if match1( f, p): return True def included( a, inc, exc): #print( 444444, a, inc, exc)
#!/usr/bin/env python2 import sys import re import subprocess, os from svd_util import optz optz.bool("dryrun", "-n") optz.bool("verbose", "-v") optz.bool("autoon") optz.bool("nomenu") optz.bool("noscan") optz.bool("crypto", "-c") optz.text("iface", default="wlan0") # ath0 optz.text("essid") optz, args = optz.get() o_n = optz.dryrun o_v = optz.verbose o_menu = not optz.nomenu o_scan = not optz.noscan with_crypt = optz.crypto # opt('-c', '--crypt', '--crypto') iface = optz.iface or "ath0" res = dict( addr=re.compile("Cell.*? - Address: ([0-9A-F:]+)"), essid=re.compile('ESSID:"([^"]*)"'), quality=re.compile("Quality[=:](\d+)/(\d+)"), crypto=re.compile("Encryption key:(on|off)"),
import prikazki import opisvane from svd_util import eutf, optz, lat2cyr from glob import glob import datetime #import datetime, timedelta from svd_util.struct import DictAttr, attr2item info = prikazki.info gg = {} optz.bool( 'simvolni', '-L', help= 'обхожда и символни връзки', **gg) optz.bool( 'davai', help= 'извършва промените', **gg) optz.bool( 'prezapis', help= 'презаписва всички файлове (иначе само ако са различни)') optz.text( 'html_enc', help= 'кодировка на html [%default]', default='utf8', **gg) #cp1251 optz.text( 'html_spisyk', help= 'прави общ списък html-страница', **gg) optz.text( 'html_novi', help= 'прави списък новости отделен (иначе част от общия списък)', **gg) optz.text( 'html_izbrani', help= 'прави списък на само хубавите - извадка от общия списък', **gg) optz.bool( 'obshto_otgore', help= 'слага Общо: отгоре (иначе отдолу)', **gg) optz.bool( 'obshto_broi_zapisi', help= 'брои файловете със записи, а не папките', **gg) optz.text( 'podredba', help= 'подрежда по изброените полета [%default]', default= 'humor,ime_sglobeno,pored', **gg) optz.bool( 'otkoga_e_mintime', help= 'слага липсващо откога=най-ранното време на папката', **gg) optz.int( 'kolko_dni_e_novo', default=35, help= 'толкова дни нещо се счита за ново [%default]', **gg) optz.int( 'kolko_sa_novi', default=0, help= 'толкова последни неща се считат за нови [%default]', **gg) options,args = optz.get() prikazki.info.options = options
чете опис, съдържащ ред: #http://78.83.22.128/_nradio/2014/-видове/деца-рт/bezpodobni/hb-0419-0715+Рт_за_деца+Грозният_принц_Куша--индийска/ - взема ПЪТ и ИМЕ (от след _nradio/) - извлича ЧАСТ# от описа преименува описа в ИМЕ-ЧАСТ.opis на място, и го слага също и в (papka+)ПЪТ (създавайки лисващите нива) ''' import os, subprocess from svd_util import optz from svd_util import lat2cyr from svd_util import osextra optz.bool( 'nedei', '-n') optz.text( 'papka', '-p', help= 'начална коренна папка') optz.text( 'cmd', help= 'изпълни вместо преименоване тази команда с 2 аргумента') optz.help( __doc__) #rec2dir def c2l( x): return lat2cyr.zvuchene.cyr2lat( x).lower() join = os.path.join optz,argz = optz.get() for a in argz: o = open(a).readlines() http = [ l.strip('#') for l in o if 'http://' in l and '/_nradio' in l] if not http: print( '??? http-къде', a) continue chast= [ l.split(':',1)[-1] for l in o if l.startswith( '#част:') ] chast = chast and chast[0].strip() or ''