Skip to content

Commit

Permalink
Release v0.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Nick Steel committed Feb 6, 2016
2 parents bdf4635 + e1ec690 commit 750363f
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 18 deletions.
7 changes: 7 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@ Project resources
Changelog
=========

v0.3.0 (2016-02-06)
-------------------

- Requires Mopidy v1.1
- Respect user's Mopidy proxy configuration and set user-agent.
- Utilise Mopidy's nested playlist handling (Fixes: #23 PR: #22)

v0.2.2 (2015-04-24)
-------------------

Expand Down
2 changes: 1 addition & 1 deletion mopidy_tunein/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from mopidy import config, ext

__version__ = '0.2.2'
__version__ = '0.3.0'


class Extension(ext.Extension):
Expand Down
48 changes: 36 additions & 12 deletions mopidy_tunein/actor.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,52 @@

import logging

from mopidy import backend, exceptions
from mopidy import backend, httpclient
from mopidy.audio import scan
from mopidy.models import Ref, SearchResult
from mopidy.stream.actor import StreamPlaybackProvider

import pykka

import requests

import mopidy_tunein
from mopidy_tunein import translator, tunein

logger = logging.getLogger(__name__)


def get_requests_session(proxy_config, user_agent):
proxy = httpclient.format_proxy(proxy_config)
full_user_agent = httpclient.format_user_agent(user_agent)

session = requests.Session()
session.proxies.update({'http': proxy, 'https': proxy})
session.headers.update({'user-agent': full_user_agent})

return session


class TuneInBackend(pykka.ThreadingActor, backend.Backend):
uri_schemes = ['tunein']

def __init__(self, config, audio):
super(TuneInBackend, self).__init__()
self.tunein = tunein.TuneIn(config['tunein']['timeout'])

session = get_requests_session(
proxy_config=config['proxy'],
user_agent='%s/%s' % (
mopidy_tunein.Extension.dist_name,
mopidy_tunein.__version__))

self._scanner = scan.Scanner(
timeout=config['tunein']['timeout'],
proxy_config=config['proxy'])
self.tunein = tunein.TuneIn(config['tunein']['timeout'], session)
self.library = TuneInLibrary(self)
self.playback = TuneInPlayback(audio=audio,
backend=self,
timeout=config['tunein']['timeout'])
config=config)


class TuneInLibrary(backend.LibraryProvider):
Expand Down Expand Up @@ -98,10 +123,9 @@ def search(self, query=None, uris=None, exact=False):
return SearchResult(uri='tunein:search', tracks=tracks)


class TuneInPlayback(backend.PlaybackProvider):
def __init__(self, audio, backend, timeout):
super(TuneInPlayback, self).__init__(audio, backend)
self._scanner = scan.Scanner(timeout=timeout)
class TuneInPlayback(StreamPlaybackProvider):
def __init__(self, audio, backend, config):
super(TuneInPlayback, self).__init__(audio, backend, config)

def translate_uri(self, uri):
variant, identifier = translator.parse_uri(uri)
Expand All @@ -112,11 +136,11 @@ def translate_uri(self, uri):
while stream_uris:
uri = stream_uris.pop(0)
logger.debug('Looking up URI: %s.' % uri)
try:
# TODO: Somehow update metadata using station.
return self._scanner.scan(uri).uri
except exceptions.ScannerError as se:
logger.debug('Mopidy scan failed: %s.' % se)
new_uri = super(TuneInPlayback, self).translate_uri(uri)
if new_uri:
return new_uri
else:
logger.debug('Mopidy translate_uri failed.')
new_uris = self.backend.tunein.parse_stream_url(uri)
if new_uris == [uri]:
logger.debug(
Expand Down
4 changes: 2 additions & 2 deletions mopidy_tunein/translator.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ def station_to_ref(station):
def station_to_track(station):
ref = station_to_ref(station)
return Track(uri=ref.uri,
name=ref.name,
name=station.get('subtext', ref.name),
album=Album(name=ref.name,
uri=ref.uri,
images=[station.get('image')]),
artists=[Artist(name=station.get('subtext', ''))])
artists=[Artist(name=ref.name, uri=ref.uri)])


def show_to_ref(show):
Expand Down
4 changes: 2 additions & 2 deletions mopidy_tunein/tunein.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,9 @@ def find_playlist_parser(extension, content_type):
class TuneIn(object):
"""Wrapper for the TuneIn API."""

def __init__(self, timeout):
def __init__(self, timeout, session=None):
self._base_uri = 'http://opml.radiotime.com/%s'
self._session = requests.Session()
self._session = session or requests.Session()
self._timeout = timeout / 1000.0
self._stations = {}

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def get_version(filename):
include_package_data=True,
install_requires=[
'setuptools',
'Mopidy >= 1.0',
'Mopidy >= 1.1',
'Pykka >= 1.1',
'requests >= 2.0.0',
],
Expand Down

0 comments on commit 750363f

Please sign in to comment.