]> git.0d.be Git - django-panik-nonstop.git/blob - nonstop/management/commands/publish_to_icecast.py
use print function in management commands
[django-panik-nonstop.git] / nonstop / management / commands / publish_to_icecast.py
1 import requests
2 import urllib
3 import unicodedata
4
5 from django.core.management.base import BaseCommand, CommandError
6 from django.conf import settings
7
8 from emissions.utils import whatsonair
9 from nonstop.utils import get_current_nonstop_track
10
11
12 class Command(BaseCommand):
13     def handle(self, *args, **options):
14         onair = whatsonair()
15         onair_txt = None
16         if onair.get('episode'):
17             onair_txt = '%s - %s' % (
18                     onair.get('emission').title,
19                     onair.get('episode').title)
20         elif onair.get('emission'):
21             onair_txt = onair.get('emission').title
22         elif onair.get('nonstop'):
23             track = get_current_nonstop_track()
24             if 'track_artist' in track:
25                 onair_txt = '%s - %s (%s)' % (
26                         onair.get('nonstop').title,
27                         track.get('track_title'),
28                         track.get('track_artist'))
29             elif 'track_title' in track:
30                 onair_txt = '%s - %s' % (
31                         onair.get('nonstop').title,
32                         track.get('track_title'))
33             else:
34                 onair_txt = onair.get('nonstop').title
35         if not onair_txt:
36             return
37
38         for stream_url in settings.STREAM_UPDATE_URLS:
39             if '.aac' in stream_url:
40                 onair_msg = unicodedata.normalize('NFKD', onair_txt).encode('ascii', 'ignore')
41             else:
42                 onair_msg = onair_txt.encode('utf-8')
43             try:
44                 r = requests.get(stream_url + '&song=' + urllib.quote(onair_msg), timeout=5)
45                 r.raise_for_status()
46             except Exception, e:
47                 print('failed to update', e)