Merge branch '2.1.x' of dev.sourcefabric.org:airtime into 2.1.x

This commit is contained in:
denise 2012-07-03 18:23:04 -04:00
commit 6d056daa2f
11 changed files with 59 additions and 34 deletions

View File

@ -1,3 +1,10 @@
=======
CREDITS
=======
Version 2.1.3
-------------
Same as previous version.
======= =======
CREDITS CREDITS
======= =======

View File

@ -1,2 +1,2 @@
PRODUCT_ID=Airtime PRODUCT_ID=Airtime
PRODUCT_RELEASE=2.1.2 PRODUCT_RELEASE=2.1.3

View File

@ -1,3 +1,15 @@
2.1.3 - July 4th, 2012
* Changes
* Clarify inputs and output labels under stream settings
* Bug Fixes
* Fix playout engine crashing in rare cases after the system is restarted
* Fix entries in the Calendar unable to have multiple icons (recorded icon, soundcloud icon etc.)
* Fixed unwatching a watched folder with a large number of files (50,000+) can take a long time
* Fixed files deleted in the Web UI would delete files from the disk in watched folders
* Fixed jQuery widgets not showing the incorrectly showing the past Sunday on Sunday
* Fixed dragging and dropping tracks into a live show could cause to web UI to become unsynchronized from what is actually playing
* Fixed unable to receive mono streams for Master or Show source rebroadcasts
2.1.2 - June 18th, 2012 2.1.2 - June 18th, 2012
* Bug Fixes * Bug Fixes
* Fixed problem where playout engine may not retrieve program schedule after extended periods of user inactivity. * Fixed problem where playout engine may not retrieve program schedule after extended periods of user inactivity.

View File

@ -152,10 +152,6 @@ fi
if [ -e /etc/init.d/airtime-playout ]; then if [ -e /etc/init.d/airtime-playout ]; then
invoke-rc.d airtime-playout stop > /dev/null 2>&1 invoke-rc.d airtime-playout stop > /dev/null 2>&1
fi fi
if [ -e /etc/init.d/airtime-show-recorder ]; then
invoke-rc.d airtime-show-recorder stop > /dev/null 2>&1
fi
#export these variables to make them available in sub bash scripts #export these variables to make them available in sub bash scripts
export DO_UPGRADE export DO_UPGRADE

View File

@ -1,3 +1,3 @@
<?php <?php
define('AIRTIME_VERSION', '2.1.2'); define('AIRTIME_VERSION', '2.1.3');

View File

@ -112,5 +112,9 @@ if (strcmp($version, "2.1.2") < 0){
passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.1.2/airtime-upgrade.php"); passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.1.2/airtime-upgrade.php");
pause(); pause();
} }
if (strcmp($version, "2.1.3") < 0){
passthru("php --php-ini $SCRIPTPATH/../airtime-php.ini $SCRIPTPATH/../upgrades/airtime-2.1.3/airtime-upgrade.php");
pause();
}
echo "******************************* Upgrade Complete *******************************".PHP_EOL; echo "******************************* Upgrade Complete *******************************".PHP_EOL;

View File

@ -20,7 +20,7 @@ from configobj import ConfigObj
import string import string
import hashlib import hashlib
AIRTIME_VERSION = "2.1.2" AIRTIME_VERSION = "2.1.3"
def api_client_factory(config, logger=None): def api_client_factory(config, logger=None):
if logger != None: if logger != None:

View File

@ -89,10 +89,10 @@ class MediaMonitorCommon:
def make_file_readable(self, pathname, is_dir): def make_file_readable(self, pathname, is_dir):
if is_dir: if is_dir:
#set to 755 #set to 755
os.chmod(pathname, stat.S_IRUSR|stat.S_IWUSR|stat.S_IXUSR | stat.S_IRGRP|stat.S_IXGRP | stat.S_IROTH|stat.S_IXOTH) os.chmod(pathname, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)
else: else:
#set to 644 #set to 644
os.chmod(pathname, stat.S_IRUSR|stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH) os.chmod(pathname, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH)
def make_readable(self, pathname): def make_readable(self, pathname):
""" """
@ -195,7 +195,7 @@ class MediaMonitorCommon:
self.logger.error("Trying %s", new_filepath) self.logger.error("Trying %s", new_filepath)
if(os.path.exists(new_filepath)): if(os.path.exists(new_filepath)):
i = i+1; i = i + 1;
else: else:
filepath = new_filepath filepath = new_filepath
break break
@ -231,7 +231,7 @@ class MediaMonitorCommon:
md['MDATA_KEY_TRACKNUMBER'] = "%02d" % (int(md['MDATA_KEY_TRACKNUMBER'])) md['MDATA_KEY_TRACKNUMBER'] = "%02d" % (int(md['MDATA_KEY_TRACKNUMBER']))
#format bitrate as 128kbps #format bitrate as 128kbps
md['MDATA_KEY_BITRATE'] = str(md['MDATA_KEY_BITRATE']/1000)+"kbps" md['MDATA_KEY_BITRATE'] = str(md['MDATA_KEY_BITRATE'] / 1000) + "kbps"
filepath = None filepath = None
#file is recorded by Airtime #file is recorded by Airtime

View File

@ -429,7 +429,7 @@ class PypoFetch(Thread):
fileExt = os.path.splitext(media_item['uri'])[1] fileExt = os.path.splitext(media_item['uri'])[1]
dst = os.path.join(download_dir, media_item['id'] + fileExt) dst = os.path.join(download_dir, media_item['id'] + fileExt)
media_item['dst'] = dst media_item['dst'] = dst
media_item['started_copying'] = False media_item['file_ready'] = False
media_filtered[key] = media_item media_filtered[key] = media_item
self.media_prepare_queue.put(copy.copy(media_filtered)) self.media_prepare_queue.put(copy.copy(media_filtered))

View File

@ -60,22 +60,28 @@ class PypoFile(Thread):
except Exception, e: except Exception, e:
dst_exists = False dst_exists = False
media_item['already_exist'] = False
do_copy = False do_copy = False
if dst_exists: if dst_exists:
if src_size != dst_size: if src_size != dst_size:
do_copy = True do_copy = True
else: else:
self.logger.debug("file %s already exists in local cache as %s, skipping cpoying..." % (src, dst)) self.logger.debug("file %s already exists in local cache as %s, skipping copying..." % (src, dst))
media_item['already_exist'] = True
else: else:
do_copy = True do_copy = True
media_item['file_ready'] = not do_copy
if do_copy: if do_copy:
self.logger.debug("copying from %s to local cache %s" % (src, dst)) self.logger.debug("copying from %s to local cache %s" % (src, dst))
try: try:
media_item['started_copying'] = True """
List file as "ready" before it starts copying because by the time
Liquidsoap is ready to play this file, it should have at least started
copying (and can continue copying while Liquidsoap reads from the beginning
of the file)
"""
media_item['file_ready'] = True
""" """
copy will overwrite dst if it already exists copy will overwrite dst if it already exists

View File

@ -340,11 +340,11 @@ class PypoPush(Thread):
give up on it. give up on it.
""" """
iter_num = 0 iter_num = 0
while not media_item['started_copying'] and iter_num < 50: while not media_item['file_ready'] and iter_num < 50:
time.sleep(0.1) time.sleep(0.1)
iter_num += 1 iter_num += 1
if media_item['started_copying'] or media_item['already_exist']: if media_item['file_ready']:
self.telnet_to_liquidsoap(media_item) self.telnet_to_liquidsoap(media_item)
else: else:
self.logger.warn("File %s did not become ready in less than 5 seconds. Skipping...", media_item['dst']) self.logger.warn("File %s did not become ready in less than 5 seconds. Skipping...", media_item['dst'])