From 60649cba8ad2ee915c7dd01c944771239fffd080 Mon Sep 17 00:00:00 2001 From: naomiaro Date: Mon, 21 Mar 2011 15:48:44 -0400 Subject: [PATCH] CC-1987 : Automatic upload of recorded shows to Soundcloud created Soundcloud.php in models, added upload track method. using python-setuptools in install to find poster package to be able to upload recoded file to airtime and then to soundcloud. --- application/Bootstrap.php | 1 + application/configs/conf.php | 3 + .../controllers/PluploadController.php | 7 +- application/forms/Preferences.php | 10 +-- application/models/Preference.php | 2 +- application/models/Soundcloud.php | 63 ++++++++++++------ install/airtime-install.php | 3 + install/installInit.php | 9 ++- python_apps/eggs/poster-0.8.0-py2.6.egg | Bin 30851 -> 0 bytes python_apps/show-recorder/config.cfg | 2 +- 10 files changed, 71 insertions(+), 29 deletions(-) delete mode 100644 python_apps/eggs/poster-0.8.0-py2.6.egg diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 9911b8931..d9ffceae0 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -14,6 +14,7 @@ require_once (__DIR__."/configs/constants.php"); require_once (__DIR__."/configs/conf.php"); require_once 'DB.php'; +require_once 'Soundcloud.php'; require_once 'Playlist.php'; require_once 'StoredFile.php'; require_once 'Schedule.php'; diff --git a/application/configs/conf.php b/application/configs/conf.php index f43dde788..c1e98d0bb 100644 --- a/application/configs/conf.php +++ b/application/configs/conf.php @@ -46,6 +46,9 @@ $CC_CONFIG = array( 'apiKey' => $values['api_key'], 'apiPath' => '/api/', + 'soundcloud-client-id' => '2CLCxcSXYzx7QhhPVHN4A', + 'soundcloud-client-secret' => 'pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs', + "rootDir" => __DIR__."/../..", 'pearPath' => dirname(__FILE__).'/../../library/pear', 'zendPath' => dirname(__FILE__).'/../../library/Zend', diff --git a/application/controllers/PluploadController.php b/application/controllers/PluploadController.php index aae777f23..25dc47482 100644 --- a/application/controllers/PluploadController.php +++ b/application/controllers/PluploadController.php @@ -167,7 +167,12 @@ class PluploadController extends Zend_Controller_Action $upload_dir = ini_get("upload_tmp_dir"); $file = $this->upload($upload_dir); - //$file->getRealFilePath(); + if(Application_Model_Preference::GetDoSoundCloudUpload()) + { + $soundcloud = new ATSoundcloud(); + $soundcloud->uploadTrack($file->getRealFilePath(), $file->getName()); + } + die('{"jsonrpc" : "2.0", "id" : '.$file->getId().' }'); } diff --git a/application/forms/Preferences.php b/application/forms/Preferences.php index 594882f6f..5af7c6a44 100644 --- a/application/forms/Preferences.php +++ b/application/forms/Preferences.php @@ -17,7 +17,7 @@ class Application_Form_Preferences extends Zend_Form 'value' => Application_Model_Preference::GetValue("station_name") )); - $defaultFade = Application_Model_Preference::GetValue("default_fade"); + $defaultFade = Application_Model_Preference::GetDefaultFade(); if($defaultFade == ""){ $defaultFade = '00:00:00.000000'; } @@ -46,7 +46,7 @@ class Application_Form_Preferences extends Zend_Form $this->addElement('checkbox', 'UseSoundCloud', array( 'label' => 'Automatically Upload Recorded Shows To SoundCloud', 'required' => false, - 'value' => Application_Model_Preference::GetValue("soundcloud_upload") + 'value' => Application_Model_Preference::GetDoSoundCloudUpload() )); //SoundCloud Username @@ -55,16 +55,16 @@ class Application_Form_Preferences extends Zend_Form 'label' => 'SoundCloud Username:', 'required' => false, 'filters' => array('StringTrim'), - 'value' => Application_Model_Preference::GetValue("soundcloud_user") + 'value' => Application_Model_Preference::GetSoundCloudUser() )); //SoundCloud Password - $this->addElement('password', 'SoundCloudPassword', array( + $this->addElement('text', 'SoundCloudPassword', array( 'class' => 'input_text', 'label' => 'SoundCloud Password:', 'required' => false, 'filters' => array('StringTrim'), - 'value' => Application_Model_Preference::GetValue("soundcloud_pass") + 'value' => Application_Model_Preference::GetSoundCloudPassword() )); $this->addElement('submit', 'submit', array( diff --git a/application/models/Preference.php b/application/models/Preference.php index 1688fe067..6ecc83ae4 100644 --- a/application/models/Preference.php +++ b/application/models/Preference.php @@ -118,7 +118,7 @@ class Application_Model_Preference Application_Model_Preference::SetValue("soundcloud_password", $password); } - public static function GetSoundCloudUserPassword() { + public static function GetSoundCloudPassword() { return Application_Model_Preference::GetValue("soundcloud_password"); } diff --git a/application/models/Soundcloud.php b/application/models/Soundcloud.php index d1a16247b..ceaa9cc47 100644 --- a/application/models/Soundcloud.php +++ b/application/models/Soundcloud.php @@ -1,31 +1,54 @@ _soundcloud = new Services_Soundcloud($CC_CONFIG['soundcloud-client-id'], $CC_CONFIG['soundcloud-client-secret']); + } -$soundcloud = new Services_Soundcloud('2CLCxcSXYzx7QhhPVHN4A', 'pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs'); + private function getToken() + { + $username = Application_Model_Preference::GetSoundCloudUser(); + $password = Application_Model_Preference::GetSoundCloudPassword(); -$token = $soundcloud->accessTokenResourceOwner('naomiaro@gmail.com', 'airtime17'); + if($username === "" || $password === "") + { + return false; + } -$track_data = array( - 'track[sharing]' => 'private', - 'track[title]' => 'Test', - 'track[asset_data]' => '@/home/naomi/Music/testoutput.mp3' -); + $token = $this->_soundcloud->accessTokenResourceOwner($username, $password); + + return $token; + } + + public function uploadTrack($filepath, $filename) + { + if($this->getToken()) + { + $track_data = array( + 'track[sharing]' => 'private', + 'track[title]' => $filename, + 'track[asset_data]' => '@' . $filepath + ); + + try { + $response = json_decode( + $this->_soundcloud->post('tracks', $track_data), + true + ); + } + catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { + echo $e->getMessage(); + echo var_dump($track_data); + } + } + } -try { - $response = json_decode( - $soundcloud->post('tracks', $track_data), - true - ); -} -catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { - show_error($e->getMessage()); } - -*/ diff --git a/install/airtime-install.php b/install/airtime-install.php index d3badef95..55d5ba068 100644 --- a/install/airtime-install.php +++ b/install/airtime-install.php @@ -49,6 +49,9 @@ AirtimeInstall::ChangeDirOwnerToWebserver($CC_CONFIG["storageDir"]); echo "* Importing Sample Audio Clips".PHP_EOL; system(__DIR__."/../utils/airtime-import --copy ../audio_samples/ > /dev/null"); +echo "* Python eggs Setup".PHP_EOL; +AirtimeInstall::SetUpPythonEggs(); + echo PHP_EOL."*** Pypo Installation ***".PHP_EOL; system("python ".__DIR__."/../pypo/install/pypo-install.py"); diff --git a/install/installInit.php b/install/installInit.php index 6723b063a..65fb574fb 100644 --- a/install/installInit.php +++ b/install/installInit.php @@ -190,10 +190,17 @@ class AirtimeInstall { system($command); } + public static function SetUpPythonEggs() + { + //install poster streaming upload + $command = "sudo easy_install poster"; + @exec($command); + } + public static function DeleteFilesRecursive($p_path) { $command = "rm -rf $p_path"; exec($command); } -} \ No newline at end of file +} diff --git a/python_apps/eggs/poster-0.8.0-py2.6.egg b/python_apps/eggs/poster-0.8.0-py2.6.egg deleted file mode 100644 index 7af5c8f5e187432b063287df681c7ebc7adc826a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30851 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 XQlKBf^1sG7$N+R7b6#GjU!VRTOQI`l diff --git a/python_apps/show-recorder/config.cfg b/python_apps/show-recorder/config.cfg index 274d9d786..f75ea204c 100644 --- a/python_apps/show-recorder/config.cfg +++ b/python_apps/show-recorder/config.cfg @@ -1,5 +1,5 @@ # Hostname -base_url = 'http://campcaster.dev/' +base_url = 'http://localhost/' show_schedule_url = 'Recorder/get-show-schedule/format/json'