diff --git a/application/controllers/ApiController.php b/application/controllers/ApiController.php index 00d1b8e9e..06e4ffe35 100644 --- a/application/controllers/ApiController.php +++ b/application/controllers/ApiController.php @@ -276,6 +276,8 @@ class ApiController extends Zend_Controller_Action $file = StoredFile::uploadFile($upload_dir); $show_instance = $this->_getParam('show_instance'); + $show_name = $this->_getParam('show_name'); + $start_time = $this->_getParam('start_time'); $show_inst = new ShowInstance($show_instance); $show_inst->setRecordedFile($file->getId()); @@ -288,9 +290,11 @@ class ApiController extends Zend_Controller_Action $description = $show->getDescription(); $hosts = $show->getHosts(); + $tags = array_merge($hosts, array($show_name)); + try { $soundcloud = new ATSoundcloud(); - $soundcloud_id = $soundcloud->uploadTrack($file->getRealFilePath(), $file->getName(), $description, $hosts); + $soundcloud_id = $soundcloud->uploadTrack($file->getRealFilePath(), $file->getName(), $description, $tags, $start_time); $show_inst->setSoundCloudFileId($soundcloud_id); break; } diff --git a/application/controllers/PreferenceController.php b/application/controllers/PreferenceController.php index 46d82054f..c3a40b3e3 100644 --- a/application/controllers/PreferenceController.php +++ b/application/controllers/PreferenceController.php @@ -34,7 +34,10 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetDoSoundCloudUpload($values["UseSoundCloud"]); Application_Model_Preference::SetSoundCloudUser($values["SoundCloudUser"]); Application_Model_Preference::SetSoundCloudPassword($values["SoundCloudPassword"]); - Application_Model_Preference::SetSoundCloudTags($values["SoundCloudTags"]); + Application_Model_Preference::SetSoundCloudTags($values["SoundCloudTags"]); + Application_Model_Preference::SetSoundCloudGenre($values["SoundCloudGenre"]); + Application_Model_Preference::SetSoundCloudTrackType($values["SoundCloudTrackType"]); + Application_Model_Preference::SetSoundCloudLicense($values["SoundCloudLicense"]); $this->view->statusMsg = "
Preferences updated.
"; } diff --git a/application/controllers/ScheduleController.php b/application/controllers/ScheduleController.php index 6f14ae10a..f6f4ee924 100644 --- a/application/controllers/ScheduleController.php +++ b/application/controllers/ScheduleController.php @@ -409,6 +409,9 @@ class ScheduleController extends Zend_Controller_Action $rebroad = $formRebroadcast->checkReliantFields($data); } } + else { + $rebroad = 1; + } } else { $formRebroadcast->reset(); @@ -422,6 +425,9 @@ class ScheduleController extends Zend_Controller_Action $rebroadAb = $formAbsoluteRebroadcast->checkReliantFields($data); } } + else { + $rebroadAb = 1; + } } $who = $formWho->isValid($data); diff --git a/application/forms/Preferences.php b/application/forms/Preferences.php index a319476a2..edb69b1b6 100644 --- a/application/forms/Preferences.php +++ b/application/forms/Preferences.php @@ -82,6 +82,56 @@ class Application_Form_Preferences extends Zend_Form 'value' => Application_Model_Preference::GetSoundCloudTags() )); + //SoundCloud default genre + $this->addElement('text', 'SoundCloudGenre', array( + 'class' => 'input_text', + 'label' => 'Default Genre:', + 'required' => false, + 'filters' => array('StringTrim'), + 'value' => Application_Model_Preference::GetSoundCloudGenre() + )); + + $select = new Zend_Form_Element_Select('SoundCloudTrackType'); + $select->setLabel('Default Track Type:'); + $select->setAttrib('class', 'input_select'); + $select->setMultiOptions(array( + "" => "", + "original" => "Original", + "remix" => "Remix", + "live" => "Live", + "recording" => "Recording", + "spoken" => "Spoken", + "podcast" => "Podcast", + "demo" => "Demo", + "in progress" => "Work in progress", + "stem" => "Stem", + "loop" => "Loop", + "sound effect" => "Sound Effect", + "sample" => "One Shot Sample", + "other" => "Other" + )); + $select->setRequired(false); + $select->setValue(Application_Model_Preference::GetSoundCloudTrackType()); + $this->addElement($select); + + $select = new Zend_Form_Element_Select('SoundCloudLicense'); + $select->setLabel('Default License:'); + $select->setAttrib('class', 'input_select'); + $select->setMultiOptions(array( + "" => "", + "no-rights-reserved" => "The work is in the public domain", + "all-rights-reserved" => "All rights are reserved", + "cc-by" => "Creative Commons Attribution", + "cc-by-nc" => "Creative Commons Attribution Noncommercial", + "cc-by-nd" => "Creative Commons Attribution No Derivative Works", + "cc-by-sa" => "Creative Commons Attribution Share Alike", + "cc-by-nc-nd" => "Creative Commons Attribution Noncommercial Non Derivate Works", + "cc-by-nc-sa" => "Creative Commons Attribution Noncommercial Share Alike" + )); + $select->setRequired(false); + $select->setValue(Application_Model_Preference::GetSoundCloudLicense()); + $this->addElement($select); + $this->addElement('submit', 'submit', array( 'class' => 'ui-button ui-state-default', 'ignore' => true, diff --git a/application/models/Preference.php b/application/models/Preference.php index b234a36b9..0ca748ebb 100644 --- a/application/models/Preference.php +++ b/application/models/Preference.php @@ -133,6 +133,30 @@ class Application_Model_Preference return Application_Model_Preference::GetValue("soundcloud_tags"); } + public static function SetSoundCloudGenre($genre) { + Application_Model_Preference::SetValue("soundcloud_genre", $genre); + } + + public static function GetSoundCloudGenre() { + return Application_Model_Preference::GetValue("soundcloud_genre"); + } + + public static function SetSoundCloudTrackType($track_type) { + Application_Model_Preference::SetValue("soundcloud_tracktype", $track_type); + } + + public static function GetSoundCloudTrackType() { + return Application_Model_Preference::GetValue("soundcloud_tracktype"); + } + + public static function SetSoundCloudLicense($license) { + Application_Model_Preference::SetValue("soundcloud_license", $license); + } + + public static function GetSoundCloudLicense() { + return Application_Model_Preference::GetValue("soundcloud_license"); + } + public static function SetAllow3rdPartyApi($bool) { Application_Model_Preference::SetValue("third_party_api", $bool); } diff --git a/application/models/Soundcloud.php b/application/models/Soundcloud.php index 6f5ca58f2..1b0d29a39 100644 --- a/application/models/Soundcloud.php +++ b/application/models/Soundcloud.php @@ -28,7 +28,7 @@ class ATSoundcloud { return $token; } - public function uploadTrack($filepath, $filename, $description, $tags=array()) + public function uploadTrack($filepath, $filename, $description, $tags=array(), $release=null) { if($this->getToken()) { @@ -50,6 +50,33 @@ class ATSoundcloud { ); + if(isset($release)) { + $release = str_replace(" ", "-", $release); + $release = str_replace(":", "-", $release); + + //YYYY-MM-DD-HH-mm-SS + $release = explode("-", $release); + + $track_data['track[release_year]'] = $release[0]; + $track_data['track[release_month]'] = $release[1]; + $track_data['track[release_day]'] = $release[2]; + } + + $genre = Application_Model_Preference::GetSoundCloudGenre(); + if ($genre != "") { + $track_data['track[genre]'] = $genre; + } + + $track_type = Application_Model_Preference::GetSoundCloudTrackType(); + if ($track_type != "") { + $track_data['track[track_type]'] = $track_type; + } + + $license = Application_Model_Preference::GetSoundCloudLicense(); + if ($license != "") { + $track_data['track[license]'] = $license; + } + $response = json_decode( $this->_soundcloud->post('tracks', $track_data), true diff --git a/python_apps/show-recorder/testrecordscript.py b/python_apps/show-recorder/testrecordscript.py index f76211a1c..691550aec 100644 --- a/python_apps/show-recorder/testrecordscript.py +++ b/python_apps/show-recorder/testrecordscript.py @@ -47,18 +47,20 @@ def getDateTimeObj(time): class ShowRecorder(Thread): - def __init__ (self, show_instance, filelength, filename, filetype): + def __init__ (self, show_instance, filelength, show_name, start_time, filetype): Thread.__init__(self) self.api_client = api_client.api_client_factory(config) self.filelength = filelength - self.filename = filename + self.show_name = show_name + self.start_time = start_time self.filetype = filetype self.show_instance = show_instance def record_show(self): length = str(self.filelength)+".0" - filename = self.filename.replace(" ", "-") + filename = self.show_name+" "+self.start_time + filename = filename.replace(" ", "-") filepath = "%s%s.%s" % (config["base_recorded_files"], filename, self.filetype) command = "ecasound -i alsa -o %s -t:%s" % (filepath, length) @@ -82,7 +84,8 @@ class ShowRecorder(Thread): # headers contains the necessary Content-Type and Content-Length # datagen is a generator object that yields the encoded parameters - datagen, headers = multipart_encode({"file": open(filepath, "rb"), 'name': filename, 'show_instance': self.show_instance}) + datagen, headers = multipart_encode({"file": open(filepath, "rb"), 'name': filename, 'show_instance': self.show_instance, \ + 'show_name': self.show_name, 'start_time': self.start_time}) self.api_client.upload_recorded_show(datagen, headers) @@ -134,9 +137,8 @@ class Record(): show_length = self.shows_to_record[start_time][0] show_instance = self.shows_to_record[start_time][1] show_name = self.shows_to_record[start_time][2] - filename = show_name+"-"+start_time - - show = ShowRecorder(show_instance, show_length.seconds, filename, filetype="mp3") + + show = ShowRecorder(show_instance, show_length.seconds, show_name, start_time, filetype="mp3", ) show.start() #remove show from shows to record.