From 36c2be760dd45c5a7f9f5f31686cb3594a6fe71e Mon Sep 17 00:00:00 2001 From: Bastian Kleineidam Date: Thu, 17 May 2012 21:22:56 +0200 Subject: [PATCH] Add support for flac files. --- doc/changelog.txt | 1 + doc/patool.1 | 6 +++--- doc/patool.txt | 12 +++++------ patoolib/__init__.py | 4 ++++ patoolib/programs/flac.py | 39 +++++++++++++++++++++++++++++++++++ patoolib/programs/py_echo.py | 4 ++++ setup.py | 7 ++++--- tests/data/t.flac.flac | Bin 0 -> 49988 bytes tests/data/t.flac.wav | Bin 0 -> 650028 bytes tests/test_archives.py | 8 +++++++ tests/test_foo_archives.py | 14 +++++++++++++ 11 files changed, 83 insertions(+), 12 deletions(-) create mode 100644 patoolib/programs/flac.py create mode 100644 tests/data/t.flac.flac create mode 100644 tests/data/t.flac.wav diff --git a/doc/changelog.txt b/doc/changelog.txt index 62e6842..429c2a1 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -2,6 +2,7 @@ * Added support for Monkey's Audio Compressor handling APE (.ape) files. * Added support for shorten handling SHN (.shn) files. +* Added support for flac handling FLAC (.flac) files. 0.16 "Game of thrones" (released 12.5.2012) diff --git a/doc/patool.1 b/doc/patool.1 index 129b30c..3282931 100644 --- a/doc/patool.1 +++ b/doc/patool.1 @@ -32,9 +32,9 @@ by the archive file extension. \fBpatool\fP supports 7z (.7z), ACE (.ace), ALZIP (.alz), APE (.ape), AR (.a), ARC (.arc), ARJ (.arj), BZIP2 (.bz2), CAB (.cab), compress (.Z), CPIO (.cpio), DEB (.deb), DMS (.dms), -GZIP (.gz), LRZIP (.lrz), LZH (.lha, .lzh), LZIP (.lz), LZMA (.lzma), -LZOP (.lzo), RPM (.rpm), RAR (.rar), RZIP (.rz), SHN (.shn), TAR (.tar), -XZ (.xz), ZIP (.zip, .jar) and ZOO (.zoo) formats. +FLAC (.flac), GZIP (.gz), LRZIP (.lrz), LZH (.lha, .lzh), LZIP (.lz), +LZMA (.lzma), LZOP (.lzo), RPM (.rpm), RAR (.rar), RZIP (.rz), SHN (.shn), +TAR (.tar), XZ (.xz), ZIP (.zip, .jar) and ZOO (.zoo) formats. It relies on helper applications to handle those archive formats (for example bzip2 for BZIP2 archives). .PP diff --git a/doc/patool.txt b/doc/patool.txt index a2bfb55..3d10e60 100644 --- a/doc/patool.txt +++ b/doc/patool.txt @@ -25,12 +25,12 @@ DESCRIPTION patool supports 7z (.7z), ACE (.ace), ALZIP (.alz), APE (.ape), AR (.a), ARC (.arc), ARJ (.arj), BZIP2 (.bz2), CAB (.cab), com‐ - press (.Z), CPIO (.cpio), DEB (.deb), DMS (.dms), GZIP (.gz), - LRZIP (.lrz), LZH (.lha, .lzh), LZIP (.lz), LZMA (.lzma), LZOP - (.lzo), RPM (.rpm), RAR (.rar), RZIP (.rz), SHN (.shn), TAR - (.tar), XZ (.xz), ZIP (.zip, .jar) and ZOO (.zoo) formats. It - relies on helper applications to handle those archive formats - (for example bzip2 for BZIP2 archives). + press (.Z), CPIO (.cpio), DEB (.deb), DMS (.dms), FLAC (.flac), + GZIP (.gz), LRZIP (.lrz), LZH (.lha, .lzh), LZIP (.lz), LZMA + (.lzma), LZOP (.lzo), RPM (.rpm), RAR (.rar), RZIP (.rz), SHN + (.shn), TAR (.tar), XZ (.xz), ZIP (.zip, .jar) and ZOO (.zoo) + formats. It relies on helper applications to handle those ar‐ + chive formats (for example bzip2 for BZIP2 archives). The archive formats TAR (.tar), ZIP (.zip), BZIP2 (.bz2) and GZIP (.gz) are supported natively and do not require helper diff --git a/patoolib/__init__.py b/patoolib/__init__.py index 6143c61..b032b40 100644 --- a/patoolib/__init__.py +++ b/patoolib/__init__.py @@ -106,6 +106,10 @@ ArchivePrograms = { 'list': ('py_echo',), }, 'flac': { + 'extract': ('flac',), + 'test': ('flac',), + 'create': ('flac',), + 'list': ('py_echo',), }, 'tar': { None: ('tar', 'star', 'py_tarfile'), diff --git a/patoolib/programs/flac.py b/patoolib/programs/flac.py new file mode 100644 index 0000000..fb08802 --- /dev/null +++ b/patoolib/programs/flac.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2012 Bastian Kleineidam +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +"""Archive commands for the flac program.""" +from patoolib import util + +def extract_flac (archive, compression, cmd, **kwargs): + """Decompress a FLAC archive to a WAV file.""" + outfile = util.get_single_outfile(kwargs['outdir'], archive, + extension=".wav") + cmdlist = [cmd, '--decode', archive, '--output-name', outfile] + return cmdlist + + +def create_flac (archive, compression, cmd, *args, **kwargs): + """Compress a WAV file to a FLAC archive.""" + cmdlist = [cmd, args[0], '--output-name', archive] + return cmdlist + + +def test_flac (archive, compression, cmd, **kwargs): + """Test a FLAC file.""" + cmdlist = [cmd, '--test'] + if not kwargs['verbose']: + cmdlist.append('-s') + cmdlist.append(archive) + return cmdlist diff --git a/patoolib/programs/py_echo.py b/patoolib/programs/py_echo.py index 3298387..7b73f8e 100644 --- a/patoolib/programs/py_echo.py +++ b/patoolib/programs/py_echo.py @@ -54,6 +54,10 @@ def list_shn (archive, compression, cmd, **kwargs): """List a SHN archive.""" return stripext(cmd, archive, extension=".wav") +def list_flac (archive, compression, cmd, **kwargs): + """List a FLAC archive.""" + return stripext(cmd, archive, extension=".wav") + def stripext (cmd, archive, extension=""): """Print the name without suffix.""" print util.stripext(archive)+extension diff --git a/setup.py b/setup.py index 83b5826..59e1066 100644 --- a/setup.py +++ b/setup.py @@ -48,9 +48,10 @@ fallback by the archive file extension. patool supports 7z (.7z), ACE (.ace), ALZIP (.alz), APE (.ape), AR (.a), ARC (.arc), ARJ (.arj), BZIP2 (.bz2), CAB (.cab), compress (.Z), CPIO (.cpio), -DEB (.deb), DMS (.dms), GZIP (.gz), LRZIP (.lrz), LZH (.lha, .lzh), -LZIP (.lz), LZMA (.lzma), LZOP (.lzo), RPM (.rpm), RAR (.rar), RZIP (.rz), -SHN (.shn), TAR (.tar), XZ (.xz), ZIP (.zip, .jar) and ZOO (.zoo) formats. +DEB (.deb), DMS (.dms), FLAC (.flac), GZIP (.gz), LRZIP (.lrz), +LZH (.lha, .lzh), LZIP (.lz), LZMA (.lzma), LZOP (.lzo), RPM (.rpm), +RAR (.rar), RZIP (.rz), SHN (.shn), TAR (.tar), XZ (.xz), ZIP (.zip, .jar) +and ZOO (.zoo) formats. It relies on helper applications to handle those archive formats (for example bzip2 for BZIP2 archives). diff --git a/tests/data/t.flac.flac b/tests/data/t.flac.flac new file mode 100644 index 0000000000000000000000000000000000000000..e2dd1a6907d93f5aaa0bc15aa5e343121c71f47c GIT binary patch literal 49988 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 literal 0 HcmV?d00001 diff --git a/tests/data/t.flac.wav b/tests/data/t.flac.wav new file mode 100644 index 0000000000000000000000000000000000000000..177b56715644b834cc2e3b38555a24f86140396b GIT binary patch literal 650028 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

c7~2-g#DZZ|AqpK0PvV?(Y2-f4kNCZQozH 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 BTxtLS literal 0 HcmV?d00001 diff --git a/tests/test_archives.py b/tests/test_archives.py index 505e122..f44d481 100644 --- a/tests/test_archives.py +++ b/tests/test_archives.py @@ -151,6 +151,7 @@ class TestArchives (ArchiveTest): self.archive_list('t.txt.rz') self.archive_list('t.ape') self.archive_list('t.shn') + self.archive_list('t.flac') @needs_program('unzip') def test_unzip (self): @@ -453,3 +454,10 @@ class TestArchives (ArchiveTest): self.program = 'shorten' self.archive_extract('t.shn') self.archive_create('t.shn', srcfile="t.wav") + + @needs_program('flac') + def test_flac (self): + self.program = 'flac' + self.archive_extract('t.flac') + self.archive_test('t.flac') + self.archive_create('t.flac', srcfile="t.wav") diff --git a/tests/test_foo_archives.py b/tests/test_foo_archives.py index 4926ed6..690a78a 100644 --- a/tests/test_foo_archives.py +++ b/tests/test_foo_archives.py @@ -167,6 +167,12 @@ class TestArchives (ArchiveTest): # file(1) does not recognize .lzma files #self.archive_list('t.lzma.foo') self.archive_list('t.txt.lz.foo') + self.archive_list('t.txt.lrz') + self.archive_list('t.txt.rz.foo') + self.archive_list('t.ape.foo') + # file(1) does not recognize .shn files + #self.archive_list('t.shn.foo') + self.archive_list('t.flac.foo') @needs_program('file') @needs_program('unzip') @@ -502,3 +508,11 @@ class TestArchives (ArchiveTest): # self.program = 'shorten' # self.archive_extract('t.shn.foo') # self.archive_create('t.shn.foo', srcfile='t.wav') + + @needs_program('file') + @needs_program('flac') + def test_flac (self): + self.program = 'flac' + self.archive_extract('t.flac.foo') + self.archive_test('t.flac.foo') + self.archive_create('t.flac.foo', srcfile='t.wav', format='flac')