o qme0‰ã@sddlmZddlZddlZddlZddlmZddlZddlZddl Z ddl Z ddl m Z m Z ddl Z ddlZddlZddlZddlmZddlZe ¡Ze d¡dkrXdZndZed Zed Zed Zd d „Zee ¡ƒZdZdZdZe  d¡Z!e  d¡Z"e  dej#¡Z$e  dej#¡Z%e  dej#¡Z&e  dej#¡Z'e  dej#¡Z(e  dej#¡Z)e  dd¡Z*e  dd¡Z+e  dej#¡Z,e  dej#¡Z-e  d¡Z.e  d¡Z/d2d d!„Z0d3d#d!„Z1d2d$d!„Z2d%d&„Z3d'd(„Z4d)d*„Z5gd+¢Z6gd,¢Z7gd-¢Z8Gd.d/„d/ƒZ9d0d1„Z:dS)4é)Úlatin1_to_asciiN)Úpath)ÚpprintÚpformat)ÚpartialÚWindowsz D:/website/z/mnt/d/website/z contributors/ú template.ft3zft3form/temperr.txtcCs |d|S)Nú/©)Ús1Ús2r r ú/mnt/d/website/ft3form/load.pyÚjoin_with_fslashs rzu{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg;}} \viewkind4\uc1\pard\f0\fs-22 ú \par } )z.pngz.tifú.pdfz.jpgz (\\u.... )z(..*) (?:and|or) (..*)z \D\((>?c?a?\.? ?[1-2][0-9]{3})\)z(ca?\.? ?)[1-2][0-9]{3}z^([^(]*)\(([^)]+)\)(.*)z([IiEe]ntabulated)z [Ee](ncoded)z [Ee](dited)z [Ee](nc\.)éz [Ee](d\.)z^(...).*?: *(..*)$z^[A-G][b#]*[Mm]$z"([^"]*)"[^"]*"([^"]*)"z(\\lang[0-9]{4)}cCót |d¡jjS©Nr©ÚsysÚ _getframeÚf_codeÚco_name©Únr r r Ú@órécCrrrrr r r rArcCst |d¡jSr)rrÚf_linenorr r r rBscCs|d|…t||d…S©N)Ú strInsert)ÚstInsertÚstrÚindexr r r Ú insert_strEsr$cCs| ¡t | ¡¡jkSr)ÚtellÚosÚfstatÚfilenoÚst_size)Úfr r r Úat_eofHsr+cCs&|D] }td|ddqtdƒdS)Nz%s, Ú)Úend)Úprint)ÚtÚitemr r r Ú show_tupleKs r1)z??ÚBeginnerÚEasyÚMediumÚ ChallengeÚ DifficultÚVirtuoso) )ÚTitleÚtitle)ÚSubtitleÚsubtitle)ÚComposerÚcomposer)zOrig. composerÚ composer0)ÚFootnoteÚfootnote)ÚSourcerA)ÚDocumentÚdocument)ÚVolumeÚvolume)ÚDateÚdate)ÚPageÚpage)ÚEditorÚeditor)ÚEncoderÚencoder)ÚArrangerÚarranger)Ú IntabulatorÚ intabulator)Ú ConcordancesÚ concordances)Ú ContributorÚ contributor)ÚInfoÚinfo)ÚPieceÚpiece)ÚSectionÚsection)ÚTypeÚtype)ÚKeyÚkey)Ú DifficultyÚ difficulty)ÚEnsembleÚensemble)ÚPartÚpart)ÚRemarksÚremarks)Ú RecordingÚrecurl)Ú FacsimileÚfacurl)ÚFronimoÚstFile)ÚPDFÚstPdf)ÚMidiÚstMidi)ÚModifiedÚmtime)ÚCreatedÚctime) r9r;r=r>r@ÚsourcerCrErGrIrKrMrOrQrUrSrWrYr[r]r_rarcrergrirkrmrorqrursc@süeZdZefdd„Zedd„ƒZedd„ƒZedd„ƒZed d „ƒZ ed d „ƒZ d d„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7S)8rlcCsì||_td|jƒtƒtD] \}}t||dƒqt|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_| ¡dkr]d|_dS| ¡|_|jdkrr| ¡dkrtd|_dSdSdS)NzIn Fromimo init. self.stFile = r,Féÿÿÿÿr)rmr.ÚinputÚ field_mapÚsetattrÚ LOCALBASEÚbaseÚcurrProgÚcreditsÚbegTextÚendTextÚ performanceÚsimpleÚ ornamentedr@ÚstFronÚflFronÚflOutÚflErrÚoffsetÚ oldOffsetrErWrirkÚread_and_unzip_fileÚ start_offsetÚget_start_offsetÚpopulate)ÚselfÚstInÚcolÚattr r r Ú__init__†s@        ýzFronimo.__init__c Cs^t}z t|ddd|_Wd Sty td|dtjdYdStd|dtjdYdS) NÚwÚlatin1©Úencodingz OSError: Cannot open error File z for writing.©ÚfileFz$Other error: Cannot open error File T)ÚERRFILEÚopenr‡ÚOSErrorr.rÚstderr)ÚklsÚerrfiler r r Ú open_error°s øÿÿzFronimo.open_errorcCsdz t||dd}W|Sty d||f}| ||¡YdSd||f}| ||¡YdS)Nr”r•z(OSError: Cannot open file %s in mode %s.z,Other error: Cannot open file %s in mode %s.)ršr›Ú print_error)rÚflÚmodeÚflNameÚerrr r r Ú open_fileÀs ø    zFronimo.open_filecCsdSrr )rr r r Ú open_filesÐszFronimo.open_filescCs\ttjƒ}tj ¡}| dd¡}|| dd¡tt|ƒt_t  tj¡s,t   tj¡dSdS)NÚ.r,ú Ú_) rrŽrUÚcasefoldÚreplacerÚ CONTRIBDIRÚ contribDirrÚexistsr&Úmakedirs)rÚsr r r Úmake_contrib_dirÖs     ÿzFronimo.make_contrib_dircCs:d|_tdtƒtƒtƒ|j||f|jd|j ¡dS)Nzload.pyz.In %s; caller:%s; line:%d of %s file:'%s'; %s.r—)r}r.ÚfuncNameÚ callerNameÚlineNor‡Úflush)rÚcurrFileÚerrMsgr r r r ás&zFronimo.print_errorcCs^|jddks|jddkrdS|jddkrdStt|jdƒƒ}d|}t |j|¡dS) Néúúilúipz@stFron[4] = %s (not \x15 or \x16), so starting offset is unknownrw)r„ÚhexÚordrlr rm)rŽÚvalÚmsgr r r rŒèszFronimo.get_start_offsetcCs td|jƒtdtjƒtƒt |j¡|_|jdkr$t |jd¡dS|j ¡}t |ƒdkr8t |jd¡dS|  d¡|_ t |j ƒdkrNt |jd¡dSd S) Nz&in read_and_unzip_file. self.stFile = z)in read_and_unzip_file. Fronimo.stFile = z#Cannot open and unzip fronimo file.FédzCannot read fronimo file.r”zCannot decode fronimo file.T) r.rmrlrxÚgzipršr…r ÚreadÚlenÚdecoder„)rŽÚbtFronr r r rŠös      zFronimo.read_and_unzip_filecCs^|dkrdS|j}|j|7_|jt|jƒkr'd||f}t |j|¡dS|j||j…S)Nrr,z)Cannot get %d chars starting at offset %d)rˆrÃr„rlr rm)rŽÚnumCharsr‰r·r r r Ú_get s z Fronimo._getcCs| d¡}|dkrd|j}t |j|¡dSt|ƒ}| d¡}|dkr2d|j}t |j|¡dSdt|ƒ}||}|rF|dkrF|d8}|S) Nrr,ú$No first byte in stFron at offset %drwz"No 2nd byte in stFron at offset %déi€i)rÇrˆrlr rmr½)rŽÚfSignedÚinChr·Úword1Úword2Úwordr r r Ú_getWords      zFronimo._getWordcCsª| d¡}|dkrd|j}t |j|¡dSt|ƒ}|dkr!dS|dkr<| d¡}|dkr?c?a?\.? ?[0-9]{4}\), *([fp#%]{1,2}\.* *[^.]*)\.?$r¨zCannot get date from %sz, *([fp#%]{1,2}\.* *.*)\.$zNo page # in %sz ?\(\>?c?a?\.? ?[12][0-9]{3}\)rz([^,][^,]*), *v[. ] *([^,]+)rT)rlr rmÚ reGetDaterðrñrGrüÚ reApproxDater«ríÚDOTALLrIÚspanrCrE)rŽÚdocr¾ÚcaMarkr-r r r Úparse_documentÃsP      ÿ     þ zFronimo.parse_documentcCsj| dd¡}t dd|¡}t |¡r| ddd¡}t |¡r%| dd d¡}t |¡}|r7| d¡}| |d ¡}t d |tj¡}|rd| d¡d krPd |_ |_ dS| d¡|_ |j  d d ¡|_ |j |_ dSt d|tj¡}|r­| d¡}| d¡}| d¡}| d¡}|dkr‘|  ¡|_ |  ¡|_ n |  ¡|_ |  ¡|_ |j  d d ¡|_ |j  d d ¡|_ dSd|_ |_ dS)Nz & z and z\.$r,zd.Úditedrznc.ÚncodedÚEncodedz7[Ee](?:dited|ncoded) and [Ee](?:dited|ncoded) by (..*)$z S.Gerbodez Sarge GerbodeTzK(E(?:ncoded|dited)) by (..+) ?(?:[;.]|and) ([Ee](?:dited|ncoded)) by (..*)$rrÖr¸ÚEditedF) r«rírîÚreEdrðÚreEncÚ reEntabulatedrñrrKrMrü)rŽÚcredr¾ÚsrcÚtype1Úcred1Útype2Úcred2r r r Ú parse_creditsösF        ý         zFronimo.parse_creditscCsÜd|_|_|_|_|_|_|_|jdkrdSt  d|j¡}t |ƒ}|dks/|dkr?d|j|f}t   |j |¡dS|dkrH|\}}n|\|_}}| |¡s^t   |j d|¡dS| |¡slt   |j d|¡d S) Nr,z +rrÖz'Footnote "%s" has wrong # of parts (%d)FzCannot parse document:%szCannot parse credits: %s.T)rvrCrErGrIrMrKr@ríÚsplitrÃrlr rmr r)rŽÚlsPartsÚnumPartsÚstErrr rr r r Úparse_footnote s$*     zFronimo.parse_footnotecCs¾t d|j¡}d}d}|D]}| ¡}|dkrq |r'|r$|d|}q |}q | d¡dk}|r1q | d¡dkr9q t |¡}|r| d ¡}| d ¡}| ¡}| ¡}|d vr[||_ q |d vrc||_ q |d vrk||_ q |dvrs||_ q |dvr{||_ q |dkrƒ||_q |dkr‹||_q |dkr“||_q |dkr›||_ q |dkr£||_q |dkr«||_q |dkr³||_q |dkr»||_q |dkrÃ||_q |dkrË||_q |dkrÓ||_q |dkrÛ||_q |dkrã||_q |dkrë||_q |dkró||_q |dkrû||_q |d kr| |¡|_q |d!kr||_q d"|}t  !|j"|¡q q ||_#|j  d#¡} g} g} | D]?} |  ¡} |  ¡} |  d¡dkr`|  d¡} |  $| d ¡¡|  $| d  ¡¡|  $| d  ¡¡q,|  $| ¡|  $| ¡q,|jdkr¡|j d#¡}|D]&}| ¡}| ¡}|d$kr‹qz|| vrŸd%|}t%d 7a%t  !|j"|¡qz| D]9}d}| ¡}| ¡}t j&D]}|d |kr¿d&}nq²|sÛt'd 7a'd'||j"f}t(|t j)d(t j) *¡q£d&S))Nr÷Fr,râú--rú:rwrr)ÚtraÚreaÚarr)ÚlibÚsouÚpub)ÚinsÚens)r )ÚoriÚco0ÚtitrîÚcomr ÚpagÚediÚencrØÚconÚctrÚpieÚfacÚrecÚsecÚtypr_ÚdifÚparzInfo field "%s\ not foundú,ÚscorezPart "%s" not in ensemble listTzInst. "%s" not found in "%s".r—)+rírrWrürìÚreInforðrñÚlowerrOrvrcrCr>r9r;r=rIrKrMrQrSrUrYrkrir[r]r_Ú get_diff_valrarerlr rmrgÚappendÚ partCountÚinstListÚ instCountr.Ú flNewInstsrµ)rŽÚlsInfoÚisRemarkrgÚdatumÚreItemÚfieldÚvaluerÚensListÚinsListÚensItemsr)ÚinstagÚpartListr(Úfoundr0r r r Ú parse_info8sâ             € þ €zFronimo.parse_infocCs:d}|j|_| ¡}| ¡|_|j ¡|_| ¡s%t |jd|j¡d}|j   d¡}|dkr8t |jd¡dS|d|_| ¡|_ |j  d¡|_ |  |j ¡|_ | ¡|_ |j  d ¡|_ |  |j ¡|_ |j  d d ¡|_ | ¡|_| ¡|_|j d ¡|_|  |j¡|_|jd kr|j d d ¡|_|jdkr˜d|_| ¡| ¡| ¡|_|j ¡|_|j dd ¡|_|j dd¡|_|j dd¡|_|rÑ| ¡|_|jsÑtd7a|jrà| ¡sßt |jd¡nt |jd¡ttj |j¡ƒ|_ttj |j¡ƒ|_| d¡|_ |j  t!|j"d¡|_ | d¡|_#|j# t!|j"d¡|_#dS)NTzCannot parse footnote: %sFÚCPiecerwúCannot find pattern 'CPiece'érúz[ ]r÷râr,ú?Ú AnonymousÚUnknownú zAnon.rzCannot parse info string.z No info data.ÚmidiÚpdf)$r‹rˆrÔr@rürrlr rmr„rìr9rr;r«rr>r=rvrWÚ get_facurlrkÚfacCountrPrØr&rÚgetmtimersÚgetctimeruÚ find_filerqr{r|ro)rŽÚ fFootnoteÚpgÚnewPosr r r r½sj  ÿ           €  zFronimo.populatecCsžtj |j¡}| dd¡}tj |j¡}| dd¡}|dkr%| dd¡}n|dkr0| dd¡}n| dd¡}t||ƒ}t||ƒ}t |¡sGd S| dd¡|S) Nú\r rXú.ft3z.midrYrz.tabr,)r&rÚdirnamermr«Úbasenamerr®)rŽr]ÚfronDirÚfronTypeÚtypeDirÚstFlr r r r^üs       zFronimo.find_filecCsÒ|j|_| ¡}| |j¡|j d¡}|dkr!t |j d¡dS|d|_|  |j ¡}| |¡|j   dd¡|_ |  |j ¡|_ | |j ¡|  |j¡}| |¡| ¡| ¡|j}|  dd¡}| |¡d S) NrQrwrRFrSz\|z râT)r‹rˆrÔrÞr@r„rìrlr rmrér9r;r«r=rW)rŽr`rar9r=rWr r r Ú depopulates*          zFronimo.depopulatecCsÒd}t|jdƒ}|s|j}nH|jtkrd}n|j}|dkrV|r8td|ƒ}|dkr+|}|dd…dkr7|d7}nd}|dkrFtdƒ}|dks>|dd…dkrR|d7}|dkst |d¡}| |¡t|ƒkrgdSd S) Nr”r,zWrite file to (%s): éüÿÿÿrczWrite file to: ÚwbFT) Úbytesr„rmÚTEMPLATErxrÁršÚwriterÃ)rŽÚfPromptr†rÅÚstInputÚstFlOutr r r Ú write_file/s4   €ÿô zFronimo.write_filecCstdƒt|ƒtƒ|jj|_|jj|_|jj|_|jj|_|jj|_|j j|_ |j j|_ |j j|_ |j j|_ |j j|_|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_| ¡|_td|jƒ| ¡|_td|jƒdS)Nzin make_changes. Form=zAF make_footnote. Footnote = zAF make_info. Info = )r.rxr9Údatar;r[r=Ú orig_composerr>rcÚmkeyraÚmtypervrArCrErIrKrMrOrQrUrgreÚ make_footnoter@Ú make_inforW)rŽÚformr r r Ú make_changesKs6                       zFronimo.make_changescCsâdddddddœ}d|jd d |jd d |jd d d |j}|jr1|d d |j}|jr=|d d|j}|jrI|d d|j}|jrU|d d|j}|jra|d d|j}|j ro|d dd |j }|S)NÚbeginnerÚeasyÚmediumÚ challengingÚhardÚvirtuoso)Ú0Ú1Ú2Ú3Ú4Ú5zkey:r÷ztype:zdif:zens:zsection:zpart:zcon:zrec:zctr:r ) rvrwrarcr[rerSrirUrg)rŽÚ diDifficultyÚstInfor r r ryhs:ÿÿÿÿþþþzFronimo.make_infocCs|j|jkr |jd}||jd}|jdkr"|dt|jƒd}||jd}|j|jkr7|d|j}n |d|jdd }|d }|S) Nrëz, rzv.z. zEncoded and edited by z Encoded by z and edited by z self. editorr§) rvr=rCrEr"rIrQrKrM)rŽÚ stFootnoter r r rx{s     ÿÿzFronimo.make_footnoteN) Ú__name__Ú __module__Ú __qualname__rnr’Ú classmethodrŸr¥r¦r±r rŒrŠrÇrÏrÔrÞrérõrrr rrrPrr^rjrsr{ryrxr r r r rl…sD *      13*? rlcCsöt t¡s tdƒdS|jj}|jj}td}|dkr|}n |dkr)t||}ndSt|d|dd…ƒtƒ|dd…dkrF|d}td|ƒtƒt|ƒ}td tj ƒtd |j ƒtƒ|  t |¡|j j}|rt|  |¡dS|  t¡dS) NzCannot open error file.rr,Fr¨rkrcz$B4 fronimo = Fronimo, stInputFile = z-af fronimo = Fronimo(stIn), Fronimo.stFile = zfronimo.stFile = )rlrŸr™r.rUrtÚ inputfiler¬rxrmr{rŽÚ outputfilersÚ OUTPUTFILE)rzrUÚ stInputFilernÚfronimoÚ stOutputFiler r r Ú process_forms4     r•)r)r);ÚunicoderÚjsonÚpdbrír&rrÚtimeÚglobÚshutilrrrÁÚcsvÚplatformÚinspectÚ functoolsrÚos.pathÚcurrOSrìr{r¬rnr™rrØÚ startTimeråræÚ IMAGETYPESÚcompilerïÚ reSplitAndOrrrrrrÚ reEncodedÚreEditedrrr<ÚreKeyÚ reGetDictItemrûr²r³r´r$r+r1Ú difficultiesryÚ key_orderrlr•r r r r Úsv             #