def opts(): optz.help( '''%prog [опции] папка .. обхожда папките и зарежда данни от файлове именовани "opis", и изпълнява действия с тези данни''') gg = optz.grouparg( 'данни') optz.str( 'prevodi', help= 'файл-речник с преводи файл=заглавие или заглавие=файл (lat=cyr)', **gg) optz.str( 'prevodi_meta', help= 'файл-речник с преводи на понятия (lat=cyr) - хора, организации, ..', **gg) optz.str( 'filename_enc', help= 'кодировка на имената на файловете [или това от терминала]', **gg) gg = optz.grouparg( 'описи') optz.bool( 'zapis_opisi', help= '(пре)записва описите', **gg) optz.append( 'etiket', '-e',help= 'добавя етикета към _всички описи'+helplist, **gg) optz.bool( 'sort_prevodi', help= 'пренарежда преводите по азбучен ред', **gg) optz.bool( 'popravi_opisi', help= 'имената в речника с преводи имат превес над местните в описите', **gg) optz.bool( 'podravni_po_grupi', help= 'подравнява в описа всяка група за себе си; иначе подравнява всички заедно', **gg) optz.bool( 'mnogoredovi_etiketi', help= 'многоредовите се записват като 1 ключ:: с много редове, без пренасяне (иначе много ключ:реда)', **gg) optz.int( 'shirina_tekstove', default=80, help= 'ширина на пренасяне на текстове; подразбиране- %default', **gg) optz.bool( 'yaml') #ignore optz.bool( 'noyaml') #optz.bool( 'vinagi', '-f',help= 'записва независимо дали има разлики', **gg) gg = optz.grouparg( 'обхождане') optz.append( 'opisi', help= 'шаблон за името на описите ['+' '.join( OPISI)+']'+helplist, **gg) optz.bool( 'simvolni', '-L', help= 'обхожда и символни връзки', **gg) optz.append( 'bez', help= 'пропуска (папки) по дадения шаблон'+helplist, **gg) optz.append( 'samo', help= 'включва само (папки) по дадения шаблон'+helplist, **gg) optz.append( 'papka_s_opisi', help= 'счита всички файлове вътре за описи (и се прилагат горните шаблони)'+helplist, **gg) gg = optz.grouparg( 'действия с папки') optz.bool( 'preimenovai_papki', help= 'преименова+превежда папките на място', **gg) optz.str( 'prehvyrli_papki', help= 'прехвърля+превежда папки+съдържание към тук/', **gg) optz.bool( 'prehvyrli_simvolno', help= 'прехвърля като символни връзки (иначе са твърди)', **gg) optz.bool( 'davai', help= 'извършва промените', **gg) #разни optz.bool( 'stderr', help= 'грешки и съобщения към stderr') optz.count( 'podrobno', '-v', help= 'показва подробности')
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, help= 'канал за запис (разписание+източник) - от ('+ ' '.join(choices) + '); може няколко пъти; ['+kanal_default.name+']', ) optz.append( 'weekly', help= 'входно седмично разписание: URL или файл; може няколко пъти' ) optz.append( 'daily', help= 'входно дневно разписание: URL или файл; може няколко пъти' ) optz.append( 'stream', help= 'източник за запис; може няколко пъти - към всяко разписание' ) optz.append( 'filter', help= 'допълнителен филтър съдържа-се-в-заглавието; може няколко' ) optz.text( 'save_plan', help= 'запис на резултатния списък в ТОВА.datetime' ) optz.text( 'save_input', help= 'запис на входящите данни в ТОВА.wd.kanal.datetime' ) optz.bool( 'save_text', help= 'запис на текста отделно ако не се събира в името в име.text' ) optz.bool( 'yesterday', help= 'днеска е вчера' ) optz.bool( 'today_daily', help= 'извлича датата от името на файла с дневното разписание' )
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import os, sys, re import pprint from svd_util import optz optz.bool("ednakvo_ime_razlika_razmer") optz.bool("samoime") optz.append("sravni") optz.append("prevod") optz, args = optz.get() def walk(a): ff = [] for path, dirs, files in os.walk(a, followlinks=False): for f in files: if not f.endswith("jpg"): continue ff.append((f, path, os.stat(os.path.join(path, f)).st_size)) ff.sort() return ff ff = walk(args and args[0] or ".") if optz.ednakvo_ime_razlika_razmer: u = "" for f, p, s in ff: prn = 0 if not u:
#!/usr/bin/env python # -*- coding: utf-8 -*- #from __future__ import print_function #,unicode_literals 'apply moves-around-dirs/deletes from template/ into .' import os join = os.path.join from svd_util import optz optz.bool( 'real', '-y', ) optz.append( 'exclude', help='dirs', default= [] ) optz.append( 'ignore' , help='file-names', default= []) optz,args = optz.get() none = not optz.real template = args[0].rstrip('/') tree = {} paths = set() try: os.mkdir( 'del') except Exception as e: print( e) optz.exclude = [ a.rstrip('/') for a in optz.exclude ] for path, dirs, files in os.walk( template ): subpath = path[ len(template): ].lstrip('/').split( '/') p = join( *subpath[:] ) if p in optz.exclude: dirs[:] = [] continue