[mythtv-users] no write(2) method for mythfs.py?

Brian J. Murrell brian at interlinx.bc.ca
Wed Nov 23 18:17:06 UTC 2011


On 11-11-23 12:56 PM, Raymond Wagner wrote:
> 

Heh.  I was just about to reply to my own posting with an "Ah ha!  :-(":

class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \
                         VIDEO_PROPS, SUBTITLE_TYPES ):
    """Represents a program with all detail returned by the backend."""
...
    def open(self, type='r'):
        """Program.open(type='r') -> file or FileTransfer object"""
        if type != 'r':
            raise MythFileError(MythError.FILE_FAILED_WRITE, self.filename,
                            'Program () objects cannot be opened for writing.')

> No, that's pretty much it.  There is a whole lot that would have to go 
> on behind the scenes to make such a thing work.  The recording would 
> have to be marked as in-use for writing.  The filesize would need to be 
> updated.  The seek table would have to be invalidated and flushed, 
> potentially along with any bookmarks and markup.

Yeah.  I'd consider those all optional.  I'm just looking to be able to
replace having to manually figure out the B/E's filename for a recording
whenever I want to do a:

$ cp $good_file $broken_myth_recording_file
$ mythcommflag --rebuild --file $broken_myth_recording_file

Although, it is interesting to do the mythcommflag --rebuild on close
after a write anyway, but being able to use the mythfs filename for
mythcommflag would be sufficient.

> The backend protocol 
> does not currently implement moving files, so would would have to be 
> implemented to write the new copy to a temporary file, delete it, and 
> shift the new one in place.  Alternatively, the original would have to 
> be buffered locally while the old one was deleted and written on top of.

So the backend can't just open the existing file for "truncate & write"
as simply as it can open one for read/tell/seek?
 
> Now some of this could be automated, hidden from the user.  Potentially 
> others could be tucked away into special text files the user could 
> access to modify metadata and seek/skip/cut tables.  To be honest, when 
> you need more access to the internals than a filename can provide, it 
> seems like it would be easier on both sides to just implement the 
> database and protocol access natively in whatever tool you're using to 
> fix those files.

Except that a file system interface such as mythfs gives me a really
easy way to hunt for the program I want to fix by title/subtitle com-
plete with tab completion, etc.  Otherwise I am manually referring
back to either mythweb or the output of a mysql select list for the
right subtitle and then the B/E file that that program is in, etc.

> That's not one I've seen before.

It seems on the first time a file is opened the line:

        LOG(LOG.FILE, 'open files', str(self._openFiles))

never gets hit so there is probably some exception being thrown in
the:

        if path not in self._openFiles:

branch.  Once the file is known in _openFiles, the alternate branch:

        else:
            self._openFiles[path][0] += 1

is taken.

Cheers,
b.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
Url : http://www.mythtv.org/pipermail/mythtv-users/attachments/20111123/806aa021/attachment.bin 


More information about the mythtv-users mailing list