{"id":19754954,"url":"https://github.com/mopidy/mopidy-local","last_synced_at":"2025-05-16T04:05:58.558Z","repository":{"id":35047752,"uuid":"200478549","full_name":"mopidy/mopidy-local","owner":"mopidy","description":"Mopidy extension for playing music from your local music archive","archived":false,"fork":false,"pushed_at":"2025-03-04T23:47:36.000Z","size":205,"stargazers_count":66,"open_issues_count":26,"forks_count":29,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-08T15:04:15.071Z","etag":null,"topics":["mopidy","mopidy-backend","python"],"latest_commit_sha":null,"homepage":"https://mopidy.com/ext/local/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mopidy.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-04T10:22:50.000Z","updated_at":"2025-03-04T23:47:39.000Z","dependencies_parsed_at":"2024-06-19T17:40:34.586Z","dependency_job_id":"0e7051c8-a6e1-4524-8944-d2849206160d","html_url":"https://github.com/mopidy/mopidy-local","commit_stats":{"total_commits":110,"total_committers":14,"mean_commits":7.857142857142857,"dds":0.4181818181818182,"last_synced_commit":"179bb05779acaf17b09f9249da700052a9246363"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mopidy%2Fmopidy-local","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mopidy%2Fmopidy-local/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mopidy%2Fmopidy-local/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mopidy%2Fmopidy-local/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mopidy","download_url":"https://codeload.github.com/mopidy/mopidy-local/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464895,"owners_count":22075570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mopidy","mopidy-backend","python"],"created_at":"2024-11-12T03:06:58.401Z","updated_at":"2025-05-16T04:05:58.396Z","avatar_url":"https://github.com/mopidy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"************\nMopidy-Local\n************\n\n.. image:: https://img.shields.io/pypi/v/Mopidy-Local\n    :target: https://pypi.org/project/Mopidy-Local/\n    :alt: Latest PyPI version\n\n.. image:: https://img.shields.io/github/actions/workflow/status/mopidy/mopidy-local/ci.yml?branch=main\n    :target: https://github.com/mopidy/mopidy-local/actions\n    :alt: CI build status\n\n.. image:: https://img.shields.io/codecov/c/gh/mopidy/mopidy-local\n    :target: https://codecov.io/gh/mopidy/mopidy-local\n    :alt: Test coverage\n\n`Mopidy`_ extension for playing music from your local music archive.\n\n.. _Mopidy: https://www.mopidy.com/\n\n\nTable of contents\n=================\n\n- `Maintainer wanted`_\n- Installation_\n- Configuration_\n- Usage_\n\n  - `Generating a library`_\n  - `Updating the library`_\n  - `Clearing the library`_\n  - `Library layout`_\n\n- `Project resources`_\n- Credits_\n\n\nMaintainer wanted\n=================\n\nMopidy-Local is currently kept on life support by the Mopidy core\ndevelopers. It is in need of a more dedicated maintainer.\n\nIf you want to be the maintainer of Mopidy-Local, please:\n\n1. Make 2-3 good pull requests improving any part of the project.\n\n2. Read and get familiar with all of the project's open issues.\n\n3. Send a pull request removing this section and adding yourself as the\n   \"Current maintainer\" in the \"Credits\" section below. In the pull request\n   description, please refer to the previous pull requests and state that\n   you've familiarized yourself with the open issues.\n\n   As a maintainer, you'll be given push access to the repo and the authority to\n   make releases to PyPI when you see fit.\n\n\nInstallation\n============\n\nInstall by running::\n\n    sudo python3 -m pip install Mopidy-Local\n\nSee https://mopidy.com/ext/local/ for alternative installation methods.\n\n\nConfiguration\n=============\n\nBefore starting Mopidy, you must add configuration for\nMopidy-Local to your Mopidy configuration file::\n\n    [local]\n    media_dir = /path/to/your/music/archive\n\nThe following configuration values are available:\n\n- ``local/enabled``: If the local extension should be enabled or not.\n  Defaults to ``true``.\n\n- ``local/media_dir``: Path to directory with local media files.\n\n- ``local/max_search_results``: Number of search results that should be returned. Default is 100.\n\n- ``local/scan_timeout``: Number of milliseconds before giving up scanning a\n  file and moving on to the next file.\n\n- ``local/scan_follow_symlinks``: If we should follow symlinks found in\n  ``local/media_dir``.\n\n- ``local/scan_flush_threshold``: Number of tracks to wait before telling\n  library it should try and store its progress so far. Some libraries might not\n  respect this setting. Set this to zero to disable flushing.\n\n- ``local/included_file_extensions``: File extensions to include when scanning\n  the media directory. Values should be separated by either comma or newline.\n  Each file extension should start with a dot, .e.g. ``.flac``. Setting any\n  values here will override the existence of ``local/excluded_file_extensions``.\n\n- ``local/excluded_file_extensions``: File extensions to exclude when scanning\n  the media directory. Values should be separated by either comma or newline.\n  Each file extension should start with a dot, .e.g. ``.html``. Defaults to a\n  list of common non-audio file extensions often found in music collections.\n  This config value has no effect if ``local/included_file_extensions`` is set.\n\n- ``local/directories``: List of top-level directory names and URIs\n  for browsing. See below.\n\n- ``local/timeout``: Database connection timeout in seconds.\n\n- ``local/use_artist_sortname``: Whether to use the sortname field for\n  ordering artist browse results. Disabled by default, since this may\n  give confusing results if not all artists in the library have proper\n  sortnames.\n\n- ``local/album_art_files``: List of file names to check for when searching\n  for external album art. These may contain UNIX shell patterns,\n  i.e. ``*``, ``?``, etc.\n\n\nUsage\n=====\n\n\nGenerating a library\n--------------------\n\nThe command ``mopidy local scan`` will scan the path set in the\n``local/media_dir`` config value for any audio files and build a\nlibrary of metadata.\n\nTo make a local library for your music available for Mopidy:\n\n#. Ensure that the ``local/media_dir`` config value points to where your\n   music is located. Check the current setting by running::\n\n    mopidy config\n\n#. Scan your media library.::\n\n    mopidy local scan\n\n#. Start Mopidy, find the music library in a client, and play some local music!\n\n\nUpdating the library\n--------------------\n\nWhen you've added or removed music in your collection and want to update\nMopidy's index of your local library, you need to rescan::\n\n    mopidy local scan\n\nOptions can be specified to control the behavior of the scan command:\n\n- ``--force`` Force rescan of all media files\n- ``--limit \u003cnumber\u003e`` Maximum number of tracks to scan\n\nExample::\n\n    mopidy local scan --limit 50\n\n\nClearing the library\n--------------------\n\nTo delete your local images and clear your local library::\n\n    mopidy local clear\n\nA prompt will ask you to confirm this irreversible operation.\n\n\nLibrary layout\n--------------\n\nThe exposed library has a root directory and nine top-level directories defined\nunder the root directory:\n\n- Albums\n- Artists\n- Composers\n- Genres\n- Performers\n- Release Years\n- Tracks\n- Last Week's Updates\n- Last Month's Updates\n\nThis can be configured through the ``directories`` setting. It's expected to be a\nlist of space separated name and URI supported for browsing, eg::\n\n  directories =\n      Albums                  local:directory?type=album\n      Artists                 local:directory?type=artist\n      Composers               local:directory?type=artist\u0026role=composer\n      Tracks                  local:directory?type=track\n      Last Week's Updates     local:directory?max-age=604800\n\nURIs supported for browsing\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n*Remember that URIs are opaque values that neither Mopidy’s core layer or Mopidy\nfrontends should attempt to derive any meaning from.* That said, it's necessary\nto have a sufficient knowledge of Mopidy-Local URIs to customize the\n``directories`` setting properly.\n\nBrowsing URIs starting with ``local:artist`` returns references to\nalbums and tracks with the given artist. Browsing URIs starting with\n``local:album`` returns references to the album tracks. Browsing URIs\nstarting with ``local:track`` is not supported.\n\nOther URIs supported for browsing start with ``local:directory``. The returned\nreferences are specified through \"query parameters\":\n\n- ``local:directory``: References to the top levels directories.\n\n- ``local:directory?type=tracks``: References all tracks. Multiple\n  parameters can be added to filter the referenced tracks: ``album``,\n  ``albumartist``, ``artist``, ``composer``, ``date``, ``genre``,\n  ``performer``, and ``max-age``.\n\n- ``local:directory?type=date``: References to directories grouping tracks by\n  date and album. Dates are transformed according to the optional parameter\n  ``FORMAT`` which default to ``%Y-%m-%d``. The URIs of the references start\n  with ``local:directory?date=``.\n\n- ``local:directory?type=genre``: References to directories named after genres\n  found among all tracks. Their URIs start with ``local:directory?genre=``.\n\n- ``local:directory?type=album``: References to all albums.\n\n- ``local:directory?type=album\u0026PARAM=VALUE``: References to\n  directories grouping tracks matching the given criteria.  ``PARAM``\n  must be one of ``albumartist``, ``artist``, ``composer``, ``date``,\n  ``genre``, ``performer``, ``max-age``. The referenced directories\n  group the selected tracks by album; Their URIs start with\n  ``local:directory?PARAM=VALUE\u0026type=track\u0026album=local:album:``.\n\n- ``local:directory?type=artist``: References to all artists.\n\n- ``local:directory?type=artist\u0026role=ROLE``: References to directories with URIs\n  ``local:directory?ROLE=URI`` where ``URI`` varies among all URIs starting with\n  ``local:artist`` build from all tracks tag corresponding to ``ROLE``. ``ROLE``\n  is one of ``albumartist``, ``artist``, ``composer``, or ``performer``.\n\n- ``local:directory?album=URI``: A reference to a directory grouping the tracks\n  of the album with given URI. Its URI starts with\n  ``local:directory?album=URI\u0026type=track``.\n\n- ``local:directory?albumartist=URI``: References to directories\n  grouping tracks whose albumartist tag has given URI. The referenced\n  directories group the selected tracks by album; Their URIs start\n  with\n  ``local:directory?albumartist=URI\u0026type=track\u0026album=local:album:``.\n\n- ``local:directory?artist=URI``: References to directories grouping\n  tracks whose artist has given URI. The referenced directories group\n  the selected tracks by album; Their URIs start with\n  ``local:directory?artist=URI\u0026type=track\u0026album=local:album:``.\n\n- ``local:directory?composer=URI``: References to directories grouping\n  tracks whose composer has given URI. The referenced directories\n  group the selected tracks by album; Their URIs start with\n  ``local:directory?composer=URI\u0026type=track\u0026album=local:album:``.\n\n- ``local:directory?date=DATE``: References to directories grouping\n  tracks whose date match DATE. The referenced directories group the\n  selected tracks by album; Their URIs start with\n  ``local:directory?date=DATE\u0026type=track\u0026album=local:album:``. The\n  match is to be interpreted as in a ``LIKE`` SQL statement.\n\n- ``local:directory?genre=GENRE``: References to directories grouping\n  tracks whose genre is GENRE. The referenced directories group the\n  selected tracks by album; Their URIs start with\n  ``local:directory?genre=GENRE\u0026type=track\u0026album=local:album:``.\n\n- ``local:directory?performer=URI``: References to directories\n  grouping tracks whose performer has given URI. The referenced\n  directories group the selected tracks by album; Their URIs start\n  with\n  ``local:directory?performer=URI\u0026type=track\u0026album=local:album:``.\n\n- ``local:directory?max-age=SECONDS``: References to directories\n  grouping tracks whose \"last modified\" date is newer than SECONDS\n  seconds. The referenced directories group the selected tracks by\n  album; Their URIs start with\n  ``local:directory?max-age=SECONDS\u0026type=track\u0026album=local:album:``.\n\nProject resources\n=================\n\n- `Source code \u003chttps://github.com/mopidy/mopidy-local\u003e`_\n- `Issue tracker \u003chttps://github.com/mopidy/mopidy-local/issues\u003e`_\n- `Changelog \u003chttps://github.com/mopidy/mopidy-local/releases\u003e`_\n\n\nCredits\n=======\n\n- Original authors:\n  `Stein Magnus Jodal \u003chttps://github.com/jodal\u003e`__ and\n  `Thomas Adamcik \u003chttps://github.com/adamcik\u003e`__ for the Mopidy-Local extension in Mopidy core.\n  `Thomas Kemmer \u003chttps://github.com/tkem\u003e`__ for the SQLite storage and support for embedded album art.\n- Current maintainer: None. Maintainer wanted, see section above.\n- `Contributors \u003chttps://github.com/mopidy/mopidy-local/graphs/contributors\u003e`_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmopidy%2Fmopidy-local","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmopidy%2Fmopidy-local","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmopidy%2Fmopidy-local/lists"}