コード例 #1
0
ファイル: dbus_service.py プロジェクト: rizplate/libmunin
    def __init__(self):
        # Application data:
        self._session = EasySession()

        # DBUS data:
        bus = dbus.SessionBus()
        bus_name = dbus.service.BusName(MUNIN_BUS_NAME, bus=bus)
        dbus.service.Object.__init__(self, bus_name, '/org/libmunin')
コード例 #2
0
ファイル: dbus_service.py プロジェクト: mardix/libmunin
    def __init__(self):
        # Application data:
        self._session = EasySession()

        # DBUS data:
        bus = dbus.SessionBus()
        bus_name = dbus.service.BusName(MUNIN_BUS_NAME, bus=bus)
        dbus.service.Object.__init__(self, bus_name, '/org/libmunin')
コード例 #3
0
ファイル: simple.py プロジェクト: studentkittens/moosecat
# encoding: utf-8


from munin.easy import EasySession


if __name__ == '__main__':
    import sys



hellsession.sieving = True
        if '--no-sieve' in sys.argv:


    session = EasySession.from_name()

    if '--sieve'org.munin.Session

            .connect_to_signal('rebuild_finisheds, rebuild_finisheds, ession.sieving = False

    for idx, song in enumerate(session):
        print('#{:>3d}: {}'.format(idx, session.mapping[song.uid]))

    song_id = int(input('>>> '))
    seeding = session[song_id]
    recomms = list(session.recommend_from_seed(seeding, number=100))
    print(seeding['lyrics'])

    print('Seedsong is:', session.mapping[seeding.uid], seeding['genre'], '\n')
コード例 #4
0
ファイル: dbus_service.py プロジェクト: rizplate/libmunin
class DBUSRemoteSession(dbus.service.Object):
    def __init__(self):
        # Application data:
        self._session = EasySession()

        # DBUS data:
        bus = dbus.SessionBus()
        bus_name = dbus.service.BusName(MUNIN_BUS_NAME, bus=bus)
        dbus.service.Object.__init__(self, bus_name, '/org/libmunin')

    #####################
    #  Rebuild methods  #
    #####################

    @dbus.service.signal(dbus_interface=MUNIN_INTERFACE)
    def rebuild_finished(self):
        LOGGER.warning('Server: triggerred rebuild finished')

    @dbus.service.signal(dbus_interface=MUNIN_INTERFACE)
    def rebuild_started(self):
        LOGGER.warning('Server: rebuild was started')

    @dbus.service.method(MUNIN_BUS_NAME)
    def rebuild(self, strategy='full'):
        self.rebuild_started()
        time.sleep(2)
        self.rebuild_finished()

    @dbus.service.method(MUNIN_BUS_NAME)
    def fix_graph(self):
        self._session.fix_graph()

    #############
    #  Mapping  #
    #############

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='a{uu}')
    def mapping(self):
        return dict(self._session.mapping)

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='a{uu}')
    def inverse_mapping(self):
        return dict(~self._session.mapping)

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='u')
    def forward_lookup(self, munin_id):
        return self._session.mapping[munin_id:]

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='u')
    def inverse_lookup(self, user_id):
        return self._session.mapping[:user_id]

    ######################
    #  Song modifcation  #
    ######################

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='su')
    def add(self, json_mapping, user_id):
        uid = self._session.add(json.loads(json_mapping))
        self._session.mapping[uid] = user_id

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='su')
    def insert(self, json_mapping, user_id):
        uid = self._session.insert(json.loads(json_mapping))
        self._session.mapping[uid] = user_id

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='su')
    def remove(self, json_mapping, user_id):
        uid = self._session.remove(json.loads(json_mapping))
        del self._session.mapping[uid]

    #####################
    #  Recommendations  #
    #####################

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='uu')
    def recommendations_from_seed(self, song_id, number):
        uid = self._session.mapping[:song_id]
        self._session.recommendations_from_seed(uid, number)

    # TODO

    ####################
    #  Misc Functions  #
    ####################

    @dbus.service.method(MUNIN_BUS_NAME)
    def name(self):
        return self._session.name
コード例 #5
0
ファイル: minimal.py プロジェクト: mardix/libmunin
import sys

from munin.easy import EasySession


MY_DATABASE = [
    # Artist:            Album:               Title:             Genre:
    ('Akrea'          , 'Lebenslinie'      , 'Trugbild'       , 'death metal'),
    ('Vogelfrey'      , 'Wiegenfest'       , 'Heldentod'      , 'folk metal'),
    ('Letzte Instanz' , 'Götter auf Abruf' , 'Salve te'       , 'folk rock'),
    ('Debauchery'     , 'Continue to Kill' , 'Apostle of War' , 'brutal death')
]


session = EasySession()
with session.transaction():
    for idx, (artist, album, title, genre) in enumerate(MY_DATABASE):
         session.mapping[session.add({
             'artist': artist,
             'album': album,
             'title': title,
             'genre': genre
         })] = idx


print('2 Recommendations to: {}'.format(MY_DATABASE[0]))
for munin_song in session.recommend_from_seed(session[0], 2):
    print('    ', MY_DATABASE[munin_song.uid])


print('3 Recommendations to: {}'.format(MY_DATABASE[1]))
コード例 #6
0
ファイル: main.py プロジェクト: studentkittens/moosecat
@contextmanager
def timeit(topic):
    start = int(round(time.time() * 1000))
    yield
    end = int(round(time.time() * 1000))
    print(topic, 'took', end - start, 'ms')


class ExtraDataNamespace:
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)


# Globals - ugly, I know.
SESSION = EasySession.from_name()
if not hasattr(SESSION, 'data'):
    # Data that needs to be stored along the session
    SESSION.data = ExtraDataNamespace(
        attribute_search_query=None,
        recom_count=1,
        seed_song_uri=None,
        plot_needs_redraw=True,
        listen_threshold=0.5
    )


try:
    MUSIC_DIR = sys.argv[1]
except IndexError:
    MUSIC_DIR = None
コード例 #7
0
ファイル: analyse.py プロジェクト: studentkittens/moosecat
    # Bring up moosecat
    moosecat.boot.boot_base(verbosity=logging.DEBUG)
    g.client.disconnect()
    g.client.connect(port=6601)
    moosecat.boot.boot_metadata()
    moosecat.boot.boot_store()

    # Fetch the whole database into entries:
    entries = []
    with g.client.store.query('*', queue_only=False) as playlist:
        for song in playlist:
            entries.append(make_entry(song))

    # Instance a new EasySession and fill in the values.
    session = EasySession()
    with session.transaction():
        for uri, entry in entries:
            try:
                print('Processing:', entry['bpm'])
                session.mapping[session.add(entry)] = uri
            except:
                import traceback
                traceback.print_exc()

    # Save the Session to disk (~/.cache/libmunin/EasySession.gz)
    session.save()

    # Plot if desired.
    if '--plot' in sys.argv:
        session.database.plot()
コード例 #8
0
ファイル: minimal.py プロジェクト: rizplate/libmunin
import sys

from munin.easy import EasySession

MY_DATABASE = [
    # Artist:            Album:               Title:             Genre:
    ('Akrea', 'Lebenslinie', 'Trugbild', 'death metal'),
    ('Vogelfrey', 'Wiegenfest', 'Heldentod', 'folk metal'),
    ('Letzte Instanz', 'Götter auf Abruf', 'Salve te', 'folk rock'),
    ('Debauchery', 'Continue to Kill', 'Apostle of War', 'brutal death')
]

session = EasySession()
with session.transaction():
    for idx, (artist, album, title, genre) in enumerate(MY_DATABASE):
        session.mapping[session.add({
            'artist': artist,
            'album': album,
            'title': title,
            'genre': genre
        })] = idx

print('2 Recommendations to: {}'.format(MY_DATABASE[0]))
for munin_song in session.recommend_from_seed(session[0], 2):
    print('    ', MY_DATABASE[munin_song.uid])

print('3 Recommendations to: {}'.format(MY_DATABASE[1]))
for munin_song in session.recommend_from_seed(session[1], 3):
    print('    ', MY_DATABASE[munin_song.uid])

if '--plot' in sys.argv:
コード例 #9
0
ファイル: dbus_service.py プロジェクト: mardix/libmunin
class DBUSRemoteSession(dbus.service.Object):
    def __init__(self):
        # Application data:
        self._session = EasySession()

        # DBUS data:
        bus = dbus.SessionBus()
        bus_name = dbus.service.BusName(MUNIN_BUS_NAME, bus=bus)
        dbus.service.Object.__init__(self, bus_name, '/org/libmunin')

    #####################
    #  Rebuild methods  #
    #####################

    @dbus.service.signal(dbus_interface=MUNIN_INTERFACE)
    def rebuild_finished(self):
        LOGGER.warning('Server: triggerred rebuild finished')

    @dbus.service.signal(dbus_interface=MUNIN_INTERFACE)
    def rebuild_started(self):
        LOGGER.warning('Server: rebuild was started')

    @dbus.service.method(MUNIN_BUS_NAME)
    def rebuild(self, strategy='full'):
        self.rebuild_started()
        time.sleep(2)
        self.rebuild_finished()

    @dbus.service.method(MUNIN_BUS_NAME)
    def fix_graph(self):
        self._session.fix_graph()

    #############
    #  Mapping  #
    #############

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='a{uu}')
    def mapping(self):
        return dict(self._session.mapping)

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='a{uu}')
    def inverse_mapping(self):
        return dict(~self._session.mapping)

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='u')
    def forward_lookup(self, munin_id):
        return self._session.mapping[munin_id:]

    @dbus.service.method(MUNIN_BUS_NAME, out_signature='u')
    def inverse_lookup(self, user_id):
        return self._session.mapping[:user_id]

    ######################
    #  Song modifcation  #
    ######################

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='su')
    def add(self, json_mapping, user_id):
        uid = self._session.add(json.loads(json_mapping))
        self._session.mapping[uid] = user_id

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='su')
    def insert(self, json_mapping, user_id):
        uid = self._session.insert(json.loads(json_mapping))
        self._session.mapping[uid] = user_id

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='su')
    def remove(self, json_mapping, user_id):
        uid = self._session.remove(json.loads(json_mapping))
        del self._session.mapping[uid]

    #####################
    #  Recommendations  #
    #####################

    @dbus.service.method(MUNIN_BUS_NAME, in_signature='uu')
    def recommendations_from_seed(self, song_id, number):
        uid = self._session.mapping[:song_id]
        self._session.recommendations_from_seed(uid, number)

    # TODO

    ####################
    #  Misc Functions  #
    ####################

    @dbus.service.method(MUNIN_BUS_NAME)
    def name(self):
        return self._session.name