diff options
author | Nate Theis <natetheis@gmail.com> | 2010-12-01 18:33:14 (GMT) |
---|---|---|
committer | Nate Theis <natetheis@gmail.com> | 2010-12-01 18:33:14 (GMT) |
commit | 5996dd1b82bcfbbc2eda4c407f96dd4935c3913c (patch) | |
tree | 4708406a48256e839118d1e4e228c980493ef7dd | |
parent | 9878051b9a39e5bfbe8958600728e581343ca773 (diff) |
removed a file left in from testing
-rwxr-xr-x | wodim | 2 | ||||
-rw-r--r-- | wodim_tools.py | 147 |
2 files changed, 0 insertions, 149 deletions
@@ -1,2 +0,0 @@ -#!/bin/bash -cat wodim_log.txt diff --git a/wodim_tools.py b/wodim_tools.py deleted file mode 100644 index 9acd3bd..0000000 --- a/wodim_tools.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright (c) 2010, Nathaniel Theis - -import pexpect, re - -#Define some handy things (regexes, strings, etc) - -trackmatcher = re.compile(r"Track\s(?P<tracknum>\d+):\s(?P<tracktype>[A-Za-z]+)" - + r"\W+(?P<tracksize>\d+\s[MmKkGg]B)\s*(?P<tracktime>\(\d+" - + r":\d+\.\d+\))?") - -totalmatcher = re.compile(r"Total size:\s*(?P<totsize>\d+\s[MmKkGg]B)\s+" - + r"(?P<tottime>\(\d+:\d+\.\d+\))\s=\s(?P<totsectors>\d+)\ssectors") - -writestartmatcher = re.compile(r"0\sseconds.\sOperation\sstarts.") - -trackstartmatcher = re.compile(r"Starting\snew\strack\sat\ssector:\s+" - +r"(?P<startsector>\d+)") - -trackprogressmatcher = re.compile(r"\rTrack\s(?P<tracknum>\d+):\s+(" - + r"?P<sofar>\d+)\sof\s+(?P<total>\d+)\s" - + r"(?P<unit>[MmKkGg]B)\swritten" - + r"(\s\(fifo\s+(?P<fifofill>\d+)+%\)\s+)?" - + r"(\[buf\s+(?P<buffill>\d+)%\]\s+)?" - + r"((?P<speed>\d+\.\d+)x)?") - -trackdonematcher = re.compile(r"Track\s(?P<tracknum>\d+):\sTotal\sbytes" - + r"\sread/written:\s(?P<bytesread>\d+)/" - + r"(?P<byteswritten>\d+)\s\((?P<sectors>\d+)\s" - + r"sectors\)\.") - -fixatestartmatcher = re.compile(r"Fixating...") - -fixatedonematcher = re.compile(r"Fixating\stime:\s+(?P<time>\d+\.\d+)s") - -carriagereturn = chr(13) - - - -class WodimWrapper(): - '''WodimWrapper is a class to burn CDs with Wodim''' - def _get_track_data(self): - trackinfo = {} - totalline = "" - - while True: - whichmatch = self.wodim_process.expect([trackmatcher, totalmatcher]) - matchdata = self.wodim_process.match.groupdict() - if whichmatch == 1: - #Total info line - totalline = matchdata - break - else: - #Track info line - trackinfo[matchdata["tracknum"]] = matchdata - - return (trackinfo, totalline) - - def _wait_until_write_start(self): - match = self.wodim_process.expect(writestartmatcher) - - def _do_burn(self): - self.wodim_process.expect(trackstartmatcher) - match = self.wodim_process.match.groupdict() - - startsector = int(match['startsector']) - - self.trackstart_cb(startsector) - - while True: - linetype = self.wodim_process.expect([trackprogressmatcher, - trackdonematcher]) - - match = self.wodim_process.match.groupdict() - - if linetype == 0: - self.trackprogress_cb(match) - elif linetype == 1: - self.trackdone_cb(match) - break - - ##FIXME: Only supports 1-track CD burning - ##I need example output for a multi-track burn - - ##fixate CD - - self.wodim_process.expect(fixatestartmatcher) - self.fixatestart_cb() - - self.wodim_process.expect(fixatedonematcher) - self.fixatedone_cb(self.wodim_process.match.groupdict()) - - ##now just wait for Wodim to finish! - - if self.wodim_process.exitstatus is None: - self.wodim_process.wait() - - self.wodim_process.close() - - def __init__(self, args, trackstart_cb, trackprogress_cb, - trackdone_cb, fixatestart_cb, fixatedone_cb, - burncomplete_cb, trackdataready_cb, - command_path="wodim"): - '''Initialize stuff, mainly set variables''' - #Yeah, that's a lot of callbacks - - - self.trackstart_cb = trackstart_cb - self.trackprogress_cb = trackprogress_cb - self.trackdone_cb = trackdone_cb - self.fixatestart_cb = fixatestart_cb - self.fixatedone_cb = fixatedone_cb - self.burncomplete_cb = burncomplete_cb - self.trackdataready_cb = trackdataready_cb - - self.wodim_command = command_path + " -v " - #Some info is only shown with -v - - self.wodim_command += " ".join(args) - - def run(self): - '''Do the burn!''' - self.wodim_process = pexpect.spawn(self.wodim_command) - - trackdata = self._get_track_data() - self.trackdataready_cb(trackdata) - - self._wait_until_write_start() - - self._do_burn() - - self.burncomplete_cb() - - return self.wodim_process.exitstatus - - - -if __name__ == "__main__": - #run a few tests for development purposes - #i should write unit tests later - - def printer(*args): - for arg in args: print arg - - ww = WodimWrapper([], printer, printer, printer, - printer, printer, printer, printer, - command_path="./wodim") - ww.run() |