PyGEMASearch is a Python package for searching songs in the GEMA database using the public API.
pip install git+https://github.com/DonMikone/PyGEMASearch.gitfrom gemasearch import GemaMusicSearch
gema_search = GemaMusicSearch()
result = gema_search.search("Bohemian Rhapsody")
print(result)GemaMusicSearch provides an interface to search for musical works in the GEMA database.
from gemasearch import GemaMusicSearch
gema_search = GemaMusicSearch()results = gema_search.search("Bohemian Rhapsody")
for werk in results:
print(werk.titel)def search(self, search_string: str, page: int = 0, page_size: int = 50, fuzzy_search=True):- search_string (str): The title or name of any or multiple composers/authors of the work to search for.
- page (int): The page number of the results (default is
0). - page_size (int): Number of results per page (default is
50). - fuzzy_search (bool): Whether to perform a fuzzy search (
True) or an exact match (False). - Returns: A list of
Werkobjects orNoneif an error occurs.
- Use fuzzy search for better results when searching by title.
results = gema_search.search_werknummer("17680241-007")
for werk in results:
print(werk.titel)def search_werknummer(self, number_string: str, page: int = 0, page_size: int = 50):- number_string (str): The Werknummer to search for.
- page (int): The page number of the results (default is
0). - page_size (int): Number of results per page (default is
50). - Returns: A list of
Werkobjects orNoneif an error occurs.
results = gema_search.search_isrc("DEUM72301260")
for werk in results:
print(werk.titel)def search_isrc(self, isrc: str, page: int = 0, page_size: int = 50):- isrc (str): The ISRC code to search for.
- page (int): The page number of the results (default is
0). - page_size (int): Number of results per page (default is
50). - Returns: A list of
Werkobjects orNoneif an error occurs.
results = gema_search.search("Bohemian Rhapsody")
for werk in results:
print(f"Title: {werk.titel}")
print("Authors:")
for urheber in werk.urheber:
print(f" - {urheber.vorname} {urheber.nachname} ({urheber.rolle})")
print(f"ISRC: {werk.isrc}")This section provides an overview of how to use the wrapper classes to iterate over results, fetch the names of the authors/composers, and e.g. retrieve the ISRC code of a track.
Assuming we have a list of Werk objects, we can perform various operations on them.
werke = gema_search.search("Bohemian Rhapsody") # Example data instances
# Iterate over works and print their titles and authors
for werk in werke:
print(f"Title: {werk.titel}")
print("Authors/Composers:")
for urheber in werk.urheber:
print(f" - {urheber.vorname} {urheber.nachname} ({urheber.rolle})")
print()# Fetch ISRC codes of a specific work
werk = werke[0] # Example: selecting the first work
if werk.isrc:
print(f"ISRC Codes for '{werk.titel}': {', '.join(werk.isrc)}")
else:
print(f"No ISRC codes available for '{werk.titel}'.")is_eigenes_werkverlagswerknummernisrcerstellung_datumtitelwerknummerwerkfassungsnummersonstige_titelinterpretensprachegattungbesetzungiwkfrei_vverbundene_schutzfristverteilung_arverteilung_vroriginalverlagesubverlageaenderung_datumspieldauerstatusurheber
typeip_name_numbernamevornamenachnameidentifierrolleis_bevollmaechtigtis_eigenes_konto
namenachname
anzahl_instrumenteanzahl_spieleranzahl_stimmenbezeichnung
typeip_name_numbernameis_bevollmaechtigtis_eigenes_kontoidentifier
GPLv3