Merge pull request #91 from Robbt/feature/always-override-podcast-album-option
basic podcast album override option in preferences
This commit is contained in:
commit
7e68a68732
6 changed files with 56 additions and 7 deletions
|
@ -45,6 +45,7 @@ class PreferenceController extends Zend_Controller_Action
|
||||||
Application_Model_Preference::SetDefaultCrossfadeDuration($values["stationDefaultCrossfadeDuration"]);
|
Application_Model_Preference::SetDefaultCrossfadeDuration($values["stationDefaultCrossfadeDuration"]);
|
||||||
Application_Model_Preference::SetDefaultFadeIn($values["stationDefaultFadeIn"]);
|
Application_Model_Preference::SetDefaultFadeIn($values["stationDefaultFadeIn"]);
|
||||||
Application_Model_Preference::SetDefaultFadeOut($values["stationDefaultFadeOut"]);
|
Application_Model_Preference::SetDefaultFadeOut($values["stationDefaultFadeOut"]);
|
||||||
|
Application_Model_Preference::SetPodcastAlbumOverride($values["podcastAlbumOverride"]);
|
||||||
Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]);
|
Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]);
|
||||||
Application_Model_Preference::SetAllowedCorsUrls($values["allowedCorsUrls"]);
|
Application_Model_Preference::SetAllowedCorsUrls($values["allowedCorsUrls"]);
|
||||||
Application_Model_Preference::SetDefaultLocale($values["locale"]);
|
Application_Model_Preference::SetDefaultLocale($values["locale"]);
|
||||||
|
|
|
@ -100,6 +100,24 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm
|
||||||
'value' => $defaultFadeOut,
|
'value' => $defaultFadeOut,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
|
$podcast_album_override = new Zend_Form_Element_Radio('podcastAlbumOverride');
|
||||||
|
$podcast_album_override->setLabel(_('Podcast Album Override'));
|
||||||
|
$podcast_album_override->setMultiOptions(array(
|
||||||
|
_("Disabled"),
|
||||||
|
_("Enabled"),
|
||||||
|
));
|
||||||
|
$podcast_album_override->setValue(Application_Model_Preference::GetPodcastAlbumOverride());
|
||||||
|
$podcast_album_override->setDescription(_('Enabling this means that podcast tracks will always contain the podcast name in their album field.'));
|
||||||
|
$podcast_album_override->setSeparator(' '); //No <br> between radio buttons
|
||||||
|
//$third_party_api->addDecorator(new Zend_Form_Decorator_Label(array('tag' => 'dd', 'class' => 'radio-inline-list')));
|
||||||
|
$podcast_album_override->addDecorator('HtmlTag', array('tag' => 'dd',
|
||||||
|
'id'=>"podcastAlbumOverride-element",
|
||||||
|
'class' => 'radio-inline-list',
|
||||||
|
));
|
||||||
|
$this->addElement($podcast_album_override);
|
||||||
|
|
||||||
|
|
||||||
$third_party_api = new Zend_Form_Element_Radio('thirdPartyApi');
|
$third_party_api = new Zend_Form_Element_Radio('thirdPartyApi');
|
||||||
$third_party_api->setLabel(_('Public Airtime API'));
|
$third_party_api->setLabel(_('Public Airtime API'));
|
||||||
$third_party_api->setDescription(_('Required for embeddable schedule widget.'));
|
$third_party_api->setDescription(_('Required for embeddable schedule widget.'));
|
||||||
|
|
|
@ -365,6 +365,17 @@ class Application_Model_Preference
|
||||||
return (strlen($val) == 0 ) ? "1" : $val;
|
return (strlen($val) == 0 ) ? "1" : $val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function SetPodcastAlbumOverride($bool)
|
||||||
|
{
|
||||||
|
self::setValue("podcast_album_override", $bool);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function GetPodcastAlbumOverride()
|
||||||
|
{
|
||||||
|
$val = self::getValue("podcast_album_override");
|
||||||
|
return $val === '1' ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
public static function SetPhone($phone)
|
public static function SetPhone($phone)
|
||||||
{
|
{
|
||||||
self::setValue("phone", $phone);
|
self::setValue("phone", $phone);
|
||||||
|
|
|
@ -150,6 +150,7 @@ class Application_Service_PodcastEpisodeService extends Application_Service_Thir
|
||||||
'callback_url' => $stationUrl . 'rest/media',
|
'callback_url' => $stationUrl . 'rest/media',
|
||||||
'api_key' => $CC_CONFIG["apiKey"][0],
|
'api_key' => $CC_CONFIG["apiKey"][0],
|
||||||
'podcast_name' => $title,
|
'podcast_name' => $title,
|
||||||
|
'album_override' => Application_Model_Preference::GetPodcastAlbumOverride(),
|
||||||
);
|
);
|
||||||
$task = $this->_executeTask(static::$_CELERY_TASKS[self::DOWNLOAD], $data);
|
$task = $this->_executeTask(static::$_CELERY_TASKS[self::DOWNLOAD], $data);
|
||||||
// Get the created ThirdPartyTaskReference and set the episode ID so
|
// Get the created ThirdPartyTaskReference and set the episode ID so
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
|
|
||||||
<?php echo $this->element->getElement('stationDefaultCrossfadeDuration')->render() ?>
|
<?php echo $this->element->getElement('stationDefaultCrossfadeDuration')->render() ?>
|
||||||
|
|
||||||
|
<?php echo $this->element->getElement('podcastAlbumOverride')->render() ?>
|
||||||
|
|
||||||
<?php echo $this->element->getElement('thirdPartyApi')->render() ?>
|
<?php echo $this->element->getElement('thirdPartyApi')->render() ?>
|
||||||
<?php echo $this->element->getElement('allowedCorsUrls')->render() ?>
|
<?php echo $this->element->getElement('allowedCorsUrls')->render() ?>
|
||||||
|
|
||||||
|
|
|
@ -130,7 +130,7 @@ def soundcloud_delete(token, track_id):
|
||||||
|
|
||||||
|
|
||||||
@celery.task(name='podcast-download', acks_late=True)
|
@celery.task(name='podcast-download', acks_late=True)
|
||||||
def podcast_download(id, url, callback_url, api_key, podcast_name):
|
def podcast_download(id, url, callback_url, api_key, podcast_name, album_override):
|
||||||
"""
|
"""
|
||||||
Download a podcast episode
|
Download a podcast episode
|
||||||
|
|
||||||
|
@ -138,7 +138,8 @@ def podcast_download(id, url, callback_url, api_key, podcast_name):
|
||||||
:param url: download url for the episode
|
:param url: download url for the episode
|
||||||
:param callback_url: callback URL to send the downloaded file to
|
:param callback_url: callback URL to send the downloaded file to
|
||||||
:param api_key: API key for callback authentication
|
:param api_key: API key for callback authentication
|
||||||
:param podcast_name: NAme of podcast to be added to id3 metadata for smartblock
|
:param podcast_name: Name of podcast to be added to id3 metadata for smartblock
|
||||||
|
:param album_override: Passing whether to override the album id3 even if it exists
|
||||||
|
|
||||||
:return: JSON formatted string of a dictionary of download statuses
|
:return: JSON formatted string of a dictionary of download statuses
|
||||||
and file identifiers (for successful uploads)
|
and file identifiers (for successful uploads)
|
||||||
|
@ -156,11 +157,10 @@ def podcast_download(id, url, callback_url, api_key, podcast_name):
|
||||||
# currently hardcoded for mp3s may want to add support for oggs etc
|
# currently hardcoded for mp3s may want to add support for oggs etc
|
||||||
m = MP3(audiofile.name, ID3=EasyID3)
|
m = MP3(audiofile.name, ID3=EasyID3)
|
||||||
logger.debug('podcast_download loaded mp3 {0}'.format(audiofile.name))
|
logger.debug('podcast_download loaded mp3 {0}'.format(audiofile.name))
|
||||||
try:
|
|
||||||
m['album']
|
# replace album title as needed
|
||||||
except KeyError:
|
m = podcast_override_album(m, podcast_name, album_override)
|
||||||
logger.debug('setting new album name to {0} in podcast'.format(podcast_name.encode('ascii', 'ignore')))
|
|
||||||
m['album'] = podcast_name
|
|
||||||
m.save()
|
m.save()
|
||||||
filetypeinfo = m.pprint()
|
filetypeinfo = m.pprint()
|
||||||
logger.info('filetypeinfo is {0}'.format(filetypeinfo.encode('ascii', 'ignore')))
|
logger.info('filetypeinfo is {0}'.format(filetypeinfo.encode('ascii', 'ignore')))
|
||||||
|
@ -176,6 +176,22 @@ def podcast_download(id, url, callback_url, api_key, podcast_name):
|
||||||
obj['status'] = 0
|
obj['status'] = 0
|
||||||
return json.dumps(obj)
|
return json.dumps(obj)
|
||||||
|
|
||||||
|
def podcast_override_album(m, podcast_name, override):
|
||||||
|
"""
|
||||||
|
Override m['album'] if empty or forced with override arg
|
||||||
|
"""
|
||||||
|
# if the album override option is enabled replace the album id3 tag with the podcast name even if the album tag contains data
|
||||||
|
if override is True:
|
||||||
|
logger.debug('overriding album name to {0} in podcast'.format(podcast_name.encode('ascii', 'ignore')))
|
||||||
|
m['album'] = podcast_name
|
||||||
|
else:
|
||||||
|
# replace the album id3 tag with the podcast name if the album tag is empty
|
||||||
|
try:
|
||||||
|
m['album']
|
||||||
|
except KeyError:
|
||||||
|
logger.debug('setting new album name to {0} in podcast'.format(podcast_name.encode('ascii', 'ignore')))
|
||||||
|
m['album'] = podcast_name
|
||||||
|
return m
|
||||||
|
|
||||||
def get_filename(r):
|
def get_filename(r):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue