From 61eaf64cc8ad276ca7eb41514342166e4e216144 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 25 Jan 2010 14:34:29 +0000 Subject: [PATCH] fix ogg metadata, add recorder --- tools/ogg.py | 21 +++++++++--------- tools/recorder.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 tools/recorder.py diff --git a/tools/ogg.py b/tools/ogg.py index 5c1bbda..1f40f1e 100644 --- a/tools/ogg.py +++ b/tools/ogg.py @@ -9,16 +9,16 @@ # and video data through icecast2 servers. # This software is governed by the CeCILL license under French law and -# abiding by the rules of distribution of free software. You can use, +# abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL # license as circulated by CEA, CNRS and INRIA at the following URL -# "http://www.cecill.info". +# "http://www.cecill.info". # As a counterpart to the access to the source code and rights to copy, # modify and redistribute granted by the license, users are provided only # with a limited warranty and the software's author, the holder of the # economic rights, and the successive licensors have only limited -# liability. +# liability. # In this respect, the user's attention is drawn to the risks associated # with loading, using, modifying and/or developing or reproducing the @@ -27,8 +27,8 @@ # therefore means that it is reserved for developers and experienced # professionals having in-depth computer knowledge. Users are therefore # encouraged to load and test the software's suitability as regards their -# requirements in conditions enabling the security of their systems and/or -# data to be ensured and, more generally, to use and operate it in the +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the # same conditions as regards security. # The fact that you are presently reading this means that you have had @@ -45,7 +45,7 @@ from tools import * class Ogg: """An OGG file object""" - + def __init__(self, media): self.media = media self.ogg = OggVorbis(self.media) @@ -78,7 +78,7 @@ class Ogg: def get_format(self): return 'OGG' - + def get_file_extension(self): return 'ogg' @@ -106,8 +106,7 @@ class Ogg: metadata = {} for key in self.keys2ogg.keys(): try: - text = self.ogg[key][0].decode() - metadata[key] = text + metadata[key] = self.ogg[key][0] except: metadata[key] = '' return metadata @@ -121,9 +120,11 @@ class Ogg: raise IOError('ExporterError: decoder is not compatible.') def write_tags(self): + self.ogg.add_tags() + self.ogg.save() for tag in self.metadata.keys(): self.ogg[tag] = str(self.metadata[tag]) - ogg.save() + self.ogg.save() def get_args(self,options=None): """Get process options and return arguments for the encoder""" diff --git a/tools/recorder.py b/tools/recorder.py new file mode 100644 index 0000000..a1c6314 --- /dev/null +++ b/tools/recorder.py @@ -0,0 +1,55 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2006-2009 Guillaume Pellerin + +# + +# This software is a computer program whose purpose is to stream audio +# and video data through icecast2 servers. + +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". + +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. + +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. + +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. + +# Author: Guillaume Pellerin + +import os + +class Recorder: + """A file streaming iterator""" + + def __init__(self, path): + self.path = path + + def open(self, filename): + self.filename = filename + self.media = open(self.path + os.sep + self.filename, 'w') + + def write(self, chunk): + self.media.write(chunk) + + def close(self): + self.media.close() -- 2.39.5