import os
from typing import List
import random
-from music_assistant.utils import run_periodic, LOGGER, parse_track_title, try_parse_int
-from music_assistant.models import PlayerProvider, MusicPlayer, PlayerState, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
-from music_assistant.constants import CONF_ENABLED, CONF_HOSTNAME, CONF_PORT
+from utils import run_periodic, LOGGER, parse_track_title, try_parse_int
+from models import PlayerProvider, MusicPlayer, PlayerState, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
+from constants import CONF_ENABLED, CONF_HOSTNAME, CONF_PORT
import json
import aiohttp
import time
import hashlib
from asyncio_throttle import Throttler
from aiocometd import Client, ConnectionType, Extension
-from music_assistant.modules.cache import use_cache
+from modules.cache import use_cache
import copy
import slugify as slug
import asyncio
import os
-from music_assistant.utils import run_periodic, LOGGER
+from utils import run_periodic, LOGGER
import json
import aiohttp
from asyncio_throttle import Throttler
from difflib import SequenceMatcher as Matcher
-from music_assistant.modules.cache import use_cache
+from modules.cache import use_cache
from yarl import URL
import re
import asyncio
import os
-from music_assistant.utils import run_periodic, run_async_background_task, LOGGER, try_parse_int
+from utils import run_periodic, run_async_background_task, LOGGER, try_parse_int
import aiohttp
from difflib import SequenceMatcher as Matcher
-from music_assistant.models import MediaType, Track, Artist, Album, Playlist
+from models import MediaType, Track, Artist, Album, Playlist
from typing import List
import toolz
import operator
from typing import List
import sys
import time
-from music_assistant.utils import run_periodic, LOGGER, parse_track_title
-from music_assistant.models import MusicProvider, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
-from music_assistant.constants import CONF_ENABLED
+from utils import run_periodic, LOGGER, parse_track_title
+from models import MusicProvider, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
+from constants import CONF_ENABLED
import taglib
-from music_assistant.modules.cache import use_cache
+from modules.cache import use_cache
def setup(mass):
import asyncio
import os
from typing import List
-from music_assistant.utils import run_periodic, LOGGER, parse_track_title
-from music_assistant.models import MusicProvider, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
-from music_assistant.constants import CONF_USERNAME, CONF_PASSWORD, CONF_ENABLED
+from utils import run_periodic, LOGGER, parse_track_title
+from models import MusicProvider, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
+from constants import CONF_USERNAME, CONF_PASSWORD, CONF_ENABLED
import json
import aiohttp
import time
import datetime
import hashlib
from asyncio_throttle import Throttler
-from music_assistant.modules.cache import use_cache
+from modules.cache import use_cache
def setup(mass):
from typing import List
import sys
import time
-from music_assistant.utils import run_periodic, LOGGER, parse_track_title, run_background_task
-from music_assistant.models import MusicProvider, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
-from music_assistant.constants import CONF_USERNAME, CONF_PASSWORD, CONF_ENABLED
+from utils import run_periodic, LOGGER, parse_track_title, run_background_task
+from models import MusicProvider, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
+from constants import CONF_USERNAME, CONF_PASSWORD, CONF_ENABLED
from asyncio_throttle import Throttler
import json
import aiohttp
-from music_assistant.modules.cache import use_cache
+from modules.cache import use_cache
import concurrent
def setup(mass):
import asyncio
import os
-from music_assistant.utils import run_periodic, LOGGER, try_parse_int, try_parse_float, kill_proc
+from utils import run_periodic, LOGGER, try_parse_int, try_parse_float, kill_proc
import aiohttp
from difflib import SequenceMatcher as Matcher
-from music_assistant.models import MediaType, PlayerState, MusicPlayer
+from models import MediaType, PlayerState, MusicPlayer
from typing import List
import toolz
import operator
if player_details.is_group and player.settings['apply_group_power']:
await self.__update_player_group_power(player_details, player_childs)
# compare values to detect changes
- if player.cur_item.name != player_details.cur_item.name:
+ if player.cur_item and player_details.cur_item and player.cur_item.name != player_details.cur_item.name:
player_changed = True
player.cur_item = player_details.cur_item
for key, cur_value in player.__dict__.items():
from typing import List
import random
import sys
-from music_assistant.utils import run_periodic, run_background_task, LOGGER, parse_track_title, try_parse_int
-from music_assistant.models import PlayerProvider, MusicPlayer, PlayerState, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
-from music_assistant.constants import CONF_ENABLED, CONF_HOSTNAME, CONF_PORT
+from utils import run_periodic, run_background_task, LOGGER, parse_track_title, try_parse_int
+from models import PlayerProvider, MusicPlayer, PlayerState, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
+from constants import CONF_ENABLED, CONF_HOSTNAME, CONF_PORT
import json
import aiohttp
import time
import hashlib
from asyncio_throttle import Throttler
from aiocometd import Client, ConnectionType, Extension
-from music_assistant.modules.cache import use_cache
+from modules.cache import use_cache
import copy
import pychromecast
from pychromecast.controllers.multizone import MultizoneController
from typing import List
import random
import sys
-from music_assistant.utils import run_periodic, LOGGER, parse_track_title
-from music_assistant.models import PlayerProvider, MusicPlayer, PlayerState, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
-from music_assistant.constants import CONF_ENABLED, CONF_HOSTNAME, CONF_PORT
+from utils import run_periodic, LOGGER, parse_track_title
+from models import PlayerProvider, MusicPlayer, PlayerState, MediaType, TrackQuality, AlbumType, Artist, Album, Track, Playlist
+from constants import CONF_ENABLED, CONF_HOSTNAME, CONF_PORT
import json
import aiohttp
import time
import hashlib
from asyncio_throttle import Throttler
from aiocometd import Client, ConnectionType, Extension
-from music_assistant.modules.cache import use_cache
+from modules.cache import use_cache
import copy
def setup(mass):
import asyncio
import os
-from music_assistant.utils import run_periodic, LOGGER
+from utils import run_periodic, LOGGER
import json
import aiohttp
from aiohttp import web
-from music_assistant.models import MediaType, media_type_from_string
+from models import MediaType, media_type_from_string
from functools import partial
json_serializer = partial(json.dumps, default=lambda x: x.__dict__)
import ssl