docs: def extractClips(self, specsFilePathOrStr, outputDir=None, zipOutput=False):
          """Extract clips according to the specification file or string.
          
          Arguments:
              specsFilePathOrStr (str): Specification file path or string
              outputDir (str): Location of the extracted clips
              zipOutput (bool): Archive extracted clips' flag
  
          Specifications format:
              <begin:seconds> <end:seconds> [<text_metadata>]
  
              20.5    59.75   Discussion about dogs
              105.3   200.3   Cat story
  
          Notes:
              <text_metadata> is completely optional
          """
          clips = SpecsParser.parse(specsFilePathOrStr)
  
          # Output to current working directory if no outputDir was provided
          if not outputDir:
              outputDir = os.path.abspath('.')
  
          zipFile = None
          if zipOutput:
              bname = os.path.splitext(os.path.basename(specsFilePathOrStr))[0]
              zipPath = "%s_clips.zip" % bname
              zipFile = zipfile.ZipFile(os.path.join(outputDir, zipPath), mode='w')
  
          for i, clip in enumerate(clips):
              # 13 clips => clip01.mp3, clip12.mp3...
              filenameFormat = 'clip%%0%dd.mp3' % len(str(len(clips)))
  
              filepath = os.path.join(outputDir, filenameFormat % (i+1))
  
              clipData = self._extractClipData(clip)
  
              with open(filepath, 'wb') as f_out:
                  f_out.write(clipData)
  
              if zipFile:
                  zipFile.write(filepath, arcname=os.path.basename(filepath))
                  os.unlink(filepath)
  
          if zipFile:
              zipFile.close()