from __future__ import unicode_literals

import logging
import pykka

from mopidy import backend

from .library import SoundCloudLibraryProvider
from .soundcloud import SoundCloudClient

logger = logging.getLogger(__name__)


class SoundCloudBackend(pykka.ThreadingActor, backend.Backend):

    def __init__(self, config, audio):
        super(SoundCloudBackend, self).__init__()
        self.config = config
        self.remote = SoundCloudClient(config['soundcloud'])
        self.library = SoundCloudLibraryProvider(backend=self)
        self.playback = SoundCloudPlaybackProvider(audio=audio, backend=self)

        self.uri_schemes = ['soundcloud', 'sc']


class SoundCloudPlaybackProvider(backend.PlaybackProvider):

    def play(self, track):
        track_id = self.backend.remote.parse_track_uri(track)
        track = self.backend.remote.get_track(track_id, True)
        return super(SoundCloudPlaybackProvider, self).play(track)

from __future__ import unicode_literals

import logging
import pykka

from mopidy import backend

from .library import SoundCloudLibraryProvider
from .soundcloud import SoundCloudClient

logger = logging.getLogger(__name__)


class SoundCloudBackend(pykka.ThreadingActor, backend.Backend):

    def __init__(self, config, audio):
        super(SoundCloudBackend, self).__init__()
        self.config = config
        self.remote = SoundCloudClient(config['soundcloud'])
        self.library = SoundCloudLibraryProvider(backend=self)
        self.playback = SoundCloudPlaybackProvider(audio=audio, backend=self)

        self.uri_schemes = ['soundcloud', 'sc']


class SoundCloudPlaybackProvider(backend.PlaybackProvider):

    def play(self, track):

        track_id = self.backend.remote.parse_track_uri(track)
        track = self.backend.remote.get_track(track_id, True)
        if hasattr(track, 'uri'):
            return super(SoundCloudPlaybackProvider, self).play(track)
        else:
            return None

Handle track that can't be played
Handle track that can't be played

  from __future__ import unicode_literals
  
  import logging
  import pykka
  
  from mopidy import backend
  
  from .library import SoundCloudLibraryProvider
  from .soundcloud import SoundCloudClient
  
  logger = logging.getLogger(__name__)
  
  
  class SoundCloudBackend(pykka.ThreadingActor, backend.Backend):
  
      def __init__(self, config, audio):
          super(SoundCloudBackend, self).__init__()
          self.config = config
          self.remote = SoundCloudClient(config['soundcloud'])
          self.library = SoundCloudLibraryProvider(backend=self)
          self.playback = SoundCloudPlaybackProvider(audio=audio, backend=self)
  
          self.uri_schemes = ['soundcloud', 'sc']
  
  
  class SoundCloudPlaybackProvider(backend.PlaybackProvider):
  
      def play(self, track):
+ 
          track_id = self.backend.remote.parse_track_uri(track)
          track = self.backend.remote.get_track(track_id, True)
+         if hasattr(track, 'uri'):
-         return super(SoundCloudPlaybackProvider, self).play(track)
+             return super(SoundCloudPlaybackProvider, self).play(track)
+         else:
+             return None
  
Handle track that can't be played
## Code Before:
from __future__ import unicode_literals

import logging
import pykka

from mopidy import backend

from .library import SoundCloudLibraryProvider
from .soundcloud import SoundCloudClient

logger = logging.getLogger(__name__)


class SoundCloudBackend(pykka.ThreadingActor, backend.Backend):

    def __init__(self, config, audio):
        super(SoundCloudBackend, self).__init__()
        self.config = config
        self.remote = SoundCloudClient(config['soundcloud'])
        self.library = SoundCloudLibraryProvider(backend=self)
        self.playback = SoundCloudPlaybackProvider(audio=audio, backend=self)

        self.uri_schemes = ['soundcloud', 'sc']


class SoundCloudPlaybackProvider(backend.PlaybackProvider):

    def play(self, track):
        track_id = self.backend.remote.parse_track_uri(track)
        track = self.backend.remote.get_track(track_id, True)
        return super(SoundCloudPlaybackProvider, self).play(track)

## Instruction:
Handle track that can't be played
## Code After:
from __future__ import unicode_literals

import logging
import pykka

from mopidy import backend

from .library import SoundCloudLibraryProvider
from .soundcloud import SoundCloudClient

logger = logging.getLogger(__name__)


class SoundCloudBackend(pykka.ThreadingActor, backend.Backend):

    def __init__(self, config, audio):
        super(SoundCloudBackend, self).__init__()
        self.config = config
        self.remote = SoundCloudClient(config['soundcloud'])
        self.library = SoundCloudLibraryProvider(backend=self)
        self.playback = SoundCloudPlaybackProvider(audio=audio, backend=self)

        self.uri_schemes = ['soundcloud', 'sc']


class SoundCloudPlaybackProvider(backend.PlaybackProvider):

    def play(self, track):

        track_id = self.backend.remote.parse_track_uri(track)
        track = self.backend.remote.get_track(track_id, True)
        if hasattr(track, 'uri'):
            return super(SoundCloudPlaybackProvider, self).play(track)
        else:
            return None
