mirror of
https://github.com/beetbox/beets.git
synced 2026-01-03 06:22:48 +01:00
commit
f3630a3210
4 changed files with 73 additions and 1 deletions
48
beetsplug/sonosupdate.py
Normal file
48
beetsplug/sonosupdate.py
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of beets.
|
||||
# Copyright 2018, Tobias Sauerwein.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
# "Software"), to deal in the Software without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||
# permit persons to whom the Software is furnished to do so, subject to
|
||||
# the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
|
||||
"""Updates a Sonos library whenever the beets library is changed.
|
||||
This is based on the Kodi Update plugin.
|
||||
"""
|
||||
from __future__ import division, absolute_import, print_function
|
||||
|
||||
from beets.plugins import BeetsPlugin
|
||||
import soco
|
||||
|
||||
|
||||
class SonosUpdate(BeetsPlugin):
|
||||
def __init__(self):
|
||||
super(SonosUpdate, self).__init__()
|
||||
self.register_listener('database_change', self.listen_for_db_change)
|
||||
|
||||
def listen_for_db_change(self, lib, model):
|
||||
"""Listens for beets db change and register the update"""
|
||||
self.register_listener('cli_exit', self.update)
|
||||
|
||||
def update(self, lib):
|
||||
"""When the client exists try to send refresh request to a Sonos
|
||||
controler.
|
||||
"""
|
||||
self._log.info(u'Requesting a Sonos library update...')
|
||||
|
||||
device = soco.discovery.any_soco()
|
||||
|
||||
if device:
|
||||
device.music_library.start_library_update()
|
||||
else:
|
||||
self._log.warning(u'Could not find a Sonos device.')
|
||||
return
|
||||
|
||||
self._log.info(u'Sonos update triggered')
|
||||
|
|
@ -21,6 +21,9 @@ New features:
|
|||
* A new importer configuration ``artist_credit`` will tell beets to prefer the
|
||||
artist credit over the artist when autotagging.
|
||||
:bug:`1249`
|
||||
* A new interoperability plugin to automatically notify Sonos controllers to
|
||||
update the music library once the beets library got updated.
|
||||
Thanks to :user:`cgtobi`.
|
||||
|
||||
|
||||
Fixes:
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ like this::
|
|||
rewrite
|
||||
scrub
|
||||
smartplaylist
|
||||
sonosupdate
|
||||
spotify
|
||||
the
|
||||
thumbnails
|
||||
|
|
@ -159,12 +160,15 @@ Interoperability
|
|||
* :doc:`plexupdate`: Automatically notifies `Plex`_ whenever the beets library
|
||||
changes.
|
||||
* :doc:`smartplaylist`: Generate smart playlists based on beets queries.
|
||||
* :doc:`sonosupdate`: Automatically notifies `Sonos`_ whenever the beets library
|
||||
changes.
|
||||
* :doc:`thumbnails`: Get thumbnails with the cover art on your album folders.
|
||||
|
||||
|
||||
.. _Emby: http://emby.media
|
||||
.. _Plex: http://plex.tv
|
||||
.. _Kodi: http://kodi.tv
|
||||
.. _Sonos: http://sonos.com
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
|
@ -262,4 +266,3 @@ Here are a few of the plugins written by the beets community:
|
|||
.. _whatlastgenre: https://github.com/YetAnotherNerd/whatlastgenre/tree/master/plugin/beets
|
||||
.. _beets-usertag: https://github.com/igordertigor/beets-usertag
|
||||
.. _beets-popularity: https://github.com/abba23/beets-popularity
|
||||
|
||||
|
|
|
|||
18
docs/plugins/sonosupdate.rst
Normal file
18
docs/plugins/sonosupdate.rst
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
SonosUpdate Plugin
|
||||
==================
|
||||
|
||||
The ``sonosupdate`` plugin lets you automatically update `Sonos`_'s music
|
||||
library whenever you change your beets library.
|
||||
|
||||
To use ``sonosupdate`` plugin, enable it in your configuration
|
||||
(see :ref:`using-plugins`).
|
||||
|
||||
To use the ``sonosupdate`` plugin you need to install the `soco`_ library with::
|
||||
|
||||
pip install soco
|
||||
|
||||
With that all in place, you'll see beets send the "update" command to your Sonos
|
||||
controller every time you change your beets library.
|
||||
|
||||
.. _Sonos: http://sonos.com/
|
||||
.. _soco: http://python-soco.com
|
||||
Loading…
Reference in a new issue