Registry / http-networking / syncedlyrics

syncedlyrics

JSON →
library1.0.1pypypi✓ verified 84d ago

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.

pip install syncedlyrics
INSTALL
IMPORT
SIG · SYNCEDLYRICS
S
syncedlyrics
http-networkingpythonv1.0.1
Install
3.2s avg
Import
921ms
Disk
35MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.0.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.956s · 38.3MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 3.2s · import 0.886s · 35MB
35MB installed
● package 35MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

search
from syncedlyrics import search
import syncedlyrics
The main function is `search`. Importing the module directly and calling `syncedlyrics.search(...)` also works, but the idiomatic way is to import `search` directly.
LRCFile
from syncedlyrics import LRCFile
LRCFile is a dataclass for parsed LRC content. Available since v0.4.0.

Fetch synchronized lyrics for a song. Returns LRC-formatted string or None. For translations, use `lrc = search('...', lang='fr')`.

from syncedlyrics import search lrc = search('Kiss Me Until My Lips Fall Off') if lrc: print(lrc[:200]) else: print('No lyrics found')
syncedlyrics --version
Debug
Known issues
breakingIn 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.
fix
If you rely on plain lyrics falling back, update calls to include `allow_plain=True`.
affects: >=1.0.0
breakingIn 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.
fix
No action required unless you were dependent on the old ordering; use `providers` parameter to restrict providers if needed.
affects: >=1.0.0
gotchaMusixmatch provider may return empty results or raise exceptions if API limits are hit. The library catches HTTP errors but may return None silently.
fix
Always check if the returned value is None before processing. Consider implementing retries with exponential backoff if you see frequent failures.
affects: all
deprecatedPython 3.7 support was dropped in v0.7.0.
fix
Upgrade Python to >=3.8.
affects: <0.7.0
Errors
Common errors & fixes
AttributeError: 'NoneType' object has no attribute 'strip'
A provider returned None for a lyrics segment, and the library tried to strip it.
fix
Upgrade to syncedlyrics >=0.7.0 which fixes this bug. Alternatively, ensure the search term is correct.
ModuleNotFoundError: No module named 'syncedlyrics'
The package is not installed.
fix
Run `pip install syncedlyrics`.
Upgrade
Version history
1.0.1latest on PyPI · released Jul 28, 2024
Audit
Dependencies
rapidfuzzrequiredUsed for fuzzy matching search results to find best match.
requestsrequiredHTTP requests to lyrics providers.
Agent activity
72 hits · last 30 days
node
62
Perplexity
1
OpenAI (training)
1
Resources
syncedlyrics — pip install syncedlyrics · libregistry