[mythtv-commits] Ticket #10071: Bugfixes to mythburn.py

MythTV noreply at mythtv.org
Sat Oct 1 22:01:52 UTC 2011


#10071: Bugfixes to mythburn.py
--------------------------------------+-------------------------
     Reporter:  t.brackertz@…         |      Owner:  paulh
         Type:  Patch - Bug Fix       |     Status:  new
     Priority:  minor                 |  Milestone:  0.25
    Component:  Plugin - MythArchive  |    Version:  Unspecified
     Severity:  medium                |   Keywords:
Ticket locked:  0                     |
--------------------------------------+-------------------------
 A lot of fixes to mythburn.py No other files affected.

 The path-file applies to the recent (2011-10-01) git-clone but changes can
 easily be backported to 0.25 branch.

 See below for a detailed description of the issues and the fixes:

 ----------------------
 ----------------------

 typos
 -----
 some irrelevant ones



 Medium handling:
 ----------------
 former issues:
 - no possibility to cancel process
 - one has to be fast enough feeding the device, otherwise the process
 cancels
 - some devices need more time to close the tray. They get hard-resetted
 all the time. No chance to burn a disk, if it is not put in before the
 script is started
 - if you use a disk of wrong type you don't get a chance to put in a
 correct one. The whole process cancels

 changes in BurnDVDISO()


 Integration of project-x
 ------------------------
 until now:
 After the run of project-x its logfile is parsed (in
 renameProjectXFiles()) to find out the filenames of the files produced by
 project-x and to associate them to the streams

 issues:
 - not very reliable: in many constellations (e.g. recoded .flv-videos) the
 logfile doesn't fit the expectations. Although there is a fallback
 mechanism in many cases the script crashes while parsing before reaching
 the fallback
 - the format of the logfile seems to change often if there is a new
 version of project-x. The parser has to be renewd all the time. (the
 recent one works for project-x 0.91 but not for older ones)

 solution:
 - An 0.91 project-x learned a new command line option (-set
 ExternPanel.appendPidToFileName=1) which causes project-x to use filenames
 for the output containing the PIDs and SubPIDs in a predictable manner.
 This should work with upcoming versions, too.
 - Therefore no more parsing is necessary.
 - Nevertheless there is still a fallback mechanism as in some cases (e.g.
 recoded mggs) mytharchivehelper gives strange IDs which makes it
 impossible to find the wanted files by ID
 - As the current parser relies on project-x 0.91 as well there is no
 regression by the fact that at least version 0.91 is necessary now. (The
 version dependency at the beginning of the sript claiming for project-x
 0.90.4 was outdated anyway.)

 changes in runProjectX(), renameProjectXFiles() is obsolete now


 Divide-by-zero-error if requantising
 --------------------------------------
 see:
 http://code.mythtv.org/trac/ticket/8598#comment:2

 issue:
 If M2VRequantiser fails for some reason (probably it is not installed) the
 script crashes with a missleading error message.

 reason:
 The exit-code of M2VRequantiser is evaluated too late: After then run the
 size of the produced file is evaluated which gives a divide-by-zero-error.
 The exit-code of M2VRequantiser is evaluated thereafter, which means never
 because the script crashes before.

 solution:
 change the order

 changes in runM2VRequantiser


 Misleading log-entry
 --------------------
 issue:
 The log-entry produced by getStreamInformation() sometimes mentions the
 wrong file as the filename is hard-coded

 solution:
 use the appropriate variable

 changes in getStreamInformation()


 Inconsistent string-handling in the whole script
 ------------------------------------------------
 issue:
 many errors and crashs when sript is used with recordings having special
 characters in their title or videos with special chars in the filename.

 reason:
 One part of the strings is unicode (mainly coming from parsing the xml-
 files), another part is utf-8-encoded (mainly coming from database). They
 get mixed up and / or get printed to logfile or console unencoded or
 double-encoded. This results in many errors.

 solution:
 Consequently use unicode-strings:
 - make the database-object use unicode-strings in getDatabaseConnection()
 - encode strings to utf-8 before printing to logfile or console in write()
 and runCommand()
 - remove all encode- and decode-statements in the rest of the script
 - quote all commandline arguments properly


 Endless growing work-directory
 ------------------------------
 issue:
 In some rare cases in which many DVDs with many small and one big title
 are created the work-directory theoreticallly grows endless

 reason:
 Before a new file is written to disk the old file with the same name is
 deleted but the rest is not.
 Imagine the following situation:
 Create a DL-disc with 20 titles, all very small, only the last one having
 8GB. You get 20 subdirs in the work-directory of which the "20"-directory
 is very big. All together they have 9GB.
 Next step: The same as before but with only 19 titles. Result: Only the
 first 19 dirs of the last run get deleted, the big "20"-dir stays. But
 there is a new big "19"-dir. All together they have ~17GB
 An so on. You end up with a work directory containing at least 160GB

 solution:
 delete everything in the "work"-dir at the beginning instead of
 incrementally deletion. Also shortens the code.

 new deleteEverythingInFolder()-function and changes at some other places

-- 
Ticket URL: <http://code.mythtv.org/trac/ticket/10071>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center


More information about the mythtv-commits mailing list