Commit Graph

65 Commits

Author SHA1 Message Date
jo f42840f9dd Rewrite celery README from .rst to .md 2021-09-02 16:06:26 +02:00
jo 97c8e88b8a Remove unused manifest.in files 2021-09-02 16:06:26 +02:00
jo cac25543c6 Drop Upstart support 2021-09-02 14:30:31 +02:00
jo 3da0310173 Drop SysV support 2021-09-02 14:30:31 +02:00
jo 9881eebf55 Fix shellcheck warnings 2021-08-17 12:23:36 +02:00
jo 8b3e09d41c Format shell scripts
Fix flags order
2021-08-17 12:22:46 +02:00
jo 01fbd1e8b9 Add isort pre-commit hook
Sort import statement in python files

See https://github.com/PyCQA/isort
2021-06-05 00:39:35 +02:00
jo b26de72704 Remove python encoding pragma 2021-06-05 00:39:23 +02:00
jo f2e840989a Fix executable bit 2021-06-04 17:06:05 +02:00
jo 6871956baa Fix end of files 2021-06-04 17:06:05 +02:00
jo ac17db97fc Fix missing encoding pragma on python files 2021-06-04 17:04:53 +02:00
Lucas Bickel 4c72403b9b fix(soundcloud): remove broken integration 2021-01-06 12:40:30 +00:00
Kyle Robbertze 4c0146db74 pin celery version until we can fix compatibility with celery 5 2020-08-28 12:47:01 +02:00
Kyle Robbertze afd3d7842b Rewrite Travis script to be modular
Fixes: #1039
2020-05-20 11:06:56 +02:00
Zachary Klosko 6540a34a9b Adding back scripts in /docs 2020-05-19 10:16:31 -04:00
Kyle Robbertze e0e4d4c87f Ensure all json loads calls use strings 2020-05-04 13:25:36 +02:00
Kyle Robbertze 5923dee839 Fix running apps 2020-04-29 19:06:52 +02:00
Lucas Bickel 9bea08dc03 ♻️ (celery) python3 compat fixes 2019-08-18 17:45:48 +02:00
Robbt 8427d0a92a changed artist track to podcast title 2019-01-13 00:29:49 -05:00
Robbt e773887736 merge in audiofile fix from master 2019-01-12 23:11:00 -05:00
Robbt 28d2b110c2 made basic sanity checks to only do back up mp3 mutagen import on files with mp3 extension 2018-12-27 18:38:17 -05:00
Robbt 26fad97915 modified the code to treat a file mutagen fails to load as a mp3 2018-12-27 17:50:33 -05:00
Robbt e2e8591b4d added track title override for podcasts 2018-12-23 14:54:47 -05:00
Robbt 0b9c3396ea removed debug line that was causing failures for m4a 2018-12-19 16:27:31 -05:00
Robbt 626e682aad changed celery podcast download to use mutagen for all supported files vs. mp3 only 2018-12-13 12:36:10 -05:00
Robbt 8a6f992aa5 Increased podcast download timeout to 1800 seconds 2018-10-21 17:18:29 -04:00
Robb Ebright 5150f3add5 Adding decode = true to the raw request object fixes issues with certain podcasts and corruption 2017-10-07 18:48:39 -04:00
Bill Burton 3179651dec Installer auto-detects distro, portable system init
The theme of this commit is to make the install process more
resiliant to differences in distros by testing for specific
features or versions of executables rather than making as many
assumptions just on the distro and release.

* Distro and Release detection (install, Vagrantfile)
  - Added detection logic for distro and release based on
    /etc/os-release which is available on all potential supported
    distros. The --distribution and --release options can be used
    to override detection.
  - Added distro and release checks to ensure values specified are
    for a supported release.
  - Changed some distro checks to use booleans, e.g.
    if $is_centos_7; then ...
  - Added a simple check so if --distribution is specified, it will
    ensure it's at least sane, e.g. centos on debian or debian on
    centos will be caught.
  - In Vagrantfile, removed --distribution and --release options for
    all distro and release combinations.

* Portable Init System Detection and Management (install, centos.sh)
  - Added detection logic for init system type - systemd, Upstart or
    System V in the function systemInitDetect().
  - Added portable init system install in the function
    systemInitInstall() which depends on systemInitDetect(). After
    installing files, enables and starts service.
  - Added portable init system commands in the function
    systemInitCommand() for start, stop, reload, restart and status.
  - Python services don't support systemd but unconditionally install
    scripts for both Upstart and System V. Disabled by passing
    --no-init-script to setup.py for each service.
  - When upgrading, remove all old system init files in /etc/init,
    /etc/init.d, /etc/default and /etc/systemd/system.
  - In centos.sh, removed install of airtime systemd service files
    as it's now handled by install.
  - Created an Upstart .conf for airtime-celery
  - In systemd file for airtime-celery, changed absolute path to
    /usr/local/bin/celery and for centos, the install symlinks
    celery to /usr/local/bin.

* External Dependencies Install (install)
  - For external dependencies, only attempt to install for Debian-
    based distros with apt-get. For centos, a warning is displayed.
  - For systems with apt-get, detect version and if 1.1 or greater,
    use new force options, otherwise use --force-yes option.

* Configuring Apache (install)
  - For Apache, check for centos and use httpd for binary and
    service, otherwise use apache2ctl and apache2.
  - Detect Apache version 2 or better in a more reliable manner.
  - Detect Apache root folder and conf file name by running
    apache2ctl -V or httpd -V as appropriate.
  - Various checks for centos as it doesn't support the Debian
    Apache utilities a2ensite/a2dissite, a2enmod/a2dismod, etc.

* Installing Airtime Services (install)
  - Detect Python version. If less than 2.7.9, install OpenSSL
    support.
  - Prevent installing init files by passing --no-init-script to
    setup.py for each service.
  - Use systemInitInstall to install, enable and start each service
    after setup.py has run.
  - Removed filtering for WEB_USER for files in
    /etc/init/airtime*.template as that is handled in the
    systemInitInstall() function.

* Configuring PHP in Apache (install)
  - Detect PHP conf folder by checking a list of locations rather
    than making assumptions based on the distro and release.

* Configuring PostgreSQL (install)
  - Detects if the airtime user has already been created. If not,
    then creates the user.

* Installing Locales (install)
  - Minor changes to check for centos and prevent from running.
2017-04-28 11:00:50 -04:00
Robb Ebright 2d7882872b use celery 3.0 and compatible kombo 2017-04-13 23:11:59 -04:00
Robb Ebright c7131e0936 set celery version 3 2017-04-13 21:58:49 -04:00
Lucas Bickel ae4c9203e6 Refactor override preference
Properly defaults the preference to be true and always return a boolean value since that is what celery will be expecting.
2017-03-17 02:10:04 +01:00
Robb Ebright fefc53c000 basic podcast album override option in preferences 2017-03-16 16:48:31 -04:00
Lucas Bickel c29285ae48 Vagrant Debian support (and experimental CentOS)
This changes the Vagrant setup to support multiple installations as multiple
boxes. In addition to Ubuntu Vagrant can now be used to install on Debian
as well as on CentOS.

I took the chance to clean up the .deb install a bit and backported analyzer
and celery to SysV proper so it runs there. Some of the distro specfics were
moved to the install script from the python setup scripts to acheive this.

For the CentOS support I added a rather involved OS prepare script. In the
long term this will be added to the preparing-the-server docs we already have.

I had to switch the default port to http-alt (8080). On CentOS 9080 is registered
for ocsp and getting it to work for apache without hacking SELinux is hard. I
think 8080 is the RFC way to go anyhow. If anyone want to override this it
should be rather easy using the --web-port arg and by hacking Vagrantfile.

The PyOpenSSL code has been refactored for all the distros that the Vagrantfile
now supports.

As far as my checks go, I tried this code with all the distros, uploaded a track
and downloaded a unicode and a ssl podcast and was able to listen to them
in each case.

In the experimental CentOS case, the UI is not up to spec since services
need to get scheduled through systemctl and the status overview (ie. on the /?config page)
do not work properly. They need to be as follows:

```
sudo systemctl start airtime-playout
sudo systemctl start airtime-liquidsoap
sudo systemctl start airtime_analyzer.service
sudo systemctl start airtime-celery.service
```
2017-03-12 13:42:22 +01:00
Lucas Bickel 0cb5e2665e Fix unicode issues in podcast downloader
The podcast downloader fails pretty badly when the podcast name contains non ascii chars. The main fail happens during logging; I have learnt way to much about pythons stupid unicode implementation.

This adds addtional debug logging and also outputs the real reason a download fails properly. The content of the tags should be written as UTF-8 or whater is input into it, this commit mainly touches (and fixes) logging.
2017-03-11 21:01:52 +01:00
Robb d86e223c45 Merge pull request #28 from radiorabe/feature/robbt/podcast-naming
Podcast naming feature as per #26
2017-03-06 18:12:57 -05:00
Lucas Bickel 2e9fc432b1 Only override album it is empty 2017-03-04 13:38:37 +01:00
Robb Ebright 2cebb7dfa2 first part of the adding album tags to podcast downloads 2017-03-04 13:38:36 +01:00
Lucas Bickel e28ad471f9 Rewrite config from /etc/airtime-saas to plain /etc/airtime
This is the results of sed -i -e 's|/etc/airtime-saas/|/etc/airtime/|' `grep -irl 'airtime-saas' airtime_mvc/ python_apps/` :P

It might need more testing, the airtime-saas part never really made sense, zf1 has environments for that, ie you would create a saas env based on production for instance.

I beleive legacy upstream was using this to share configuration between customers (ie. analyser runs only once and writes to a shared S3 bucket). I assume they mount the airtime-saas folder onto individual customers instances with a global config. Like I said, I don't feel that this makes sense since all it does is make hacking at the configs in airtime-saas a bit easier. A serious SaaS operation should be using something like puppet or ansible to achieve this.
2017-03-03 15:57:41 +01:00
Duncan Sommerville 071de55329 Add some additional error handling and prevent disabled buttons from being triggered 2015-11-11 19:26:51 -05:00
Duncan Sommerville 4f281a30ed Add SoundCloud update and download tasks to Celery backend; requires airtime-celery reinstall 2015-10-30 16:10:16 -04:00
Duncan Sommerville e3feb17f0c * Change the Celery timeout to 15 minutes (from 10) to better accommodate automatic ingest
* Fix various small bugs in auto ingestion and tab implementation
* Update TaskManager run conditions to piggyback on API calls - guarantees a certain frequency of requests and greatly reduces chances of lock contention
2015-10-29 17:53:45 -04:00
Duncan Sommerville 0b1df6baf3 * SAAS-1084 - initial work on publishing API backend
* More work on automatic ingest
* Add automatic_ingest_timestamp column to ImportedPodcast
2015-10-20 19:03:34 -04:00
Duncan Sommerville bcbd8a8050 Fix bug in auto ingest, immediately retry on failure 2015-10-19 15:36:34 -04:00
Duncan Sommerville 43e9fb59ce SAAS-1071 - more work on celery backend for podcasts; add upgrade to make file_id field in third_party_track_references nullable 2015-09-24 15:57:38 -04:00
Duncan Sommerville ca51dcf3ae SAAS-1071 - more work on backend podcast implementation 2015-09-24 12:58:02 -04:00
Duncan Sommerville cf1de5fb66 SAAS-1071 - initial work on podcast celery backend; tweak SoundCloud service 2015-09-22 15:26:08 -04:00
Duncan Sommerville c8baa6e4b3 Merge branch 'saas-dev-publishing' into soundcloud
Conflicts:
	airtime_mvc/application/views/scripts/playlist/playlist.phtml
	airtime_mvc/application/views/scripts/playlist/smart-block.phtml
	airtime_mvc/public/js/airtime/library/spl.js
2015-09-15 14:03:11 -04:00
Duncan Sommerville dd09676f88 Hide celery user 2015-09-15 13:59:48 -04:00
Duncan Sommerville 63784d4e6b Fix some behaviour with playlist/smartblock fade button 2015-09-08 16:39:33 -04:00
Duncan Sommerville 04333aaa29 SoundCloud download initial commit 2015-07-16 11:27:27 -04:00