WORKDIR /usr/src/app
COPY music_assistant /usr/src/app
RUN chmod a+x /usr/src/app/main.py
-RUN pip install --upgrade requirements.txt
+RUN pip install --upgrade -r requirements.txt
VOLUME ["/data"]
_busy_tasks = []
_database = None
- def __init__(self):
+ def __init__(self, datapath):
'''Initialize our caching class'''
+ self._datapath = datapath
asyncio.ensure_future(self._do_cleanup())
LOGGER.debug("Initialized")
def _get_database(self):
'''get reference to our sqllite _database - performs basic integrity check'''
- dbfile = "/tmp/simplecache.db"
+ dbfile = os.path.join(self._datapath, "simplecache.db")
try:
connection = sqlite3.connect(dbfile, timeout=30, isolation_level=None)
connection.execute('SELECT * FROM simplecache LIMIT 1')
from typing import List
import aiosqlite
-DBFILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),"database.db")
-
class Database():
- def __init__(self, event_loop, dbfile=DBFILE):
+ def __init__(self, datapath, event_loop):
self.event_loop = event_loop
- self.dbfile = dbfile
+ self.dbfile = os.path.join(datapath, "database.db")
self.db_ready = False
event_loop.run_until_complete(self.__init_database())
signal.signal(signal.SIGTERM, self.stop)
# init database and metadata modules
- self.db = Database(self.event_loop)
+ self.db = Database(datapath, self.event_loop)
# allow some time for the database to initialize
while not self.db.db_ready:
time.sleep(0.5)
- self.cache = Cache()
+ self.cache = Cache(datapath)
self.metadata = MetaData(self.event_loop, self.db, self.cache)
self.music = Music(self)
self.player = Player(self)
def config_entries():
''' get the config entries for this provider (list with key/value pairs)'''
return [
- (CONF_ENABLED, True, CONF_ENABLED),
+ (CONF_ENABLED, False, CONF_ENABLED),
(CONF_HOSTNAME, 'localhost', CONF_HOSTNAME),
(CONF_PORT, 9000, CONF_PORT)
]
prov_item_id = prov_mapping['item_id']
prov_obj = self.providers[prov_id]
items += await prov_obj.album_tracks(prov_item_id)
+ if items:
+ break # no need to pull in dups
items = list(toolz.unique(items, key=operator.attrgetter('item_id')))
return items
prov_item_id = prov_mapping['item_id']
prov_obj = self.providers[prov_id]
items += await prov_obj.playlist_tracks(prov_item_id, offset=offset, limit=limit)
+ if items:
+ break
items = list(toolz.unique(items, key=operator.attrgetter('item_id')))
return items
uvloop
slugify
asyncio_throttle
-aiocometd
\ No newline at end of file
+aiocometd
+aiosqlite
+pytaglib
\ No newline at end of file