Merge branch '2.4.x'

Conflicts:
	airtime_mvc/public/js/airtime/showbuilder/builder.js
	python_apps/pypo/liquidsoap_scripts/fdkaac.liq
	python_apps/pypo/schedule/pypofetch.py
	python_apps/pypo/schedule/telnetliquidsoap.py
This commit is contained in:
Martin Konecny 2013-06-14 16:45:52 -04:00
commit 2a0c9769aa
40 changed files with 3341 additions and 3801 deletions

View File

@ -523,6 +523,15 @@ class ApiController extends Zend_Controller_Action
}
//Updating a metadata change.
else {
//CC-5207 - restart media-monitor causes it to reevaluate all
//files in watched directories, and reset their cue-in/cue-out
//values. Since media-monitor has nothing to do with cue points
//let's unset it here. Note that on mode == "create", we still
//want media-monitor sending info about cue_out which by default
//will be equal to length of track until silan can take over.
unset($md['MDATA_KEY_CUE_IN']);
unset($md['MDATA_KEY_CUE_OUT']);
$file->setMetadata($md);
}
} elseif ($mode == "moved") {

View File

@ -426,6 +426,9 @@ class LibraryController extends Zend_Controller_Action
$request = $this->getRequest();
$file_id = $this->_getParam('id', null);
$file = Application_Model_StoredFile::RecallById($file_id);
@ -438,7 +441,15 @@ class LibraryController extends Zend_Controller_Action
$form->populate($file->getDbColMetadata());
if ($request->isPost()) {
if ($form->isValid($request->getPost())) {
$js = $this->_getParam('data');
$serialized = array();
//need to convert from serialized jQuery array.
foreach ($js as $j) {
$serialized[$j["name"]] = $j["value"];
}
if ($form->isValid($serialized)) {
$formValues = $this->_getParam('data', null);
$formdata = array();

View File

@ -39,7 +39,7 @@ class Application_Form_EditAudioMD extends Zend_Form
$this->addElement('text', 'track_number', array(
'label' => _('Track:'),
'class' => 'input_text',
'filters' => array('StringTrim')
'filters' => array('StringTrim'),
));
// Add genre field
@ -50,16 +50,17 @@ class Application_Form_EditAudioMD extends Zend_Form
));
// Add year field
$this->addElement('text', 'year', array(
'label' => _('Year:'),
'class' => 'input_text',
'filters' => array('StringTrim'),
'validators' => array(
$year = new Zend_Form_Element_Text('year');
$year->class = 'input_text';
$year->setLabel(_('Year:'))
->setFilters(array('StringTrim'))
->setValidators(array(
new Zend_Validate_StringLength(array('max' => 10)),
Application_Form_Helper_ValidationTypes::overrrideDateValidator("YYYY-MM-DD"),
Application_Form_Helper_ValidationTypes::overrrideDateValidator("YYYY-MM"),
Application_Form_Helper_ValidationTypes::overrrideDateValidator("YYYY")
)
));
));
$this->addElement($year);
// Add label field
$this->addElement('text', 'label', array(

View File

@ -194,14 +194,13 @@ class Application_Model_Scheduler
if ($type === "audioclip") {
$file = CcFilesQuery::create()->findPK($id, $this->con);
$storedFile = new Application_Model_StoredFile($file, $this->con);
if (is_null($file) || !$file->visible()) {
throw new Exception(_("A selected File does not exist!"));
} else {
$data = $this->fileInfo;
$data["id"] = $id;
$data["cliplength"] = $storedFile->getRealClipLength(
$data["cliplength"] = Application_Model_StoredFile::getRealClipLength(
$file->getDbCuein(),
$file->getDbCueout());
@ -840,6 +839,9 @@ class Application_Model_Scheduler
Logging::debug("adjusting all following items.");
Logging::debug(floatval($pend) - floatval($pstart));
}
if ($moveAction) {
$this->calculateCrossfades($instanceId);
}
}//for each instance
}//for each schedule location

View File

@ -778,7 +778,8 @@ SQL;
foreach ($results['aaData'] as &$row) {
$row['id'] = intval($row['id']);
$len_formatter = new LengthFormatter($row['length']);
$len_formatter = new LengthFormatter(
self::getRealClipLength($row["cuein"], $row["cueout"]));
$row['length'] = $len_formatter->format();
$cuein_formatter = new LengthFormatter($row["cuein"]);
@ -1347,7 +1348,7 @@ SQL;
Application_Common_Database::EXECUTE);
}
public function getRealClipLength($p_cuein, $p_cueout) {
public static function getRealClipLength($p_cuein, $p_cueout) {
$sql = "SELECT :cueout::INTERVAL - :cuein::INTERVAL";
return Application_Common_Database::prepareAndExecute($sql, array(

View File

@ -148,6 +148,24 @@ class Application_Service_SchedulerService
return $dt;
}
private static function findTimeDifference($p_startDT, $p_seconds)
{
$startEpoch = $p_startDT->format("U.u");
//add two float numbers to 6 subsecond precision
//DateTime::createFromFormat("U.u") will have a problem if there is no decimal in the resulting number.
$newEpoch = bcsub($startEpoch , (string) $p_seconds, 6);
$dt = DateTime::createFromFormat("U.u", $newEpoch, new DateTimeZone("UTC"));
if ($dt === false) {
//PHP 5.3.2 problem
$dt = DateTime::createFromFormat("U", intval($newEpoch), new DateTimeZone("UTC"));
}
return $dt;
}
public static function fillNewLinkedInstances($ccShow)
{
/* First check if any linked instances have content
@ -224,7 +242,8 @@ class Application_Service_SchedulerService
"{$id}, ".
"{$item["position"]})";
$nextStartDT = $endTimeDT;
$nextStartDT = self::findTimeDifference($endTimeDT,
Application_Model_Preference::GetDefaultCrossfadeDuration());
} //foreach show item
}
} //foreach linked instance
@ -281,7 +300,8 @@ class Application_Service_SchedulerService
->setDbPosition($item->getDbPosition())
->save();
$nextStartDT = $endTimeDT;
$nextStartDT = self::findTimeDifference($endTimeDT,
Application_Model_Preference::GetDefaultCrossfadeDuration());
} //foreach show item
$ccShowInstance

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Airtime 2.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-30 11:13-0400\n"
"PO-Revision-Date: 2013-05-22 10:47+0100\n"
"PO-Revision-Date: 2013-06-11 17:00+0100\n"
"Last-Translator: Daniel James <daniel.james@sourcefabric.org>\n"
"Language-Team: Canadian Localization <contact@sourcefabric.org>\n"
"Language: en_CA\n"
@ -2274,7 +2274,7 @@ msgstr "Warning: Shows cannot be re-linked"
#: airtime_mvc/application/controllers/LocaleController.php:196
msgid "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows"
msgstr ""
msgstr "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows"
#: airtime_mvc/application/controllers/LocaleController.php:200
msgid "Show"

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Airtime 2.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-30 11:13-0400\n"
"PO-Revision-Date: 2013-05-22 10:48+0100\n"
"PO-Revision-Date: 2013-06-11 16:58+0100\n"
"Last-Translator: Daniel James <daniel.james@sourcefabric.org>\n"
"Language-Team: British Localization <contact@sourcefabric.org>\n"
"Language: en_GB\n"
@ -2274,7 +2274,7 @@ msgstr "Warning: Shows cannot be re-linked"
#: airtime_mvc/application/controllers/LocaleController.php:196
msgid "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows"
msgstr ""
msgstr "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows"
#: airtime_mvc/application/controllers/LocaleController.php:200
msgid "Show"

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Airtime 2.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-30 11:13-0400\n"
"PO-Revision-Date: 2013-05-22 10:49+0100\n"
"PO-Revision-Date: 2013-06-11 16:59+0100\n"
"Last-Translator: Daniel James <daniel.james@sourcefabric.org>\n"
"Language-Team: United States Localization <contact@sourcefabric.org>\n"
"Language: en_US\n"
@ -2274,7 +2274,7 @@ msgstr "Warning: Shows cannot be re-linked"
#: airtime_mvc/application/controllers/LocaleController.php:196
msgid "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows"
msgstr ""
msgstr "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows"
#: airtime_mvc/application/controllers/LocaleController.php:200
msgid "Show"

View File

@ -1,4 +1,3 @@
# Copyright (C) 2013 Sourcefabric
# This file is distributed under the same license as the Airtime package.
# Sourcefabric <contact@sourcefabric.org>, 2013.
#
@ -7,10 +6,9 @@ msgstr ""
"Project-Id-Version: Airtime 2.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-05-30 11:13-0400\n"
"PO-Revision-Date: 2013-05-22 10:50+0100\n"
"PO-Revision-Date: 2013-06-13 16:46+0100\n"
"Last-Translator: Daniel James <daniel.james@sourcefabric.org>\n"
"Language-Team: Hungarian Localization <contact@sourcefabric.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -68,7 +66,7 @@ msgstr "Műsor Szerkesztése"
#: airtime_mvc/application/services/CalendarService.php:133
msgid "Edit This Instance"
msgstr ""
msgstr "Szerkesztés Ebben az Esetben"
#: airtime_mvc/application/services/CalendarService.php:151
#: airtime_mvc/application/services/CalendarService.php:166
@ -92,7 +90,7 @@ msgstr "Törlés Ebben és Minden Más Esetben"
#: airtime_mvc/application/services/CalendarService.php:210
msgid "Permission denied"
msgstr ""
msgstr "Engedély megtagadva"
#: airtime_mvc/application/services/CalendarService.php:214
#: airtime_mvc/application/models/ShowInstance.php:245
@ -227,12 +225,12 @@ msgstr "Kijelentkezés"
#: airtime_mvc/application/layouts/scripts/layout.phtml:42
#: airtime_mvc/application/layouts/scripts/layout.phtml:68
msgid "Play"
msgstr ""
msgstr "Lejátszás"
#: airtime_mvc/application/layouts/scripts/layout.phtml:43
#: airtime_mvc/application/layouts/scripts/layout.phtml:69
msgid "Stop"
msgstr ""
msgstr "Leállítás"
#: airtime_mvc/application/layouts/scripts/layout.phtml:47
#: airtime_mvc/application/models/Block.php:1334
@ -243,7 +241,7 @@ msgstr "Felkeverés"
#: airtime_mvc/application/layouts/scripts/layout.phtml:49
msgid "Set Cue In"
msgstr ""
msgstr "Felkeverés Beállítása"
#: airtime_mvc/application/layouts/scripts/layout.phtml:54
#: airtime_mvc/application/models/Block.php:1335
@ -254,11 +252,11 @@ msgstr "Lekeverés"
#: airtime_mvc/application/layouts/scripts/layout.phtml:56
msgid "Set Cue Out"
msgstr ""
msgstr "Lekeverés Beállítása"
#: airtime_mvc/application/layouts/scripts/layout.phtml:73
msgid "Cursor"
msgstr ""
msgstr "Kurzor"
#: airtime_mvc/application/layouts/scripts/layout.phtml:74
#: airtime_mvc/application/controllers/LocaleController.php:282
@ -272,8 +270,12 @@ msgstr "Leúsztatás"
#: airtime_mvc/application/layouts/scripts/login.phtml:16
#, php-format
msgid "Airtime Copyright &copy;Sourcefabric o.p.s. All rights reserved.%sMaintained and distributed under GNU GPL v.3 by %sSourcefabric o.p.s%s"
msgstr "Airtime Szerzői & másolási jog;Sourcefabric o.p.s. Minden jog fenntartva.%sFejleszti és forgalmazza GNU GPL v.3 alatt a %sSourcefabric o.p.s%s"
msgid ""
"Airtime Copyright &copy;Sourcefabric o.p.s. All rights reserved.%sMaintained "
"and distributed under GNU GPL v.3 by %sSourcefabric o.p.s%s"
msgstr ""
"Airtime Szerzői & másolási jog;Sourcefabric o.p.s. Minden jog fenntartva."
"%sFejleszti és forgalmazza GNU GPL v.3 alatt a %sSourcefabric o.p.s%s"
#: airtime_mvc/application/models/StoredFile.php:953
msgid "Failed to create 'organize' directory."
@ -281,16 +283,27 @@ msgstr "Nem sikerült létrehozni 'szervező' könyvtárat."
#: airtime_mvc/application/models/StoredFile.php:967
#, php-format
msgid "The file was not uploaded, there is %s MB of disk space left and the file you are uploading has a size of %s MB."
msgstr "A fájl feltöltése sikertelen, mert a szabad lemezterület már csak %s MB a feltöltött fájl mérete pedig %s MB."
msgid ""
"The file was not uploaded, there is %s MB of disk space left and the file "
"you are uploading has a size of %s MB."
msgstr ""
"A fájl feltöltése sikertelen, mert a szabad lemezterület már csak %s MB a "
"feltöltött fájl mérete pedig %s MB."
#: airtime_mvc/application/models/StoredFile.php:976
msgid "This file appears to be corrupted and will not be added to media library."
msgid ""
"This file appears to be corrupted and will not be added to media library."
msgstr "A fájl úgy tűnik sérült, nem került be a médiatárba."
#: airtime_mvc/application/models/StoredFile.php:1015
msgid "The file was not uploaded, this error can occur if the computer hard drive does not have enough disk space or the stor directory does not have correct write permissions."
msgstr "A fájl feltöltése sikertelen, valószínű, hogy a számítógép merevlemezén nincs elég hely, vagy a tárolási könyvtár nem rendelkezik megfelelő írási engedélyekkel."
msgid ""
"The file was not uploaded, this error can occur if the computer hard drive "
"does not have enough disk space or the stor directory does not have correct "
"write permissions."
msgstr ""
"A fájl feltöltése sikertelen, valószínű, hogy a számítógép merevlemezén "
"nincs elég hely, vagy a tárolási könyvtár nem rendelkezik megfelelő írási "
"engedélyekkel."
#: airtime_mvc/application/models/Preference.php:620
msgid "Select Country"
@ -319,13 +332,19 @@ msgstr "%s nem létező könyvtár."
#: airtime_mvc/application/models/MusicDir.php:232
#, php-format
msgid "%s is already set as the current storage dir or in the watched folders list"
msgstr "%s már be van állítva, mint a jelenlegi tároló elérési útvonala vagy a vizsgált mappák listája"
msgid ""
"%s is already set as the current storage dir or in the watched folders list"
msgstr ""
"%s már be van állítva, mint a jelenlegi tároló elérési útvonala vagy a "
"vizsgált mappák listája"
#: airtime_mvc/application/models/MusicDir.php:386
#, php-format
msgid "%s is already set as the current storage dir or in the watched folders list."
msgstr "%s már be van állítva, mint jelenlegi tároló elérési útvonala vagy, a vizsgált mappák listájában."
msgid ""
"%s is already set as the current storage dir or in the watched folders list."
msgstr ""
"%s már be van állítva, mint jelenlegi tároló elérési útvonala vagy, a "
"vizsgált mappák listájában."
#: airtime_mvc/application/models/MusicDir.php:429
#, php-format
@ -342,14 +361,17 @@ msgstr "A fel- és a lekeverés értékei nullák."
#: airtime_mvc/application/models/Block.php:879
#: airtime_mvc/application/models/Block.php:900
msgid "Can't set cue in to be larger than cue out."
msgstr "Nem lehet beállítani, hogy a felkeverés hosszabb legyen, mint a lekeverés."
msgstr ""
"Nem lehet beállítani, hogy a felkeverés hosszabb legyen, mint a lekeverés."
#: airtime_mvc/application/models/Playlist.php:841
#: airtime_mvc/application/models/Playlist.php:885
#: airtime_mvc/application/models/Block.php:868
#: airtime_mvc/application/models/Block.php:924
msgid "Can't set cue out to be greater than file length."
msgstr "Nem lehet beállítani, mert a lekeverési idő nem lehet nagyobb a fájl hosszánál."
msgstr ""
"Nem lehet beállítani, mert a lekeverési idő nem lehet nagyobb a fájl "
"hosszánál."
#: airtime_mvc/application/models/Playlist.php:877
#: airtime_mvc/application/models/Block.php:935
@ -443,7 +465,7 @@ msgstr "Airtime Jelszó Visszaállítása"
#: airtime_mvc/application/models/Scheduler.php:72
msgid "Cannot move items out of linked shows"
msgstr ""
msgstr "Nem tud áthelyezni elemeket a kapcsolódó műsorokból"
#: airtime_mvc/application/models/Scheduler.php:118
msgid "The schedule you're viewing is out of date! (sched mismatch)"
@ -479,8 +501,11 @@ msgid "The show %s has been previously updated!"
msgstr "A műsor %s már korábban frissítve lett!"
#: airtime_mvc/application/models/Scheduler.php:177
msgid "Content in linked shows must be scheduled before or after any one is broadcasted"
msgid ""
"Content in linked shows must be scheduled before or after any one is "
"broadcasted"
msgstr ""
"A kapcsolódó műsorok tartalmait bármelyik adás előtt vagy után kell ütemezni"
#: airtime_mvc/application/models/Scheduler.php:200
#: airtime_mvc/application/models/Scheduler.php:286
@ -764,7 +789,8 @@ msgstr "Az állomásom közzététele a Sourcefabric.org -on"
#: airtime_mvc/application/forms/SupportSettings.php:148
#, php-format
msgid "By checking this box, I agree to Sourcefabric's %sprivacy policy%s."
msgstr "A mező bejelölésével, elfogadom a Sourcefabric %sadatvédelmi irányelveket%s."
msgstr ""
"A mező bejelölésével, elfogadom a Sourcefabric %sadatvédelmi irányelveket%s."
#: airtime_mvc/application/forms/RegisterAirtime.php:166
#: airtime_mvc/application/forms/SupportSettings.php:171
@ -818,7 +844,8 @@ msgid "Value is required and can't be empty"
msgstr "Adjon meg egy értéket, nem lehet üres"
#: airtime_mvc/application/forms/helpers/ValidationTypes.php:19
msgid "'%value%' is no valid email address in the basic format local-part@hostname"
msgid ""
"'%value%' is no valid email address in the basic format local-part@hostname"
msgstr "'%value%' érvénytelen formátum (név@hosztnév)"
#: airtime_mvc/application/forms/helpers/ValidationTypes.php:33
@ -1124,7 +1151,7 @@ msgstr "A csatolási pont nem lehet üres Icecast szerver esetében."
#: airtime_mvc/application/forms/AddShowRepeats.php:10
msgid "Link:"
msgstr ""
msgstr "Hivatkozás:"
#: airtime_mvc/application/forms/AddShowRepeats.php:16
msgid "Repeat Type:"
@ -1183,15 +1210,15 @@ msgstr "Sz"
#: airtime_mvc/application/forms/AddShowRepeats.php:45
msgid "Repeat By:"
msgstr ""
msgstr "Által Ismételt:"
#: airtime_mvc/application/forms/AddShowRepeats.php:48
msgid "day of the month"
msgstr ""
msgstr "a hónap napja"
#: airtime_mvc/application/forms/AddShowRepeats.php:48
msgid "day of the week"
msgstr ""
msgstr "a hét napja"
#: airtime_mvc/application/forms/AddShowRepeats.php:67
msgid "No End?"
@ -1317,7 +1344,8 @@ msgstr "Műsort nem lehet a múltban létrehozni"
#: airtime_mvc/application/forms/AddShowWhen.php:121
msgid "Cannot modify start date/time of the show that is already started"
msgstr "Nem lehet módosítani a műsor kezdési időpontját, ha a műsor már elindult"
msgstr ""
"Nem lehet módosítani a műsor kezdési időpontját, ha a műsor már elindult"
#: airtime_mvc/application/forms/AddShowWhen.php:140
msgid "Cannot have duration 00h 00m"
@ -1545,8 +1573,12 @@ msgstr "'Hosszúság' '00:00:00' formában lehet"
#: airtime_mvc/application/forms/SmartBlockCriteria.php:513
#: airtime_mvc/application/forms/SmartBlockCriteria.php:526
msgid "The value should be in timestamp format (e.g. 0000-00-00 or 0000-00-00 00:00:00)"
msgstr "Az értéknek az alábbi időbélyeg formátumban kell lennie (pl. 0000-00-00 vagy 0000-00-00 00:00:00)"
msgid ""
"The value should be in timestamp format (e.g. 0000-00-00 or 0000-00-00 "
"00:00:00)"
msgstr ""
"Az értéknek az alábbi időbélyeg formátumban kell lennie (pl. 0000-00-00 vagy "
"0000-00-00 00:00:00)"
#: airtime_mvc/application/forms/SmartBlockCriteria.php:540
msgid "The value has to be numeric"
@ -1603,7 +1635,7 @@ msgstr "A jelszó nem lehet üres."
#: airtime_mvc/application/forms/GeneralPreferences.php:33
msgid "Default Crossfade Duration (s):"
msgstr ""
msgstr "Alapértelmezett Áttünési Időtartam (s):"
#: airtime_mvc/application/forms/GeneralPreferences.php:40
#: airtime_mvc/application/forms/GeneralPreferences.php:59
@ -1613,16 +1645,20 @@ msgstr "adja meg másodpercben 0{0,0}"
#: airtime_mvc/application/forms/GeneralPreferences.php:52
msgid "Default Fade In (s):"
msgstr ""
msgstr "Alapértelmezett Felúsztatás (s)"
#: airtime_mvc/application/forms/GeneralPreferences.php:71
msgid "Default Fade Out (s):"
msgstr ""
msgstr "Alapértelmezett Leúsztatás (s)"
#: airtime_mvc/application/forms/GeneralPreferences.php:89
#, php-format
msgid "Allow Remote Websites To Access \"Schedule\" Info?%s (Enable this to make front-end widgets work.)"
msgstr "Távoli Weboldalak Engedélyezése \"Ütemzés\" Info?%s (Engedélyezi vele a front-end kütyü munkát.)"
msgid ""
"Allow Remote Websites To Access \"Schedule\" Info?%s (Enable this to make "
"front-end widgets work.)"
msgstr ""
"Távoli Weboldalak Engedélyezése \"Ütemzés\" Info?%s (Engedélyezi vele a "
"front-end kütyü munkát.)"
#: airtime_mvc/application/forms/GeneralPreferences.php:90
msgid "Disabled"
@ -1822,8 +1858,12 @@ msgid "Wrong username or password provided. Please try again."
msgstr "Hibás felhasználónév vagy jelszó. Kérjük, próbálja meg újra."
#: airtime_mvc/application/controllers/LoginController.php:142
msgid "Email could not be sent. Check your mail server settings and ensure it has been configured properly."
msgstr "Az e-mailt nem lehetett elküldeni. Ellenőrizze a levelező kiszolgáló beállításait."
msgid ""
"Email could not be sent. Check your mail server settings and ensure it has "
"been configured properly."
msgstr ""
"Az e-mailt nem lehetett elküldeni. Ellenőrizze a levelező kiszolgáló "
"beállításait."
#: airtime_mvc/application/controllers/LoginController.php:145
msgid "Given email not found."
@ -1937,7 +1977,9 @@ msgstr "Csak számokat adhat hozzá a smart block-hoz."
#: airtime_mvc/application/controllers/LocaleController.php:50
#: airtime_mvc/application/controllers/PlaylistController.php:163
msgid "You can only add tracks, smart blocks, and webstreams to playlists."
msgstr "Csak számokat, smart block-okat és adásfolyamokat adhatunk a lejátszási listákhoz."
msgstr ""
"Csak számokat, smart block-okat és adásfolyamokat adhatunk a lejátszási "
"listákhoz."
#: airtime_mvc/application/controllers/LocaleController.php:53
msgid "Please select a cursor position on timeline."
@ -1974,11 +2016,11 @@ msgstr "Biztos benne, hogy törli a kijelölt eleme(ke)t?"
#: airtime_mvc/application/controllers/LocaleController.php:64
msgid "Scheduled"
msgstr ""
msgstr "Ütemezett"
#: airtime_mvc/application/controllers/LocaleController.php:65
msgid "Playlist / Block"
msgstr ""
msgstr "Lejátszási lista / Block"
#: airtime_mvc/application/controllers/LocaleController.php:69
msgid "Bit Rate"
@ -2064,12 +2106,16 @@ msgstr "A bemenet formája lehet: óó:pp:mm.t"
#: airtime_mvc/application/controllers/LocaleController.php:111
#, php-format
msgid "You are currently uploading files. %sGoing to another screen will cancel the upload process. %sAre you sure you want to leave the page?"
msgstr "Ön jelenleg fájlokat tölt fel. %sHa másik ablakot nyit meg, akkor a feltöltési folyamat megszakad. %sBiztos benne, hogy elhagyja az oldalt?"
msgid ""
"You are currently uploading files. %sGoing to another screen will cancel the "
"upload process. %sAre you sure you want to leave the page?"
msgstr ""
"Ön jelenleg fájlokat tölt fel. %sHa másik ablakot nyit meg, akkor a "
"feltöltési folyamat megszakad. %sBiztos benne, hogy elhagyja az oldalt?"
#: airtime_mvc/application/controllers/LocaleController.php:113
msgid "Open Media Builder"
msgstr ""
msgstr "Média Építő Megnyitása"
#: airtime_mvc/application/controllers/LocaleController.php:114
msgid "please put in a time '00:00:00 (.0)'"
@ -2100,8 +2146,13 @@ msgid "Playlist shuffled"
msgstr "Kevert lejátszási lista"
#: airtime_mvc/application/controllers/LocaleController.php:122
msgid "Airtime is unsure about the status of this file. This can happen when the file is on a remote drive that is unaccessible or the file is in a directory that isn't 'watched' anymore."
msgstr "Az Airtime bizonytalan a fájl állapotával kapcsolatban. Lehetséges, hogy a tárhely már nem elérhető, vagy a 'vizsgált' mappa útvonala megváltozott."
msgid ""
"Airtime is unsure about the status of this file. This can happen when the "
"file is on a remote drive that is unaccessible or the file is in a directory "
"that isn't 'watched' anymore."
msgstr ""
"Az Airtime bizonytalan a fájl állapotával kapcsolatban. Lehetséges, hogy a "
"tárhely már nem elérhető, vagy a 'vizsgált' mappa útvonala megváltozott."
#: airtime_mvc/application/controllers/LocaleController.php:124
#, php-format
@ -2126,16 +2177,34 @@ msgid "Image must be one of jpg, jpeg, png, or gif"
msgstr "A képek lehetnek: jpg, jpeg, png, vagy gif"
#: airtime_mvc/application/controllers/LocaleController.php:132
msgid "A static smart block will save the criteria and generate the block content immediately. This allows you to edit and view it in the Library before adding it to a show."
msgstr "A statikus smart block elmenti a kritériumokat és azonnal létre is hozza a block tartalmát is. Ez lehetővé teszi, hogy módosítsuk és lássuk a könyvtár tartalmát még a műsor közvetítése előtt."
msgid ""
"A static smart block will save the criteria and generate the block content "
"immediately. This allows you to edit and view it in the Library before "
"adding it to a show."
msgstr ""
"A statikus smart block elmenti a kritériumokat és azonnal létre is hozza a "
"block tartalmát is. Ez lehetővé teszi, hogy módosítsuk és lássuk a könyvtár "
"tartalmát még a műsor közvetítése előtt."
#: airtime_mvc/application/controllers/LocaleController.php:134
msgid "A dynamic smart block will only save the criteria. The block content will get generated upon adding it to a show. You will not be able to view and edit the content in the Library."
msgstr "A dinamikus smart block csak elmenti a kritériumokat. A block-ot szerkesztés után lehet hozzáadni a műsorhoz. Később a tartalmát sem megtekinteni, sem módosítani nem lehet."
msgid ""
"A dynamic smart block will only save the criteria. The block content will "
"get generated upon adding it to a show. You will not be able to view and "
"edit the content in the Library."
msgstr ""
"A dinamikus smart block csak elmenti a kritériumokat. A block-ot szerkesztés "
"után lehet hozzáadni a műsorhoz. Később a tartalmát sem megtekinteni, sem "
"módosítani nem lehet."
#: airtime_mvc/application/controllers/LocaleController.php:136
msgid "The desired block length will not be reached if Airtime cannot find enough unique tracks to match your criteria. Enable this option if you wish to allow tracks to be added multiple times to the smart block."
msgstr "A kívánt blokkhosszúság nem elérhető, mert az Airtime nem talál elég egyedi műsorszámot, ami megfelelne a kritériumoknak. Engedélyezze ezt az opciót, ha azt szeretné, hogy egyes számok ismétlődjenek."
msgid ""
"The desired block length will not be reached if Airtime cannot find enough "
"unique tracks to match your criteria. Enable this option if you wish to "
"allow tracks to be added multiple times to the smart block."
msgstr ""
"A kívánt blokkhosszúság nem elérhető, mert az Airtime nem talál elég egyedi "
"műsorszámot, ami megfelelne a kritériumoknak. Engedélyezze ezt az opciót, ha "
"azt szeretné, hogy egyes számok ismétlődjenek."
#: airtime_mvc/application/controllers/LocaleController.php:137
msgid "Smart block shuffled"
@ -2164,8 +2233,12 @@ msgstr "Másolva %s sor%s a vágólapra"
#: airtime_mvc/application/controllers/LocaleController.php:160
#, php-format
msgid "%sPrint view%sPlease use your browser's print function to print this table. Press escape when finished."
msgstr "%sNyomtatási előnézet%sKérjük, használja böngészője nyomtatási beállításait. Nyomja meg az Esc-t ha végzett."
msgid ""
"%sPrint view%sPlease use your browser's print function to print this table. "
"Press escape when finished."
msgstr ""
"%sNyomtatási előnézet%sKérjük, használja böngészője nyomtatási beállításait. "
"Nyomja meg az Esc-t ha végzett."
#: airtime_mvc/application/controllers/LocaleController.php:162
msgid "Choose Storage Folder"
@ -2198,8 +2271,12 @@ msgstr "Ez az útvonal jelenleg nem elérhető."
#: airtime_mvc/application/controllers/LocaleController.php:170
#, php-format
msgid "Some stream types require extra configuration. Details about enabling %sAAC+ Support%s or %sOpus Support%s are provided."
msgid ""
"Some stream types require extra configuration. Details about enabling %sAAC+ "
"Support%s or %sOpus Support%s are provided."
msgstr ""
"Egyes patak típusokhoz extra beállítások szükségesek. További részletek: a "
"%sAAC+ Támogatással%s vagy a %sOpus Támogatással%s kapcsolatban."
#: airtime_mvc/application/controllers/LocaleController.php:171
msgid "Connected to the streaming server"
@ -2214,8 +2291,18 @@ msgid "Can not connect to the streaming server"
msgstr "Nem lehet kapcsolódni az adásfolyam kiszolgálójához"
#: airtime_mvc/application/controllers/LocaleController.php:176
msgid "If Airtime is behind a router or firewall, you may need to configure port forwarding and this field information will be incorrect. In this case you will need to manually update this field so it shows the correct host/port/mount that your DJ's need to connect to. The allowed range is between 1024 and 49151."
msgstr "Ha az Airtime mögött van egy router vagy egy tűzfal, akkor be kell állítani a továbbító porot, mert ezen a területen az információ helytelen lesz. Ebben az esetben manuálisan kell frissíteni ezen a területen, hogy mutassa a hosztot / portot / csatolási pontot, amelyre a DJ-k csatlakozhatnak. A megengedett tartomány 1024 és 49151 között van."
msgid ""
"If Airtime is behind a router or firewall, you may need to configure port "
"forwarding and this field information will be incorrect. In this case you "
"will need to manually update this field so it shows the correct host/port/"
"mount that your DJ's need to connect to. The allowed range is between 1024 "
"and 49151."
msgstr ""
"Ha az Airtime mögött van egy router vagy egy tűzfal, akkor be kell állítani "
"a továbbító porot, mert ezen a területen az információ helytelen lesz. Ebben "
"az esetben manuálisan kell frissíteni ezen a területen, hogy mutassa a "
"hosztot / portot / csatolási pontot, amelyre a DJ-k csatlakozhatnak. A "
"megengedett tartomány 1024 és 49151 között van."
#: airtime_mvc/application/controllers/LocaleController.php:177
#, php-format
@ -2223,45 +2310,96 @@ msgid "For more details, please read the %sAirtime Manual%s"
msgstr "A további részletekért, kérjük olvassa el az %sAirtime Kézikönyvét%s"
#: airtime_mvc/application/controllers/LocaleController.php:179
msgid "Check this option to enable metadata for OGG streams (stream metadata is the track title, artist, and show name that is displayed in an audio player). VLC and mplayer have a serious bug when playing an OGG/VORBIS stream that has metadata information enabled: they will disconnect from the stream after every song. If you are using an OGG stream and your listeners do not require support for these audio players, then feel free to enable this option."
msgstr "Jelölje be ezt az opciót: metaadatok engedélyezése OGG-os adásfolyamra (adatfolyam metaadatok: a műsorszám címe, előadó, műsornév, amely megjelenik egy audió lejátszóban). A VLC és mplayer lejátszóknál súlyos hibák előfordulhatnak, OGG/Vorbis adatfolyam játszásakor, amelynél a metaadatok küldése engedélyezett: ilyenkor akadozik az adatfolyam. Ha az OGG-os adatfolyam és a hallgatói nem igényelnek támogatást az ilyen jellegű audió lejátszókhoz, akkor nyugodtan engedélyezze ezt az opciót."
msgid ""
"Check this option to enable metadata for OGG streams (stream metadata is the "
"track title, artist, and show name that is displayed in an audio player). "
"VLC and mplayer have a serious bug when playing an OGG/VORBIS stream that "
"has metadata information enabled: they will disconnect from the stream after "
"every song. If you are using an OGG stream and your listeners do not require "
"support for these audio players, then feel free to enable this option."
msgstr ""
"Jelölje be ezt az opciót: metaadatok engedélyezése OGG-os adásfolyamra "
"(adatfolyam metaadatok: a műsorszám címe, előadó, műsornév, amely megjelenik "
"egy audió lejátszóban). A VLC és mplayer lejátszóknál súlyos hibák "
"előfordulhatnak, OGG/Vorbis adatfolyam játszásakor, amelynél a metaadatok "
"küldése engedélyezett: ilyenkor akadozik az adatfolyam. Ha az OGG-os "
"adatfolyam és a hallgatói nem igényelnek támogatást az ilyen jellegű audió "
"lejátszókhoz, akkor nyugodtan engedélyezze ezt az opciót."
#: airtime_mvc/application/controllers/LocaleController.php:180
msgid "Check this box to automatically switch off Master/Show source upon source disconnection."
msgstr "Jelölje be ezt a négyzetet, hogy automatikusan kikapcsol a Mester/Műsor a forrás megszakítása után."
msgid ""
"Check this box to automatically switch off Master/Show source upon source "
"disconnection."
msgstr ""
"Jelölje be ezt a négyzetet, hogy automatikusan kikapcsol a Mester/Műsor a "
"forrás megszakítása után."
#: airtime_mvc/application/controllers/LocaleController.php:181
msgid "Check this box to automatically switch on Master/Show source upon source connection."
msgstr "Jelölje be ezt a négyzetet, hogy automatikusan bekapcsol a Mester/Műsor a forrás csatlakozását követően."
msgid ""
"Check this box to automatically switch on Master/Show source upon source "
"connection."
msgstr ""
"Jelölje be ezt a négyzetet, hogy automatikusan bekapcsol a Mester/Műsor a "
"forrás csatlakozását követően."
#: airtime_mvc/application/controllers/LocaleController.php:182
msgid "If your Icecast server expects a username of 'source', this field can be left blank."
msgstr "Lehet, hogy az Ön Icecast kiszolgálója nem igényli a 'forrás' felhasználónevét, ez a mező üresen maradhat."
msgid ""
"If your Icecast server expects a username of 'source', this field can be "
"left blank."
msgstr ""
"Lehet, hogy az Ön Icecast kiszolgálója nem igényli a 'forrás' "
"felhasználónevét, ez a mező üresen maradhat."
#: airtime_mvc/application/controllers/LocaleController.php:183
#: airtime_mvc/application/controllers/LocaleController.php:193
msgid "If your live streaming client does not ask for a username, this field should be 'source'."
msgstr "Ha az Ön élő adásfolyam kliense nem igényel felhasználónevet, akkor meg kell adnia a 'forrást'."
msgid ""
"If your live streaming client does not ask for a username, this field should "
"be 'source'."
msgstr ""
"Ha az Ön élő adásfolyam kliense nem igényel felhasználónevet, akkor meg kell "
"adnia a 'forrást'."
#: airtime_mvc/application/controllers/LocaleController.php:185
msgid "If you change the username or password values for an enabled stream the playout engine will be rebooted and your listeners will hear silence for 5-10 seconds. Changing the following fields will NOT cause a reboot: Stream Label (Global Settings), and Switch Transition Fade(s), Master Username, and Master Password (Input Stream Settings). If Airtime is recording, and if the change causes a playout engine restart, the recording will be interrupted."
msgstr "Ha megváltoztatja a felhasználónév vagy a jelszó értékeit, az engedélyezett adatfolyam és a lejátszási motor újraindul, és a hallgatók 5-10 másodpercig csendet fognak hallani. Módosítása az alábbi mezőket, ez NEM okoz újraindítást: Adásfolyam Címke (Általános Beállítások), és a Úsztatási Átmenet Kapcsoló, Mester Felhasználónév, Mester Jelszó (Bejövő Adatfolyam Beállítások). Ha az Airtime éppen rögzít, és ha a változás miatt újra kell indítani a lejátszási motort, akkor a vételezés megszakad."
msgid ""
"If you change the username or password values for an enabled stream the "
"playout engine will be rebooted and your listeners will hear silence for "
"5-10 seconds. Changing the following fields will NOT cause a reboot: Stream "
"Label (Global Settings), and Switch Transition Fade(s), Master Username, and "
"Master Password (Input Stream Settings). If Airtime is recording, and if the "
"change causes a playout engine restart, the recording will be interrupted."
msgstr ""
"Ha megváltoztatja a felhasználónév vagy a jelszó értékeit, az engedélyezett "
"adatfolyam és a lejátszási motor újraindul, és a hallgatók 5-10 másodpercig "
"csendet fognak hallani. Módosítása az alábbi mezőket, ez NEM okoz "
"újraindítást: Adásfolyam Címke (Általános Beállítások), és a Úsztatási "
"Átmenet Kapcsoló, Mester Felhasználónév, Mester Jelszó (Bejövő Adatfolyam "
"Beállítások). Ha az Airtime éppen rögzít, és ha a változás miatt újra kell "
"indítani a lejátszási motort, akkor a vételezés megszakad."
#: airtime_mvc/application/controllers/LocaleController.php:186
msgid "This is the admin username and password for Icecast/SHOUTcast to get listener statistics."
msgstr "Ez az admin felhasználónév és jelszó az Icecast/SHOUTcast hallgató statisztikához szükségesek."
msgid ""
"This is the admin username and password for Icecast/SHOUTcast to get "
"listener statistics."
msgstr ""
"Ez az admin felhasználónév és jelszó az Icecast/SHOUTcast hallgató "
"statisztikához szükségesek."
#: airtime_mvc/application/controllers/LocaleController.php:190
msgid "No result found"
msgstr "Nem volt találat"
#: airtime_mvc/application/controllers/LocaleController.php:191
msgid "This follows the same security pattern for the shows: only users assigned to the show can connect."
msgstr "Ezt követi ugyanolyan biztonsági műsor-minta: csak a hozzárendelt felhasználók csatlakozhatnak a műsorhoz."
msgid ""
"This follows the same security pattern for the shows: only users assigned to "
"the show can connect."
msgstr ""
"Ezt követi ugyanolyan biztonsági műsor-minta: csak a hozzárendelt "
"felhasználók csatlakozhatnak a műsorhoz."
#: airtime_mvc/application/controllers/LocaleController.php:192
msgid "Specify custom authentication which will work only for this show."
msgstr "Adjon meg egy egyéni hitelesítéset, amely csak ennél a műsornál működik."
msgstr ""
"Adjon meg egy egyéni hitelesítéset, amely csak ennél a műsornál működik."
#: airtime_mvc/application/controllers/LocaleController.php:194
msgid "The show instance doesn't exist anymore!"
@ -2269,11 +2407,15 @@ msgstr "A műsor ez esetben nem létezik többé!"
#: airtime_mvc/application/controllers/LocaleController.php:195
msgid "Warning: Shows cannot be re-linked"
msgstr ""
msgstr "Figyelem: a Műsorokat nem lehet újra-linkelni"
#: airtime_mvc/application/controllers/LocaleController.php:196
msgid "By linking your repeating shows any media items scheduled in any repeat show will also get scheduled in the other repeat shows"
msgid ""
"By linking your repeating shows any media items scheduled in any repeat show "
"will also get scheduled in the other repeat shows"
msgstr ""
"By linking your repeating shows any media items scheduled in any repeat show "
"will also get scheduled in the other repeat shows - fordításra vár"
#: airtime_mvc/application/controllers/LocaleController.php:200
msgid "Show"
@ -2429,8 +2571,11 @@ msgid "month"
msgstr "hónap"
#: airtime_mvc/application/controllers/LocaleController.php:262
msgid "Shows longer than their scheduled time will be cut off by a following show."
msgstr "Ha egy műsor hosszabb az ütemezett időnél, meg lesz vágva és követi azt a következő műsor."
msgid ""
"Shows longer than their scheduled time will be cut off by a following show."
msgstr ""
"Ha egy műsor hosszabb az ütemezett időnél, meg lesz vágva és követi azt a "
"következő műsor."
#: airtime_mvc/application/controllers/LocaleController.php:263
msgid "Cancel Current Show?"
@ -2497,15 +2642,18 @@ msgstr "%s Elemek Áthelyezése"
#: airtime_mvc/application/controllers/LocaleController.php:295
msgid "Fade Editor"
msgstr ""
msgstr "Úsztatási Szerkesztő"
#: airtime_mvc/application/controllers/LocaleController.php:296
msgid "Cue Editor"
msgstr ""
msgstr "Keverési Szerkesztő"
#: airtime_mvc/application/controllers/LocaleController.php:297
msgid "Waveform features are available in a browser supporting the Web Audio API"
msgid ""
"Waveform features are available in a browser supporting the Web Audio API"
msgstr ""
"Hullámalak funkciók állnak rendelkezésre a böngészőben, támogatja a Web "
"Audio API-t"
#: airtime_mvc/application/controllers/LocaleController.php:300
msgid "Select all"
@ -2811,8 +2959,11 @@ msgid "show does not exist"
msgstr "a műsor nem található"
#: airtime_mvc/application/controllers/ListenerstatController.php:56
msgid "Please make sure admin user/password is correct on System->Streams page."
msgstr "Kérjük, győződjön meg arról, hogy az admin felhasználónév/jelszó helyes-e a Rendszer-> Streams oldalon."
msgid ""
"Please make sure admin user/password is correct on System->Streams page."
msgstr ""
"Kérjük, győződjön meg arról, hogy az admin felhasználónév/jelszó helyes-e a "
"Rendszer-> Streams oldalon."
#: airtime_mvc/application/controllers/ApiController.php:60
#: airtime_mvc/application/controllers/ApiController.php:79
@ -3021,12 +3172,17 @@ msgstr "Felhasználói Típus"
#: airtime_mvc/application/views/scripts/dashboard/about.phtml:5
#, php-format
msgid "%sAirtime%s %s, the open radio software for scheduling and remote station management. %s"
msgstr "%sAirtime%s %s, a nyitott rádiós szoftver, az ütemezett és távoli állomás menedzsment. %s"
msgid ""
"%sAirtime%s %s, the open radio software for scheduling and remote station "
"management. %s"
msgstr ""
"%sAirtime%s %s, a nyitott rádiós szoftver, az ütemezett és távoli állomás "
"menedzsment. %s"
#: airtime_mvc/application/views/scripts/dashboard/about.phtml:13
#, php-format
msgid "%sSourcefabric%s o.p.s. Airtime is distributed under the %sGNU GPL v.3%s"
msgid ""
"%sSourcefabric%s o.p.s. Airtime is distributed under the %sGNU GPL v.3%s"
msgstr "%sSourcefabric%s o.p.s. az Airtime forgalmazója %sGNU GPL v.3%s alatt"
#: airtime_mvc/application/views/scripts/dashboard/stream-player.phtml:3
@ -3052,24 +3208,46 @@ msgid "Welcome to Airtime!"
msgstr "Üdvözöljük az Airtime-nál!"
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:4
msgid "Here's how you can get started using Airtime to automate your broadcasts: "
msgstr "Itt van pár tipp, hogy hogyan is automatizálhatja adásait az Airtime segítségével:"
msgid ""
"Here's how you can get started using Airtime to automate your broadcasts: "
msgstr ""
"Itt van pár tipp, hogy hogyan is automatizálhatja adásait az Airtime "
"segítségével:"
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:7
msgid "Begin by adding your files to the library using the 'Add Media' menu button. You can drag and drop your files to this window too."
msgstr "Kezdje médiafájlok hozzáadásával a 'Média Hozzáadása' menü gombon. A hozd és vidd fájlokat ugyanebben az ablakban szerkesztheti."
msgid ""
"Begin by adding your files to the library using the 'Add Media' menu button. "
"You can drag and drop your files to this window too."
msgstr ""
"Kezdje médiafájlok hozzáadásával a 'Média Hozzáadása' menü gombon. A hozd és "
"vidd fájlokat ugyanebben az ablakban szerkesztheti."
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:8
msgid "Create a show by going to 'Calendar' in the menu bar, and then clicking the '+ Show' icon. This can be either a one-time or repeating show. Only admins and program managers can add shows."
msgstr "Hozzon létre egy műsort a 'Naptár' menüsorban, majd kattintson a '+ Műsor' ikonra. Ez lehet egyszeri vagy ismétlődő műsor. Csak az adminisztrátorok és a programok vezetői adhatnak hozzá műsort."
msgid ""
"Create a show by going to 'Calendar' in the menu bar, and then clicking the "
"'+ Show' icon. This can be either a one-time or repeating show. Only admins "
"and program managers can add shows."
msgstr ""
"Hozzon létre egy műsort a 'Naptár' menüsorban, majd kattintson a '+ Műsor' "
"ikonra. Ez lehet egyszeri vagy ismétlődő műsor. Csak az adminisztrátorok és "
"a programok vezetői adhatnak hozzá műsort."
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:9
msgid "Add media to the show by going to your show in the Schedule calendar, left-clicking on it and selecting 'Add / Remove Content'"
msgstr "Adjon hozzá médiát, hogy a műsora futni tudjon, az Ütemezett naptárban, bal egérgombbal kattintva, és itt válassza ki a 'Tartalom Hozzáadása/Eltávolítása' opciót"
msgid ""
"Add media to the show by going to your show in the Schedule calendar, left-"
"clicking on it and selecting 'Add / Remove Content'"
msgstr ""
"Adjon hozzá médiát, hogy a műsora futni tudjon, az Ütemezett naptárban, bal "
"egérgombbal kattintva, és itt válassza ki a 'Tartalom Hozzáadása/"
"Eltávolítása' opciót"
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:10
msgid "Select your media from the left pane and drag them to your show in the right pane."
msgstr "Válassza ki a média tartalmat a bal oldali panelen, és húzza azt a műsorba, a jobb oldali panelre."
msgid ""
"Select your media from the left pane and drag them to your show in the right "
"pane."
msgstr ""
"Válassza ki a média tartalmat a bal oldali panelen, és húzza azt a műsorba, "
"a jobb oldali panelre."
#: airtime_mvc/application/views/scripts/dashboard/help.phtml:12
msgid "Then you're good to go!"
@ -3099,7 +3277,7 @@ msgstr "Üres lejátszási lista"
#: airtime_mvc/application/views/scripts/playlist/set-fade.phtml:3
#: airtime_mvc/application/views/scripts/playlist/set-cue.phtml:3
msgid "Show Waveform"
msgstr ""
msgstr "Mutasd a Hullámalakot"
#: airtime_mvc/application/views/scripts/playlist/set-fade.phtml:6
#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:70
@ -3146,12 +3324,12 @@ msgstr "Új Adásfolyam"
#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:21
msgid "Empty playlist content"
msgstr ""
msgstr "Üres lejátszási lista tartalom"
#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:21
#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:21
msgid "Clear"
msgstr ""
msgstr "Törlés"
#: airtime_mvc/application/views/scripts/playlist/playlist.phtml:24
msgid "Shuffle playlist"
@ -3178,7 +3356,7 @@ msgstr "Nincs megnyitott lejátszási lista"
#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:21
msgid "Empty smart block content"
msgstr ""
msgstr "Üres smart block tartalom"
#: airtime_mvc/application/views/scripts/playlist/smart-block.phtml:90
msgid "No open smart block"
@ -3248,8 +3426,12 @@ msgid "Back to login screen"
msgstr "Vissza a belépéshez"
#: airtime_mvc/application/views/scripts/login/index.phtml:7
msgid "Welcome to the online Airtime demo! You can log in using the username 'admin' and the password 'admin'."
msgstr "Üdvözöljük az online Aitime demó változatában! Jelentkezzen be 'admin' felhasználónévvel és 'admin' jelszóval."
msgid ""
"Welcome to the online Airtime demo! You can log in using the username "
"'admin' and the password 'admin'."
msgstr ""
"Üdvözöljük az online Aitime demó változatában! Jelentkezzen be 'admin' "
"felhasználónévvel és 'admin' jelszóval."
#: airtime_mvc/application/views/scripts/login/password-restore.phtml:3
#: airtime_mvc/application/views/scripts/form/login.phtml:34
@ -3257,8 +3439,12 @@ msgid "Reset password"
msgstr "A jelszó visszaállítása"
#: airtime_mvc/application/views/scripts/login/password-restore.phtml:7
msgid "Please enter your account e-mail address. You will receive a link to create a new password via e-mail."
msgstr "Kérjük, írja be a fiókja e-mail címét. Kap majd egy linket, új jelszó létrehozásához, e-mailen keresztül."
msgid ""
"Please enter your account e-mail address. You will receive a link to create "
"a new password via e-mail."
msgstr ""
"Kérjük, írja be a fiókja e-mail címét. Kap majd egy linket, új jelszó "
"létrehozásához, e-mailen keresztül."
#: airtime_mvc/application/views/scripts/login/password-change.phtml:3
msgid "New password"
@ -3322,8 +3508,12 @@ msgstr "Frissítés Szükséges"
#: airtime_mvc/application/views/scripts/audiopreview/audio-preview.phtml:70
#, php-format
msgid "To play the media you will need to either update your browser to a recent version or update your %sFlash plugin%s."
msgstr "A lejátszáshoz média szükséges, és frissítenie kell a böngészőjét egy újabb verzióra, vagy frissítse a %sFlash bővítményt%s."
msgid ""
"To play the media you will need to either update your browser to a recent "
"version or update your %sFlash plugin%s."
msgstr ""
"A lejátszáshoz média szükséges, és frissítenie kell a böngészőjét egy újabb "
"verzióra, vagy frissítse a %sFlash bővítményt%s."
#: airtime_mvc/application/views/scripts/webstream/webstream.phtml:52
msgid "Stream URL:"
@ -3371,8 +3561,11 @@ msgid "Additional Options"
msgstr "További Lehetőségek"
#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:137
msgid "The following info will be displayed to listeners in their media player:"
msgstr "A következő információk megjelennek a hallgatók számára, a saját média lejátszóikban:"
msgid ""
"The following info will be displayed to listeners in their media player:"
msgstr ""
"A következő információk megjelennek a hallgatók számára, a saját média "
"lejátszóikban:"
#: airtime_mvc/application/views/scripts/form/stream-setting-form.phtml:170
msgid "(Your radio station website)"
@ -3402,8 +3595,12 @@ msgid "Add"
msgstr "Hozzáadás"
#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:43
msgid "Rescan watched directory (This is useful if it is network mount and may be out of sync with Airtime)"
msgstr "A vizsgált mappa újraellenőrzése (Ez akkor hasznos, ha a hálózati csatolás nincs szinkronban az Airtime-al)"
msgid ""
"Rescan watched directory (This is useful if it is network mount and may be "
"out of sync with Airtime)"
msgstr ""
"A vizsgált mappa újraellenőrzése (Ez akkor hasznos, ha a hálózati csatolás "
"nincs szinkronban az Airtime-al)"
#: airtime_mvc/application/views/scripts/form/preferences_watched_dirs.phtml:44
msgid "Remove watched directory"
@ -3428,13 +3625,27 @@ msgstr "Airtime Regisztráció"
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:6
#, php-format
msgid "Help Airtime improve by letting us know how you are using it. This info will be collected regularly in order to enhance your user experience.%sClick 'Yes, help Airtime' and we'll make sure the features you use are constantly improving."
msgstr "Segítsen az Airtime fejlesztésében, tudassa velünk az ötleteit. Az információk gyűjtése fokozza a felhasználás élményét.%sKlikk 'Igen, segítek az Airtime-nak' fejlesztésében, és igyekszek folyamatosan a funkciók használatának javításán fáradozni. "
msgid ""
"Help Airtime improve by letting us know how you are using it. This info will "
"be collected regularly in order to enhance your user experience.%sClick "
"'Yes, help Airtime' and we'll make sure the features you use are constantly "
"improving."
msgstr ""
"Segítsen az Airtime fejlesztésében, tudassa velünk az ötleteit. Az "
"információk gyűjtése fokozza a felhasználás élményét.%sKlikk 'Igen, segítek "
"az Airtime-nak' fejlesztésében, és igyekszek folyamatosan a funkciók "
"használatának javításán fáradozni. "
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:25
#, php-format
msgid "Click the box below to advertise your station on %sSourcefabric.org%s. In order to promote your station, 'Send support feedback' must be enabled. This data will be collected in addition to the support feedback."
msgstr "Kattintson az alábbi mezőbe, hogy hírdetni szeretném az állomásomat a %sSourcefabric.org%s -on. Annak érdekében, hogy támogassák az Ön állomását, a 'Támogatás Visszajelzés Küldését' engedélyeznie kell."
msgid ""
"Click the box below to advertise your station on %sSourcefabric.org%s. In "
"order to promote your station, 'Send support feedback' must be enabled. This "
"data will be collected in addition to the support feedback."
msgstr ""
"Kattintson az alábbi mezőbe, hogy hírdetni szeretném az állomásomat a "
"%sSourcefabric.org%s -on. Annak érdekében, hogy támogassák az Ön állomását, "
"a 'Támogatás Visszajelzés Küldését' engedélyeznie kell."
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:65
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:79
@ -3446,7 +3657,8 @@ msgstr "(csupán ellenőrzés céljából, nem kerül közzétételre)"
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:150
#: airtime_mvc/application/views/scripts/form/support-setting.phtml:151
msgid "Note: Anything larger than 600x600 will be resized."
msgstr "Megjegyzés: Bármi, ami kisebb nagyobb, mint 600x600, átméretezésre kerül."
msgstr ""
"Megjegyzés: Bármi, ami kisebb nagyobb, mint 600x600, átméretezésre kerül."
#: airtime_mvc/application/views/scripts/form/register-dialog.phtml:164
#: airtime_mvc/application/views/scripts/form/support-setting.phtml:164
@ -3515,17 +3727,31 @@ msgstr "SoundCloud Beállítások"
#: airtime_mvc/application/views/scripts/form/support-setting.phtml:5
#, php-format
msgid "Help Airtime improve by letting Sourcefabric know how you are using it. This information will be collected regularly in order to enhance your user experience.%sClick the 'Send support feedback' box and we'll make sure the features you use are constantly improving."
msgstr "Segítse az Airtime fejlesztését azáltal, hogy a Sourcefabric tudja, hogy Ön, hogyan használja azt. Információk összegyűjtése céljából, rendszerezve azokat, hogy fokozza a felhasználás élményét.%sKlikk a 'Támogatási Visszajelzés Küldése' mezőbe és győződjön meg arról, hogy a funkciók használatának minősége folyamatosan javul."
msgid ""
"Help Airtime improve by letting Sourcefabric know how you are using it. This "
"information will be collected regularly in order to enhance your user "
"experience.%sClick the 'Send support feedback' box and we'll make sure the "
"features you use are constantly improving."
msgstr ""
"Segítse az Airtime fejlesztését azáltal, hogy a Sourcefabric tudja, hogy Ön, "
"hogyan használja azt. Információk összegyűjtése céljából, rendszerezve "
"azokat, hogy fokozza a felhasználás élményét.%sKlikk a 'Támogatási "
"Visszajelzés Küldése' mezőbe és győződjön meg arról, hogy a funkciók "
"használatának minősége folyamatosan javul."
#: airtime_mvc/application/views/scripts/form/support-setting.phtml:23
#, php-format
msgid "Click the box below to promote your station on %sSourcefabric.org%s."
msgstr "Kattintson az alábbi mezőbe, hogy hírdesse saját állomását %sSourcefabric.org%s."
msgstr ""
"Kattintson az alábbi mezőbe, hogy hírdesse saját állomását %sSourcefabric.org"
"%s."
#: airtime_mvc/application/views/scripts/form/support-setting.phtml:41
msgid "(In order to promote your station, 'Send support feedback' must be enabled)."
msgstr "(Annak érdekében, hogy hírdetni tudja állomását, a 'Támogatási Visszajelzés Küldését' engedélyeznie kell.)"
msgid ""
"(In order to promote your station, 'Send support feedback' must be enabled)."
msgstr ""
"(Annak érdekében, hogy hírdetni tudja állomását, a 'Támogatási Visszajelzés "
"Küldését' engedélyeznie kell.)"
#: airtime_mvc/application/views/scripts/form/support-setting.phtml:186
msgid "Sourcefabric Privacy Policy"
@ -3541,11 +3767,11 @@ msgstr "Smart Block Beállításai"
#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:39
msgid "or"
msgstr ""
msgstr "vagy"
#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:40
msgid "and"
msgstr ""
msgstr "és"
#: airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml:63
msgid " to "

View File

@ -260,10 +260,13 @@ function parseItems(obj){
calculateTimeToNextSong();
}
currentShow = new Array();
if (obj.currentShow.length > 0) {
calcAdditionalShowData(obj.currentShow);
currentShow = obj.currentShow;
}
nextShow = new Array();
if (obj.nextShow.length > 0) {
calcAdditionalShowData(obj.nextShow);
nextShow = obj.nextShow;

View File

@ -391,7 +391,9 @@ var AIRTIME = (function(AIRTIME) {
$libTable = $libContent.find("table");
var tableHeight = $libContent.height() - 130;
function getTableHeight() {
return $libContent.height() - 175;
}
function setColumnFilter(oTable){
// TODO : remove this dirty hack once js is refactored
@ -454,6 +456,13 @@ var AIRTIME = (function(AIRTIME) {
} else {
$el.hide();
}
//resize to prevent double scroll bars.
var $fs = $el.parents("fieldset"),
tableHeight = getTableHeight(),
searchHeight = $fs.height();
$libContent.find(".dataTables_scrolling").css("max-height", tableHeight - searchHeight);
}
oTable = $libTable.dataTable( {
@ -784,10 +793,14 @@ var AIRTIME = (function(AIRTIME) {
$libContent.on("click", "legend", function(){
$simpleSearch = $libContent.find("#library_display_filter label");
var $fs = $(this).parents("fieldset");
var $fs = $(this).parents("fieldset"),
searchHeight,
tableHeight = getTableHeight(),
height;
if ($fs.hasClass("closed")) {
$fs.removeClass("closed");
searchHeight = $fs.height();
//keep value of simple search for when user switches back to it
simpleSearchText = $simpleSearch.find('input').val();
@ -796,6 +809,10 @@ var AIRTIME = (function(AIRTIME) {
$(".dataTables_filter input").val("").keyup();
$simpleSearch.addClass("sp-invisible");
//resize the library table to avoid a double scroll bar. CC-4504
height = tableHeight - searchHeight;
$libContent.find(".dataTables_scrolling").css("max-height", height);
}
else {
// clear the advanced search fields
@ -817,9 +834,13 @@ var AIRTIME = (function(AIRTIME) {
$simpleSearch.removeClass("sp-invisible");
$fs.addClass("closed");
//resize the library table to avoid a double scroll bar. CC-4504
$libContent.find(".dataTables_scrolling").css("max-height", tableHeight);
}
});
var tableHeight = getTableHeight();
$libContent.find(".dataTables_scrolling").css("max-height", tableHeight);
AIRTIME.library.setupLibraryToolbar(oTable);
@ -1069,13 +1090,13 @@ function buildEditMetadataDialog (json){
width: 460,
height: 660,
modal: true,
close: closeDialog
close: closeDialogLibrary
});
dialog.dialog('open');
}
function closeDialog(event, ui) {
function closeDialogLibrary(event, ui) {
$(this).remove();
}

View File

@ -1451,13 +1451,13 @@ var AIRTIME = (function(AIRTIME){
widgetHeight = viewport.height - 185;
width = Math.floor(viewport.width - 80);
var libTableHeight = widgetHeight - 130;
var libTableHeight = widgetHeight - 175;
if (!$pl.is(':hidden')) {
$lib.height(widgetHeight)
.find(".dataTables_scrolling")
.css("max-height", libTableHeight)
.end()
.css("max-height", libTableHeight)
.end()
.width(Math.floor(width * 0.55));
$pl.height(widgetHeight)
@ -1465,8 +1465,8 @@ var AIRTIME = (function(AIRTIME){
} else {
$lib.height(widgetHeight)
.find(".dataTables_scrolling")
.css("max-height", libTableHeight)
.end()
.css("max-height", libTableHeight)
.end()
.width(width + 40);
}
}
@ -1475,8 +1475,6 @@ var AIRTIME = (function(AIRTIME){
$lib = $("#library_content");
$pl = $("#side_playlist");
setWidgetSize();
AIRTIME.library.libraryInit();

View File

@ -116,12 +116,19 @@ function dayClick(date, allDay, jsEvent, view){
// duration in milisec
var duration = (duration_h * 60 * 60 * 1000) + (duration_m * 60 * 1000);
var startTime_string, startTime
var startTime_string;
var startTime = 0;
// get start time value on the form
if(view.name === "month") {
startTime_string = $("#add_show_start_time").val();
var startTime_info = startTime_string.split(':');
startTime = (parseInt(startTime_info[0],10) * 60 * 60 * 1000) + (parseInt(startTime_info[1], 10) * 60 * 1000);
if (startTime_info.length == 2) {
var start_time_temp = (parseInt(startTime_info[0],10) * 60 * 60 * 1000)
+ (parseInt(startTime_info[1], 10) * 60 * 1000);
if (!isNaN(start_time_temp)) {
startTime = start_time_temp;
}
}
}else{
// if in day or week view, selected has all the time info as well
// so we don't ahve to calculate it explicitly
@ -210,8 +217,9 @@ function viewDisplay( view ) {
}
function eventRender(event, element, view) {
$(element).attr("id", "fc-show-instance-"+event.id);
$(element).attr("id", "fc-show-instance-"+event.id);
$(element).attr("data-show-id", event.showId);
$(element).attr("data-show-linked", event.linked);
$(element).data("event", event);
//only put progress bar on shows that aren't being recorded.

View File

@ -12,8 +12,8 @@ var AIRTIME = (function(AIRTIME){
var serverTimezoneOffset = 0;
function closeDialog(event, ui) {
$("#schedule_calendar").fullCalendar( 'refetchEvents' );
function closeDialogCalendar(event, ui) {
//$("#schedule_calendar").fullCalendar( 'refetchEvents' );
$(this).remove();
}
@ -161,7 +161,7 @@ function buildScheduleDialog (json, instance_id) {
resizable: false,
draggable: true,
modal: true,
close: closeDialog,
close: closeDialogCalendar,
buttons: [
{
text: $.i18n._("Ok"),
@ -186,10 +186,10 @@ function buildScheduleDialog (json, instance_id) {
//set max heights of datatables.
dialog.find(".lib-content .dataTables_scrolling")
.css("max-height", height - 90 - 155);
.css("max-height", height - 90 - 200);
dialog.find(".sb-content .dataTables_scrolling")
.css("max-height", height - 90 - 60);
.css("max-height", height - 90 - 65);
dialog.dialog('open');
}
@ -214,7 +214,7 @@ function buildContentDialog (json){
width: width,
height: height,
modal: true,
close: closeDialog,
close: closeDialogCalendar,
buttons: [
{
text: $.i18n._("Ok"),

View File

@ -51,15 +51,23 @@ var AIRTIME = (function(AIRTIME){
var lastElem = json.schedule[json.schedule.length-1];
var $elem = $("#fc-show-instance-"+instance_id);
$elem.find(".small-icon").remove();
//if the show is linked, then replace $elem to reference all linked
//instances
if ($elem.data("show-linked") == "1") {
var show_id = $elem.data("show-id");
$elem = $('*[data-show-id="'+show_id+'"]');
}
$elem.find(".show-empty, .show-partial-filled").remove();
if (json.schedule[1].empty) {
$elem
.find(".fc-event-title")
.after('<span id="'+instance_id+'" title="'+$.i18n._("Show is empty")+'" class="small-icon show-empty"></span>');
.find(".fc-event-inner")
.append('<span id="'+instance_id+'" title="'+$.i18n._("Show is empty")+'" class="small-icon show-empty"></span>');
} else if (lastElem["fRuntime"][0] == "-") {
$elem
.find(".fc-event-title")
.after('<span id="'+instance_id+'" title="'+$.i18n._("Show is partially filled")+'" class="small-icon show-partial-filled"></span>');
.find(".fc-event-inner")
.append('<span id="'+instance_id+'" title="'+$.i18n._("Show is partially filled")+'" class="small-icon show-partial-filled"></span>');
}
}

View File

@ -54,7 +54,7 @@ AIRTIME = (function(AIRTIME) {
widgetHeight = viewport.height - 180;
screenWidth = Math.floor(viewport.width - 40);
var libTableHeight = widgetHeight - 130,
var libTableHeight = widgetHeight - 175,
builderTableHeight = widgetHeight - 95,
oTable;

View File

@ -365,6 +365,16 @@ def airtime_221_tar():
do_run('tar xfz airtime-2.2.1.tar.gz')
do_sudo('cd /home/martin/airtime-2.2.1/install_full/ubuntu && ./airtime-full-install')
def airtime_230_tar():
do_run('wget http://downloads.sourceforge.net/project/airtime/2.3.0/airtime-2.3.0.tar.gz')
do_run('tar xfz airtime-2.3.0.tar.gz')
do_sudo('cd /home/martin/airtime-2.3.0/install_full/ubuntu && ./airtime-full-install')
def airtime_231_tar():
do_run('wget http://downloads.sourceforge.net/project/airtime/2.3.1/airtime-2.3.1-ga.tar.gz')
do_run('tar xfz airtime-2.3.1-ga.tar.gz')
do_sudo('cd /home/martin/airtime-2.3.1/install_full/ubuntu && ./airtime-full-install')
def airtime_latest_deb():
append('/etc/apt/sources.list', "deb http://apt.sourcefabric.org/ lucid main", use_sudo=True)

View File

@ -2,11 +2,11 @@
exec 2>&1
target="airtime_git_branch:devel"
target="airtime_git_branch:2.4.x"
#target="airtime_git_branch:airtime-2.0.0-RC1"
airtime_versions=("")
airtime_versions=("airtime_231_tar")
#airtime_versions=("airtime_191_tar" "airtime_192_tar" "airtime_192_tar" "airtime_194_tar" "airtime_195_tar")
ubuntu_versions=("ubuntu_lucid_32" "ubuntu_lucid_64" "ubuntu_natty_32" "ubuntu_natty_64" "ubuntu_oneiric_32" "ubuntu_oneiric_64" "ubuntu_precise_32" "ubuntu_precise_64" "ubuntu_quantal_32" "ubuntu_quantal_64" "debian_squeeze_32" "debian_squeeze_64" "debian_wheezy_32" "debian_wheezy_64")
ubuntu_versions=("ubuntu_lucid_32" "ubuntu_lucid_64" "ubuntu_precise_32" "ubuntu_precise_64" "ubuntu_quantal_32" "ubuntu_quantal_64" "ubuntu_raring_32" "ubuntu_raring_64" "debian_squeeze_32" "debian_squeeze_64" "debian_wheezy_32" "debian_wheezy_64")
#ubuntu_versions=("debian_wheezy_32" "debian_wheezy_64")
num1=${#ubuntu_versions[@]}

View File

@ -6,7 +6,7 @@ VERSION=2.4.0~$(date "+%Y%m%d")
BUILDDEST=/tmp/airtime-${VERSION}/
DEBDIR=`pwd`/debian
git checkout 2.4.x
git checkout $(git branch | grep "^*" | cut -d' ' -f 2)
git pull
echo "cleaning up previous build..."

View File

@ -0,0 +1,28 @@
<?php
/* This class deals with any modifications to config files in /etc/airtime
* as well as backups. All functions other than start() should be marked
* as private. */
class AirtimeConfigFileUpgrade{
public static function start(){
echo "* Updating configFiles".PHP_EOL;
self::UpdateIniFiles();
}
/**
* After the configuration files have been copied to /etc/airtime,
* this function will update them to values unique to this
* particular installation.
*/
private static function UpdateIniFiles()
{
$ini = parse_ini_file(UpgradeCommon::CONF_FILE_AIRTIME, true);
$ini['rabbitmq']['vhost'] = '/airtime';
$ini['rabbitmq']['user'] = 'airtime';
$ini['rabbitmq']['password'] = UpgradeCommon::GenerateRandomString();
UpgradeCommon::write_ini_file($ini, UpgradeCommon::CONF_FILE_AIRTIME, true);
}
}

View File

@ -1,8 +1,11 @@
<?php
require_once 'DbUpgrade.php';
require_once 'ConfFileUpgrade.php';
require_once 'common/UpgradeCommon.php';
$filename = "/etc/airtime/airtime.conf";
$values = parse_ini_file($filename, true);
AirtimeConfigFileUpgrade::start();
AirtimeDatabaseUpgrade::start($values);

View File

@ -0,0 +1,98 @@
<?php
/* These are helper functions that are common to each upgrade such as
* creating connections to a database, backing up config files etc.
*/
class UpgradeCommon{
const CONF_FILE_AIRTIME = "/etc/airtime/airtime.conf";
const CONF_FILE_PYPO = "/etc/airtime/pypo.cfg";
const CONF_FILE_LIQUIDSOAP = "/etc/airtime/liquidsoap.cfg";
const CONF_FILE_MEDIAMONITOR = "/etc/airtime/media-monitor.cfg";
const CONF_FILE_API_CLIENT = "/etc/airtime/api_client.cfg";
const CONF_PYPO_GRP = "pypo";
const CONF_WWW_DATA_GRP = "www-data";
const CONF_BACKUP_SUFFIX = "240";
const VERSION_NUMBER = "2.4.0";
private static function GetAirtimeSrcDir()
{
return __DIR__."/../../../../airtime_mvc";
}
/**
* This function generates a random string.
*
* The random string uses two parameters: $p_len and $p_chars. These
* parameters do not need to be provided, in which case defaults are
* used.
*
* @param string $p_len
* How long should the generated string be.
* @param string $p_chars
* String containing chars that should be used for generating.
* @return string
* The generated random string.
*/
public static function GenerateRandomString($p_len=20, $p_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
{
$string = '';
for ($i = 0; $i < $p_len; $i++)
{
$pos = mt_rand(0, strlen($p_chars)-1);
$string .= $p_chars{$pos};
}
return $string;
}
//stupid hack found on http://stackoverflow.com/a/1268642/276949
//with some modifications: 1) Spaces are inserted in between sections and
//2) values are not quoted.
public static function write_ini_file($assoc_arr, $path, $has_sections = false)
{
$content = "";
if ($has_sections) {
$first_line = true;
foreach ($assoc_arr as $key=>$elem) {
if ($first_line) {
$content .= "[".$key."]\n";
$first_line = false;
} else {
$content .= "\n[".$key."]\n";
}
foreach ($elem as $key2=>$elem2) {
if(is_array($elem2))
{
for($i=0;$i<count($elem2);$i++)
{
$content .= $key2."[] = \"".$elem2[$i]."\"\n";
}
}
else if($elem2=="") $content .= $key2." = \n";
else $content .= $key2." = ".$elem2."\n";
}
}
} else {
foreach ($assoc_arr as $key=>$elem) {
if(is_array($elem))
{
for($i=0;$i<count($elem);$i++)
{
$content .= $key."[] = \"".$elem[$i]."\"\n";
}
}
else if($elem=="") $content .= $key." = \n";
else $content .= $key." = ".$elem."\n";
}
}
if (!$handle = fopen($path, 'w')) {
return false;
}
if (!fwrite($handle, $content)) {
return false;
}
fclose($handle);
return true;
}
}

View File

@ -1,3 +1,16 @@
DELETE FROM cc_pref WHERE id IN (
SELECT cc_pref.id
FROM cc_pref
LEFT OUTER JOIN (
SELECT MAX(id) as id, keystr, subjid
FROM cc_pref
GROUP BY keystr, subjid
) as KeepRows ON
cc_pref.id = KeepRows.id
WHERE
KeepRows.id IS NULL
);
DELETE FROM cc_pref WHERE keystr = 'system_version';
INSERT INTO cc_pref (keystr, valstr) VALUES ('system_version', '2.4.0');
@ -16,4 +29,4 @@ UPDATE cc_files
SET is_playlist = true
WHERE id IN (SELECT DISTINCT(file_id) FROM cc_blockcontents);
INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('hu_HU', 'Magyar');
INSERT INTO cc_locale (locale_code, locale_lang) VALUES ('hu_HU', 'Magyar');

View File

@ -1,5 +1,6 @@
import pyinotify
import time
import os
from pydispatch import dispatcher
from os.path import normpath
@ -186,13 +187,12 @@ class Manager(Loggable):
try: mmp.create_dir(path)
except mmp.FailedToCreateDir as e: self.unexpected_exception(e)
os.chmod(store_paths['organize'], 0775)
self.set_problem_files_path(store_paths['problem_files'])
self.set_imported_path(store_paths['imported'])
self.set_recorded_path(store_paths['recorded'])
self.set_organize_path(store_paths['organize'])
mmp.create_dir(store)
for p in store_paths.values():
mmp.create_dir(p)
def has_watch(self, path):
""" returns true if the path is being watched or not. Any kind

View File

@ -4,6 +4,5 @@
set httpd port 2812
check process airtime-liquidsoap with pidfile "/var/run/airtime-liquidsoap.pid"
if does not exist for 3 cycles then restart
start program = "/etc/init.d/airtime-liquidsoap start" with timeout 5 seconds
stop program = "/etc/init.d/airtime-liquidsoap stop"

View File

@ -88,8 +88,8 @@ try:
if "airtime_service_start" in os.environ and os.environ["airtime_service_start"] == "t":
print "* Waiting for pypo processes to start..."
subprocess.call("invoke-rc.d airtime-playout start > /dev/null 2>&1", shell=True)
subprocess.call("invoke-rc.d airtime-liquidsoap start > /dev/null 2>&1", shell=True)
subprocess.call("invoke-rc.d airtime-playout start > /dev/null 2>&1", shell=True)
except Exception, e:
print e

View File

@ -1,24 +1,24 @@
if bitrate == 24 then
ignore(output_stereo(%fdkaac(bitrate = 24), !source))
ignore(output_stereo(%fdkaac(bitrate = 24, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 32 then
ignore(output_stereo(%fdkaac(bitrate = 32), !source))
ignore(output_stereo(%fdkaac(bitrate = 32, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 48 then
ignore(output_stereo(%fdkaac(bitrate = 48), !source))
ignore(output_stereo(%fdkaac(bitrate = 48, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 64 then
ignore(output_stereo(%fdkaac(bitrate = 64), !source))
ignore(output_stereo(%fdkaac(bitrate = 64, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 96 then
ignore(output_stereo(%fdkaac(bitrate = 96), !source))
ignore(output_stereo(%fdkaac(bitrate = 96, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 128 then
ignore(output_stereo(%fdkaac(bitrate = 128), !source))
ignore(output_stereo(%fdkaac(bitrate = 128, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 160 then
ignore(output_stereo(%fdkaac(bitrate = 160), !source))
ignore(output_stereo(%fdkaac(bitrate = 160, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 192 then
ignore(output_stereo(%fdkaac(bitrate = 192), !source))
ignore(output_stereo(%fdkaac(bitrate = 192, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 224 then
ignore(output_stereo(%fdkaac(bitrate = 224), !source))
ignore(output_stereo(%fdkaac(bitrate = 224, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 256 then
ignore(output_stereo(%fdkaac(bitrate = 256), !source))
ignore(output_stereo(%fdkaac(bitrate = 256, aot="mpeg4_he_aac_v2"), !source))
elsif bitrate == 320 then
ignore(output_stereo(%fdkaac(bitrate = 320), !source))
ignore(output_stereo(%fdkaac(bitrate = 320, aot="mpeg4_he_aac_v2"), !source))
end

View File

@ -1,10 +1,15 @@
def notify(m)
#current_media_id := string_of(m['schedule_table_id'])
command = "/usr/lib/airtime/pypo/bin/liquidsoap_scripts/notify.sh --media-id=#{m['schedule_table_id']} &"
log(command)
system(command)
end
def notify_queue(m)
f = !dynamic_metadata_callback
ignore(f(m))
notify(m)
end
def notify_stream(m)
json_str = string.replace(pattern="\n",(fun (s) -> ""), json_of(m))
#if a string has a single apostrophe in it, let's comment it out by ending the string before right before it
@ -18,12 +23,19 @@ end
# A function applied to each metadata chunk
def append_title(m) =
log("Using stream_format #{!stream_metadata_type}")
if !stream_metadata_type == 1 then
[("title", "#{!show_name} - #{m['artist']} - #{m['title']}")]
elsif !stream_metadata_type == 2 then
[("title", "#{!station_name} - #{!show_name}")]
if list.mem_assoc("mapped", m) then
#protection against applying this function twice. It shouldn't be happening
#and bug file with Liquidsoap.
m
else
[("title", "#{m['artist']} - #{m['title']}")]
if !stream_metadata_type == 1 then
[("title", "#{!show_name} - #{m['artist']} - #{m['title']}"), ("mapped", "true")]
elsif !stream_metadata_type == 2 then
[("title", "#{!station_name} - #{!show_name}"), ("mapped", "true")]
else
[("title", "#{m['artist']} - #{m['title']}"), ("mapped", "true")]
end
end
end

View File

@ -24,6 +24,8 @@ default_dj_fade = ref 0.
station_name = ref ''
show_name = ref ''
dynamic_metadata_callback = ref fun (s) -> begin () end
s1_connected = ref ''
s2_connected = ref ''
s3_connected = ref ''
@ -47,7 +49,7 @@ def create_source()
# the crossfade function controls fade in/out
l = crossfade_airtime(l)
l = on_metadata(notify, l)
l = on_metadata(notify_queue, l)
sources := list.append([l], !sources)
server.register(namespace="queues",
"s#{!source_id}_skip",
@ -70,6 +72,10 @@ create_source()
queue = add(!sources, normalize=false)
pair = insert_metadata(queue)
dynamic_metadata_callback := fst(pair)
queue = snd(pair)
output.dummy(fallible=true, queue)
http = input.http_restart(id="http")

View File

@ -25,6 +25,7 @@ from recorder import Recorder
from listenerstat import ListenerStat
from pypomessagehandler import PypoMessageHandler
from pypoliquidsoap import PypoLiquidsoap
from timeout import ls_timeout
from media.update.replaygainupdater import ReplayGainUpdater
from media.update.silananalyzer import SilanAnalyzer
@ -156,6 +157,7 @@ def keyboardInterruptHandler(signum, frame):
logger.info('\nKeyboard Interrupt\n')
sys.exit(0)
@ls_timeout
def liquidsoap_get_info(telnet_lock, host, port, logger):
logger.debug("Checking to see if Liquidsoap is running")
try:

View File

@ -2,6 +2,7 @@
from datetime import datetime
from datetime import timedelta
from configobj import ConfigObj
import sys
import time
@ -21,7 +22,7 @@ from threading import Thread
from api_clients import api_client
from std_err_override import LogWriter
from configobj import ConfigObj
from timeout import ls_timeout
# configure logging
@ -114,44 +115,6 @@ class PypoPush(Thread):
return present, future
def get_current_stream_id_from_liquidsoap(self):
response = "-1"
try:
self.telnet_lock.acquire()
tn = telnetlib.Telnet(self.config['ls_host'], self.config['ls_port'])
msg = 'dynamic_source.get_id\n'
tn.write(msg)
response = tn.read_until("\r\n").strip(" \r\n")
tn.write('exit\n')
tn.read_all()
except Exception, e:
self.logger.error("Error connecting to Liquidsoap: %s", e)
response = []
finally:
self.telnet_lock.release()
return response
#def is_correct_current_item(self, media_item, liquidsoap_queue_approx, liquidsoap_stream_id):
#correct = False
#if media_item is None:
#correct = (len(liquidsoap_queue_approx) == 0 and liquidsoap_stream_id == "-1")
#else:
#if is_file(media_item):
#if len(liquidsoap_queue_approx) == 0:
#correct = False
#else:
#correct = liquidsoap_queue_approx[0]['start'] == media_item['start'] and \
#liquidsoap_queue_approx[0]['row_id'] == media_item['row_id'] and \
#liquidsoap_queue_approx[0]['end'] == media_item['end'] and \
#liquidsoap_queue_approx[0]['replay_gain'] == media_item['replay_gain']
#elif is_stream(media_item):
#correct = liquidsoap_stream_id == str(media_item['row_id'])
#self.logger.debug("Is current item correct?: %s", str(correct))
#return correct
def date_interval_to_seconds(self, interval):
"""
Convert timedelta object into int representing the number of seconds. If
@ -162,6 +125,7 @@ class PypoPush(Thread):
return seconds
@ls_timeout
def stop_web_stream_all(self):
try:
self.telnet_lock.acquire()

View File

@ -34,6 +34,7 @@ from subprocess import Popen, PIPE
from api_clients import api_client
from std_err_override import LogWriter
from timeout import ls_timeout
import pure
@ -55,6 +56,8 @@ class PypoFetch(Thread):
def __init__(self, pypoFetch_q, pypoPush_q, media_q, pypo_liquidsoap,
config):
Thread.__init__(self)
#Hacky...
PypoFetch.ref = self
self.api_client = api_client.AirtimeApiClient()
self.fetch_queue = pypoFetch_q
@ -198,15 +201,23 @@ class PypoFetch(Thread):
commands.append(('vars.default_dj_fade %s\n' % fade).encode('utf-8'))
self.pypo_liquidsoap.get_telnet_dispatcher().telnet_send(commands)
self.pypo_liquidsoap.clear_all_queues()
self.pypo_liquidsoap.clear_queue_tracker()
def restart_liquidsoap(self):
self.logger.info("Restarting Liquidsoap")
subprocess.call(['/etc/init.d/airtime-liquidsoap', 'restart'])
self.telnet_lock.acquire(False)
#Wait here and poll Liquidsoap until it has started up
self.logger.info("Waiting for Liquidsoap to start")
self.pypo_liquidsoap.liquidsoap_startup_test()
try:
self.logger.info("Restarting Liquidsoap")
subprocess.call(['/etc/init.d/airtime-liquidsoap', 'restart'])
#Wait here and poll Liquidsoap until it has started up
self.logger.info("Waiting for Liquidsoap to start")
self.pypo_liquidsoap.liquidsoap_startup_test()
except Exception, e:
self.logger.error(e)
finally:
self.telnet_lock.release()
"""
TODO: This function needs to be way shorter, and refactored :/ - MK
@ -306,6 +317,7 @@ class PypoFetch(Thread):
self.logger.info("No change detected in setting...")
self.update_liquidsoap_connection_status()
@ls_timeout
def update_liquidsoap_connection_status(self):
"""
updates the status of Liquidsoap connection to the streaming server
@ -333,6 +345,7 @@ class PypoFetch(Thread):
self.api_client.notify_liquidsoap_status("OK", stream_id,
str(fake_time))
"""
Process the schedule
- Reads the scheduled entries of a given range (actual time +/-

View File

@ -9,6 +9,7 @@
"""
import telnetlib
from threading import Lock
from timeout import ls_timeout
def create_liquidsoap_annotation(media):
# We need liq_start_next value in the annotate. That is the value that
@ -48,6 +49,7 @@ class TelnetLiquidsoap:
else:
raise Exception("Unexpected list length returned: %s" % output)
@ls_timeout
def queue_clear_all(self):
with self.telnet_lock:
tn = self.__connect()
@ -60,6 +62,7 @@ class TelnetLiquidsoap:
tn.write("exit\n")
self.logger.debug(tn.read_all())
@ls_timeout
def queue_remove(self, queue_id):
with self.telnet_lock:
tn = self.__connect()
@ -71,6 +74,7 @@ class TelnetLiquidsoap:
tn.write("exit\n")
self.logger.debug(tn.read_all())
@ls_timeout
def queue_push(self, queue_id, media_item):
with self.telnet_lock:
if not self.__is_empty(queue_id):
@ -90,6 +94,7 @@ class TelnetLiquidsoap:
tn.write("exit\n")
self.logger.debug(tn.read_all())
@ls_timeout
def stop_web_stream_buffer(self):
with self.telnet_lock:
tn = self.__connect()
@ -105,6 +110,7 @@ class TelnetLiquidsoap:
tn.write("exit\n")
self.logger.debug(tn.read_all())
@ls_timeout
def stop_web_stream_output(self):
with self.telnet_lock:
tn = self.__connect()
@ -116,6 +122,8 @@ class TelnetLiquidsoap:
tn.write("exit\n")
self.logger.debug(tn.read_all())
@ls_timeout
def start_web_stream(self, media_item):
with self.telnet_lock:
tn = self.__connect()
@ -133,6 +141,7 @@ class TelnetLiquidsoap:
self.current_prebuffering_stream_id = None
@ls_timeout
def start_web_stream_buffer(self, media_item):
with self.telnet_lock:
tn = self.__connect()
@ -150,6 +159,7 @@ class TelnetLiquidsoap:
self.current_prebuffering_stream_id = media_item['row_id']
@ls_timeout
def get_current_stream_id(self):
with self.telnet_lock:
tn = self.__connect()
@ -164,6 +174,7 @@ class TelnetLiquidsoap:
return stream_id
@ls_timeout
def disconnect_source(self, sourcename):
self.logger.debug('Disconnecting source: %s', sourcename)
command = ""
@ -179,6 +190,7 @@ class TelnetLiquidsoap:
tn.write('exit\n')
tn.read_all()
@ls_timeout
def telnet_send(self, commands):
with self.telnet_lock:
tn = self.__connect()
@ -189,6 +201,7 @@ class TelnetLiquidsoap:
tn.write('exit\n')
tn.read_all()
@ls_timeout
def switch_source(self, sourcename, status):
self.logger.debug('Switching source: %s to "%s" status', sourcename,
status)
@ -207,6 +220,7 @@ class TelnetLiquidsoap:
self.telnet_send([command])
@ls_timeout
def liquidsoap_get_info(self):
self.logger.debug("Checking to see if Liquidsoap is running")
response = ""
@ -219,6 +233,7 @@ class TelnetLiquidsoap:
return response
@ls_timeout
def update_liquidsoap_station_name(self, station_name):
with self.telnet_lock:
tn = self.__connect()
@ -229,6 +244,7 @@ class TelnetLiquidsoap:
tn.write('exit\n')
tn.read_all()
@ls_timeout
def get_liquidsoap_connection_status(self, current_time):
output = None
with self.telnet_lock:
@ -249,6 +265,7 @@ class TelnetLiquidsoap:
return output
@ls_timeout
def update_liquidsoap_stream_format(self, stream_format):
with self.telnet_lock:
tn = self.__connect()
@ -259,6 +276,7 @@ class TelnetLiquidsoap:
tn.write('exit\n')
tn.read_all()
@ls_timeout
def update_liquidsoap_transition_fade(self, fade):
with self.telnet_lock:
tn = self.__connect()
@ -278,6 +296,7 @@ class DummyTelnetLiquidsoap:
for i in range(4):
self.liquidsoap_mock_queues["s"+str(i)] = []
@ls_timeout
def queue_push(self, queue_id, media_item):
try:
self.telnet_lock.acquire()
@ -293,6 +312,7 @@ class DummyTelnetLiquidsoap:
finally:
self.telnet_lock.release()
@ls_timeout
def queue_remove(self, queue_id):
try:
self.telnet_lock.acquire()

View File

@ -0,0 +1,36 @@
import threading
import pypofetch
def __timeout(func, timeout_duration, default, args, kwargs):
class InterruptableThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.result = default
def run(self):
self.result = func(*args, **kwargs)
first_attempt = True
while True:
it = InterruptableThread()
it.start()
it.join(timeout_duration)
if it.isAlive():
"""Restart Liquidsoap and try the command one more time. If it
fails again then there is something critically wrong..."""
if first_attempt:
#restart liquidsoap
pypofetch.PypoFetch.ref.restart_liquidsoap()
else:
raise Exception("Thread did not terminate")
else:
return it.result
first_attempt = False
def ls_timeout(f, timeout=4, default=None):
def new_f(*args, **kwargs):
return __timeout(f, timeout, default, args, kwargs)
return new_f