Merge branch 'devel' of dev.sourcefabric.org:airtime into devel
This commit is contained in:
commit
10ee6aaa1d
|
@ -74,8 +74,8 @@ class ApiController extends Zend_Controller_Action
|
||||||
$download = ("true" == $this->_getParam('download'));
|
$download = ("true" == $this->_getParam('download'));
|
||||||
|
|
||||||
$logger = Logging::getLogger();
|
$logger = Logging::getLogger();
|
||||||
|
|
||||||
if(!in_array($api_key, $CC_CONFIG["apiKey"]) &&
|
if(!in_array($api_key, $CC_CONFIG["apiKey"]) &&
|
||||||
is_null(Zend_Auth::getInstance()->getStorage()->read()))
|
is_null(Zend_Auth::getInstance()->getStorage()->read()))
|
||||||
{
|
{
|
||||||
header('HTTP/1.0 401 Unauthorized');
|
header('HTTP/1.0 401 Unauthorized');
|
||||||
|
@ -120,7 +120,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
fclose($fp);
|
fclose($fp);
|
||||||
|
|
||||||
//make sure to exit here so that no other output is sent.
|
//make sure to exit here so that no other output is sent.
|
||||||
exit;
|
exit;
|
||||||
} else {
|
} else {
|
||||||
$logger->err('Resource in database, but not in storage: "'.$filepath.'"');
|
$logger->err('Resource in database, but not in storage: "'.$filepath.'"');
|
||||||
}
|
}
|
||||||
|
@ -336,12 +336,12 @@ class ApiController extends Zend_Controller_Action
|
||||||
$this->view->fileid = $file_id;
|
$this->view->fileid = $file_id;
|
||||||
$this->view->showinstanceid = $show_instance_id;
|
$this->view->showinstanceid = $show_instance_id;
|
||||||
|
|
||||||
|
|
||||||
$showCanceled = false;
|
$showCanceled = false;
|
||||||
$file = StoredFile::Recall($file_id);
|
$file = StoredFile::Recall($file_id);
|
||||||
//$show_instance = $this->_getParam('show_instance');
|
//$show_instance = $this->_getParam('show_instance');
|
||||||
|
|
||||||
$show_name = "";
|
$show_name = null;
|
||||||
try {
|
try {
|
||||||
$show_inst = new ShowInstance($show_instance_id);
|
$show_inst = new ShowInstance($show_instance_id);
|
||||||
|
|
||||||
|
@ -359,10 +359,17 @@ class ApiController extends Zend_Controller_Action
|
||||||
$showCanceled = true;
|
$showCanceled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tmpTitle = !(empty($show_name))?$show_name."-":"";
|
if (isset($show_name)) {
|
||||||
$tmpTitle .= $file->getName();
|
$tmpTitle = "$show_name-$show_start_time";
|
||||||
|
$tmpTitle = str_replace(" ", "-", $tmpTitle);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$tmpTitle = $file->getName();
|
||||||
|
}
|
||||||
|
|
||||||
$file->setMetadataValue('MDATA_KEY_TITLE', $tmpTitle);
|
$file->setMetadataValue('MDATA_KEY_TITLE', $tmpTitle);
|
||||||
|
$file->setMetadataValue('MDATA_KEY_CREATOR', "Airtime Show Recorder");
|
||||||
|
$file->setMetadataValue('MDATA_KEY_TRACKNUMBER', null);
|
||||||
|
|
||||||
if (!$showCanceled && Application_Model_Preference::GetDoSoundCloudUpload())
|
if (!$showCanceled && Application_Model_Preference::GetDoSoundCloudUpload())
|
||||||
{
|
{
|
||||||
|
@ -392,7 +399,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->id = $file_id;
|
$this->view->id = $file_id;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function mediaMonitorSetupAction() {
|
public function mediaMonitorSetupAction() {
|
||||||
|
@ -409,7 +416,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
print 'You are not allowed to access this resource.';
|
print 'You are not allowed to access this resource.';
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->stor = MusicDir::getStorDir()->getDirectory();
|
$this->view->stor = MusicDir::getStorDir()->getDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,7 +446,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
if ($mode == "create") {
|
if ($mode == "create") {
|
||||||
$filepath = $md['MDATA_KEY_FILEPATH'];
|
$filepath = $md['MDATA_KEY_FILEPATH'];
|
||||||
$file = StoredFile::RecallByFilepath($filepath);
|
$file = StoredFile::RecallByFilepath($filepath);
|
||||||
|
|
||||||
if (is_null($file)) {
|
if (is_null($file)) {
|
||||||
$file = StoredFile::Insert($md);
|
$file = StoredFile::Insert($md);
|
||||||
} else {
|
} else {
|
||||||
|
@ -447,7 +454,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Martin Konecny July 14th, 2011: The following commented out code is the way
|
//Martin Konecny July 14th, 2011: The following commented out code is the way
|
||||||
//we used to check for duplicates (by md5). Why are we checking by md5 and
|
//we used to check for duplicates (by md5). Why are we checking by md5 and
|
||||||
//not by filepath?
|
//not by filepath?
|
||||||
|
@ -509,7 +516,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
|
|
||||||
$this->view->id = $file->getId();
|
$this->view->id = $file->getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function listAllFilesAction() {
|
public function listAllFilesAction() {
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
||||||
|
@ -522,10 +529,10 @@ class ApiController extends Zend_Controller_Action
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
$dir_id = $request->getParam('dir_id');
|
$dir_id = $request->getParam('dir_id');
|
||||||
|
|
||||||
$this->view->files = StoredFile::listAllFiles($dir_id);
|
$this->view->files = StoredFile::listAllFiles($dir_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function listAllWatchedDirsAction() {
|
public function listAllWatchedDirsAction() {
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
||||||
|
@ -537,69 +544,69 @@ class ApiController extends Zend_Controller_Action
|
||||||
print 'You are not allowed to access this resource.';
|
print 'You are not allowed to access this resource.';
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = array();
|
$result = array();
|
||||||
|
|
||||||
$arrWatchedDirs = MusicDir::getWatchedDirs();
|
$arrWatchedDirs = MusicDir::getWatchedDirs();
|
||||||
$storDir = MusicDir::getStorDir();
|
$storDir = MusicDir::getStorDir();
|
||||||
|
|
||||||
$result[$storDir->getId()] = $storDir->getDirectory();
|
$result[$storDir->getId()] = $storDir->getDirectory();
|
||||||
|
|
||||||
foreach ($arrWatchedDirs as $watchedDir){
|
foreach ($arrWatchedDirs as $watchedDir){
|
||||||
$result[$watchedDir->getId()] = $watchedDir->getDirectory();
|
$result[$watchedDir->getId()] = $watchedDir->getDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->dirs = $result;
|
$this->view->dirs = $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addWatchedDirAction() {
|
public function addWatchedDirAction() {
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$api_key = $request->getParam('api_key');
|
$api_key = $request->getParam('api_key');
|
||||||
$path = base64_decode($request->getParam('path'));
|
$path = base64_decode($request->getParam('path'));
|
||||||
|
|
||||||
if (!in_array($api_key, $CC_CONFIG["apiKey"]))
|
if (!in_array($api_key, $CC_CONFIG["apiKey"]))
|
||||||
{
|
{
|
||||||
header('HTTP/1.0 401 Unauthorized');
|
header('HTTP/1.0 401 Unauthorized');
|
||||||
print 'You are not allowed to access this resource.';
|
print 'You are not allowed to access this resource.';
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->msg = MusicDir::addWatchedDir($path);
|
$this->view->msg = MusicDir::addWatchedDir($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function removeWatchedDirAction() {
|
public function removeWatchedDirAction() {
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$api_key = $request->getParam('api_key');
|
$api_key = $request->getParam('api_key');
|
||||||
$path = base64_decode($request->getParam('path'));
|
$path = base64_decode($request->getParam('path'));
|
||||||
|
|
||||||
if (!in_array($api_key, $CC_CONFIG["apiKey"]))
|
if (!in_array($api_key, $CC_CONFIG["apiKey"]))
|
||||||
{
|
{
|
||||||
header('HTTP/1.0 401 Unauthorized');
|
header('HTTP/1.0 401 Unauthorized');
|
||||||
print 'You are not allowed to access this resource.';
|
print 'You are not allowed to access this resource.';
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->msg = MusicDir::removeWatchedDir($path);
|
$this->view->msg = MusicDir::removeWatchedDir($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setStorageDirAction() {
|
public function setStorageDirAction() {
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$api_key = $request->getParam('api_key');
|
$api_key = $request->getParam('api_key');
|
||||||
$path = base64_decode($request->getParam('path'));
|
$path = base64_decode($request->getParam('path'));
|
||||||
|
|
||||||
if (!in_array($api_key, $CC_CONFIG["apiKey"]))
|
if (!in_array($api_key, $CC_CONFIG["apiKey"]))
|
||||||
{
|
{
|
||||||
header('HTTP/1.0 401 Unauthorized');
|
header('HTTP/1.0 401 Unauthorized');
|
||||||
print 'You are not allowed to access this resource.';
|
print 'You are not allowed to access this resource.';
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->msg = MusicDir::setStorDir($path);
|
$this->view->msg = MusicDir::setStorDir($path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
#Cause bash script to exit if any of the installers
|
#Cause bash script to exit if any of the installers
|
||||||
#return with a non-zero return value.
|
#return with a non-zero return value.
|
||||||
set -e
|
set -e
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
#Cause bash script to exit if any of the installers
|
#Cause bash script to exit if any of the installers
|
||||||
#return with a non-zero return value.
|
#return with a non-zero return value.
|
||||||
set -e
|
set -e
|
||||||
|
@ -29,7 +32,6 @@ python ${SCRIPTPATH}/../python_apps/remove-pypo-user.py
|
||||||
|
|
||||||
php ${SCRIPTPATH}/include/airtime-uninstall.php
|
php ${SCRIPTPATH}/include/airtime-uninstall.php
|
||||||
|
|
||||||
|
|
||||||
echo -e "\n****************************** Uninstall Complete ******************************\n"
|
echo -e "\n****************************** Uninstall Complete ******************************\n"
|
||||||
echo "NOTE: To fully remove all Airtime files, you will also have to manually delete"
|
echo "NOTE: To fully remove all Airtime files, you will also have to manually delete"
|
||||||
echo " the directories '/srv/airtime'(default storage location of media files)"
|
echo " the directories '/srv/airtime'(default storage location of media files)"
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Location of pypo_cli.py Python script
|
# Location of pypo_cli.py Python script
|
||||||
|
|
||||||
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
media_monitor_path="/usr/lib/airtime/media-monitor/"
|
media_monitor_path="/usr/lib/airtime/media-monitor/"
|
||||||
media_monitor_script="MediaMonitor.py"
|
media_monitor_script="MediaMonitor.py"
|
||||||
|
|
||||||
api_client_path="/usr/lib/airtime/"
|
api_client_path="/usr/lib/airtime/"
|
||||||
|
|
||||||
cd ${media_monitor_path}
|
cd ${media_monitor_path}
|
||||||
|
|
||||||
exec 2>&1
|
exec 2>&1
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
ls_user="pypo"
|
ls_user="pypo"
|
||||||
export HOME="/var/tmp/airtime/pypo/"
|
export HOME="/var/tmp/airtime/pypo/"
|
||||||
api_client_path="/usr/lib/airtime/"
|
api_client_path="/usr/lib/airtime/"
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
pypo_user="pypo"
|
pypo_user="pypo"
|
||||||
|
|
||||||
# Location of pypo_cli.py Python script
|
# Location of pypo_cli.py Python script
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[loggers]
|
[loggers]
|
||||||
keys=root,fetch,push,cue_file
|
keys=root,fetch,push
|
||||||
|
|
||||||
[handlers]
|
[handlers]
|
||||||
keys=fileOutHandler
|
keys=fileOutHandler
|
||||||
|
@ -23,12 +23,6 @@ handlers=fileOutHandler
|
||||||
qualname=push
|
qualname=push
|
||||||
propagate=0
|
propagate=0
|
||||||
|
|
||||||
[logger_cue_file]
|
|
||||||
level=DEBUG
|
|
||||||
handlers=fileOutHandler
|
|
||||||
qualname=push
|
|
||||||
propagate=0
|
|
||||||
|
|
||||||
[handler_fileOutHandler]
|
[handler_fileOutHandler]
|
||||||
class=logging.handlers.RotatingFileHandler
|
class=logging.handlers.RotatingFileHandler
|
||||||
level=DEBUG
|
level=DEBUG
|
||||||
|
|
|
@ -56,7 +56,6 @@ except Exception, e:
|
||||||
class Global:
|
class Global:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.api_client = api_client.api_client_factory(config)
|
self.api_client = api_client.api_client_factory(config)
|
||||||
self.cue_file = CueFile()
|
|
||||||
self.set_export_source('scheduler')
|
self.set_export_source('scheduler')
|
||||||
|
|
||||||
def selfcheck(self):
|
def selfcheck(self):
|
||||||
|
|
|
@ -59,7 +59,6 @@ class PypoFetch(Thread):
|
||||||
Thread.__init__(self)
|
Thread.__init__(self)
|
||||||
logger = logging.getLogger('fetch')
|
logger = logging.getLogger('fetch')
|
||||||
self.api_client = api_client.api_client_factory(config)
|
self.api_client = api_client.api_client_factory(config)
|
||||||
self.cue_file = CueFile()
|
|
||||||
self.set_export_source('scheduler')
|
self.set_export_source('scheduler')
|
||||||
self.queue = q
|
self.queue = q
|
||||||
logger.info("PypoFetch: init complete")
|
logger.info("PypoFetch: init complete")
|
||||||
|
|
|
@ -35,7 +35,6 @@ class PypoPush(Thread):
|
||||||
def __init__(self, q):
|
def __init__(self, q):
|
||||||
Thread.__init__(self)
|
Thread.__init__(self)
|
||||||
self.api_client = api_client.api_client_factory(config)
|
self.api_client = api_client.api_client_factory(config)
|
||||||
self.cue_file = CueFile()
|
|
||||||
self.set_export_source('scheduler')
|
self.set_export_source('scheduler')
|
||||||
self.queue = q
|
self.queue = q
|
||||||
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
import unittest
|
|
||||||
|
|
||||||
from util.cue_file import CueFile
|
|
||||||
|
|
||||||
from mutagen.mp3 import MP3
|
|
||||||
from mutagen.oggvorbis import OggVorbis
|
|
||||||
import random
|
|
||||||
import string
|
|
||||||
|
|
||||||
class test(unittest.TestCase):
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
A test class for the cue_in module.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
self.cue_file = CueFile()
|
|
||||||
|
|
||||||
def test_cue_mp3(self):
|
|
||||||
src = '../audio_samples/OpSound/Peter_Rudenko_-_Opening.mp3'
|
|
||||||
dst = '/tmp/' + "".join([random.choice(string.letters) for i in xrange(10)]) + '.mp3'
|
|
||||||
self.cue_file.cue(src, dst, 5, 5)
|
|
||||||
src_length = MP3(src).info.length
|
|
||||||
dst_length = MP3(dst).info.length
|
|
||||||
print src + " " + str(src_length)
|
|
||||||
print dst + " " + str(dst_length)
|
|
||||||
self.assertTrue(dst_length < src_length)
|
|
||||||
|
|
||||||
def test_cue_ogg(self):
|
|
||||||
src = '../audio_samples/OpSound/ACDC_-_Back_In_Black-sample.ogg'
|
|
||||||
dst = '/tmp/' + "".join([random.choice(string.letters) for i in xrange(10)]) + '.ogg'
|
|
||||||
self.cue_file.cue(src, dst, 5, 5)
|
|
||||||
src_length = OggVorbis(src).info.length
|
|
||||||
dst_length = OggVorbis(dst).info.length
|
|
||||||
print src + " " + str(src_length)
|
|
||||||
print dst + " " + str(dst_length)
|
|
||||||
self.assertTrue(dst_length < src_length)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
|
@ -1,5 +1,4 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from json import *
|
from json import *
|
||||||
from status import *
|
from status import *
|
||||||
from cue_file import *
|
|
|
@ -1,88 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import shutil
|
|
||||||
import random
|
|
||||||
import string
|
|
||||||
import time
|
|
||||||
from datetime import timedelta
|
|
||||||
import os
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from mutagen.mp3 import MP3
|
|
||||||
from mutagen.oggvorbis import OggVorbis
|
|
||||||
|
|
||||||
class CueFile():
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
logger = logging.getLogger("cue_file")
|
|
||||||
logger.debug("init")
|
|
||||||
|
|
||||||
def cue(self, src, dst, cue_in, cue_out):
|
|
||||||
|
|
||||||
logger = logging.getLogger("cue_file")
|
|
||||||
logger.debug("cue file: %s %s %s %s", src, dst, cue_in, cue_out)
|
|
||||||
|
|
||||||
if src.lower().endswith('.mp3'):
|
|
||||||
# mutagen
|
|
||||||
audio = MP3(src)
|
|
||||||
dur = round(audio.info.length, 3)
|
|
||||||
|
|
||||||
logger.debug("duration by mutagen: %s", dur)
|
|
||||||
|
|
||||||
cue_out = round(float(dur) - cue_out, 3)
|
|
||||||
|
|
||||||
str_cue_in = str(timedelta(seconds=cue_in)).replace(".", "+") # hh:mm:ss+mss, eg 00:00:20+000
|
|
||||||
str_cue_out = str(timedelta(seconds=cue_out)).replace(".", "+") #
|
|
||||||
|
|
||||||
"""
|
|
||||||
now a bit a hackish part, don't know how to do this better...
|
|
||||||
need to cut the digits after the "+"
|
|
||||||
"""
|
|
||||||
ts = str_cue_in.split("+")
|
|
||||||
try:
|
|
||||||
if len(ts[1]) == 6:
|
|
||||||
ts[1] = ts[1][0:3]
|
|
||||||
str_cue_in = "%s+%s" % (ts[0], ts[1])
|
|
||||||
except Exception, e:
|
|
||||||
pass
|
|
||||||
|
|
||||||
ts = str_cue_out.split("+")
|
|
||||||
try:
|
|
||||||
if len(ts[1]) == 6:
|
|
||||||
ts[1] = ts[1][0:3]
|
|
||||||
str_cue_out = "%s+%s" % (ts[0], ts[1])
|
|
||||||
except Exception, e:
|
|
||||||
pass
|
|
||||||
|
|
||||||
logger.debug("in: %s", str_cue_in)
|
|
||||||
logger.debug("out: %s", str(str_cue_out) )
|
|
||||||
|
|
||||||
command = 'mp3cut -o %s -t %s-%s %s' % (dst + '.tmp.mp3', str_cue_in, str_cue_out, src);
|
|
||||||
logger.info("command: %s", command)
|
|
||||||
os.system(command + ' > /dev/null 2>&1')
|
|
||||||
|
|
||||||
command = 'lame -b 128 %s %s' % (dst + '.tmp.mp3', dst);
|
|
||||||
logger.info("command: %s", command)
|
|
||||||
os.system(command + ' > /dev/null 2>&1')
|
|
||||||
elif src.lower().endswith('.ogg'):
|
|
||||||
audio = OggVorbis(src)
|
|
||||||
dur = audio.info.length
|
|
||||||
sys.stderr.write('duration: ' + str(dur) + '\n')
|
|
||||||
|
|
||||||
cue_out = float(dur) - cue_out
|
|
||||||
|
|
||||||
#convert input format of ss.mmm to milliseconds and to string<
|
|
||||||
str_cue_in = str(int(round(cue_in*1000)))
|
|
||||||
|
|
||||||
#convert input format of ss.mmm to milliseconds and to string
|
|
||||||
str_cue_out = str(int(round(cue_out*1000)))
|
|
||||||
|
|
||||||
command = 'oggCut -s %s -e %s %s %s' % (str_cue_in, str_cue_out, src, dst)
|
|
||||||
logger.info("command: %s", command)
|
|
||||||
os.system(command + ' > /dev/null 2>&1')
|
|
||||||
else:
|
|
||||||
logger.debug("in: %s", 'File name with invalid extension. File will not be cut\n')
|
|
||||||
|
|
||||||
return dst
|
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
recorder_user="pypo"
|
recorder_user="pypo"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Location of pypo_cli.py Python script
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
airtime_import_path="/usr/lib/airtime/utils/airtime-import/"
|
airtime_import_path="/usr/lib/airtime/utils/airtime-import/"
|
||||||
airtime_import_script="airtime-import.py"
|
airtime_import_script="airtime-import.py"
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,9 @@
|
||||||
# Determine directories, files
|
# Determine directories, files
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
|
||||||
|
. ${virtualenv_bin}activate
|
||||||
|
|
||||||
# Absolute path to this script
|
# Absolute path to this script
|
||||||
SCRIPT=`readlink -f $0`
|
SCRIPT=`readlink -f $0`
|
||||||
# Absolute directory this script is in
|
# Absolute directory this script is in
|
||||||
|
|
Loading…
Reference in New Issue