from typing import List
import sys
import time
-from utils import run_periodic, LOGGER, parse_track_title, run_background_task
+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
from asyncio_throttle import Throttler
import asyncio
import os
-from 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, get_ip
import aiohttp
from difflib import SequenceMatcher as Matcher
from models import MediaType, PlayerState, MusicPlayer
self.providers = {}
self._players = {}
self.create_config_entries()
+ self.local_ip = get_ip()
# create needed temp/cache dirs
if not os.path.isdir(AUDIO_CACHE_DIR):
os.makedirs(AUDIO_CACHE_DIR)
''' generate the URL/URI for a media item '''
uri = ""
if http_stream:
- host = socket.gethostbyname(socket.gethostname())
- uri = 'http://%s:8095/stream/%s/%s'% (host, provider, item_id)
+ uri = 'http://%s:8095/stream/%s/%s'% (self.local_ip, provider, item_id)
elif provider == "spotify":
uri = 'spotify://spotify:track:%s' % item_id
elif provider == "qobuz":
import asyncio
import logging
from concurrent.futures import ThreadPoolExecutor
+import socket
logformat = logging.Formatter('%(asctime)-15s %(levelname)-5s %(name)s.%(module)s -- %(message)s')
consolehandler = logging.StreamHandler()
consolehandler.setFormatter(logformat)
version = version.strip().title()
return title, version
-async def kill_proc(proc):
- proc.kill()
- await proc.communicate()
\ No newline at end of file
+def get_ip():
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ try:
+ # doesn't even have to be reachable
+ s.connect(('10.255.255.255', 1))
+ IP = s.getsockname()[0]
+ except:
+ IP = '127.0.0.1'
+ finally:
+ s.close()
+ return IP
\ No newline at end of file