{"id":24678,"library":"syncedlyrics","title":"syncedlyrics","description":"A Python library and CLI tool to fetch synchronized lyrics in LRC format from multiple providers (Musixmatch, Deezer, Genius, Lrclib, NetEase). Version 1.0.1, supports Python >=3.8. Active development with monthly releases.","status":"active","version":"1.0.1","language":"python","source_language":"en","source_url":"https://github.com/rtcq/syncedlyrics","tags":["lyrics","lrc","synchronized","music","cli"],"install":[{"cmd":"pip install syncedlyrics","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Used for fuzzy matching search results to find best match.","package":"rapidfuzz","optional":false},{"reason":"HTTP requests to lyrics providers.","package":"requests","optional":false}],"imports":[{"note":"The main function is `search`. Importing the module directly and calling `syncedlyrics.search(...)` also works, but the idiomatic way is to import `search` directly.","wrong":"import syncedlyrics","symbol":"search","correct":"from syncedlyrics import search"},{"note":"LRCFile is a dataclass for parsed LRC content. Available since v0.4.0.","wrong":null,"symbol":"LRCFile","correct":"from syncedlyrics import LRCFile"}],"quickstart":{"code":"from syncedlyrics import search\n\nlrc = search('Kiss Me Until My Lips Fall Off')\nif lrc:\n    print(lrc[:200])\nelse:\n    print('No lyrics found')","lang":"python","description":"Fetch synchronized lyrics for a song. Returns LRC-formatted string or None. For translations, use `lrc = search('...', lang='fr')`."},"warnings":[{"fix":"If you rely on plain lyrics falling back, update calls to include `allow_plain=True`.","message":"In v1.0.0, the default behavior changed: `allow_plain` parameter now defaults to `False` (previously `True`). Previously, if no synced lyrics were found, plain (unsynced) lyrics would be returned. Now you must explicitly set `allow_plain=True` to get plain lyrics.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"No action required unless you were dependent on the old ordering; use `providers` parameter to restrict providers if needed.","message":"In v1.0.0, the search function now returns the best match from all providers instead of the first synced result. This may change the returned lyrics for songs with multiple matches.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Always check if the returned value is None before processing. Consider implementing retries with exponential backoff if you see frequent failures.","message":"Musixmatch provider may return empty results or raise exceptions if API limits are hit. The library catches HTTP errors but may return None silently.","severity":"gotcha","affected_versions":"all"},{"fix":"Upgrade Python to >=3.8.","message":"Python 3.7 support was dropped in v0.7.0.","severity":"deprecated","affected_versions":"<0.7.0"}],"env_vars":null,"search_vec":"'1.0.1':24 '3.8':27 'activ':28 'cli':6,37 'deezer':19 'develop':29 'fetch':9 'format':14 'genius':20 'librari':4 'lrc':13,34 'lrclib':21 'lyric':11,33 'month':31 'multipl':16 'music':36 'musixmatch':18 'neteas':22 'provid':17 'python':3,26 'releas':32 'support':25 'syncedlyr':1 'synchron':10,35 'tool':7 'version':23","created_at":"2026-05-01T08:14:21.424391+00:00","updated_at":"2026-05-01T08:14:21.424391+00:00","problems":[{"fix":"Upgrade to syncedlyrics >=0.7.0 which fixes this bug. Alternatively, ensure the search term is correct.","cause":"A provider returned None for a lyrics segment, and the library tried to strip it.","error":"AttributeError: 'NoneType' object has no attribute 'strip'"},{"fix":"Run `pip install syncedlyrics`.","cause":"The package is not installed.","error":"ModuleNotFoundError: No module named 'syncedlyrics'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.0.1","cli_name":"syncedlyrics","cli_version":"usage: syncedlyrics [-h]","type":"library","homepage":null,"github":"https://github.com/rtcq/syncedlyrics","docs":null,"changelog":null,"pypi":"https://pypi.org/project/syncedlyrics/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["http-networking","data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-29","install_tag":null}}