SpotiFLAC Mobile Documentation

repository·main·Indexed 26 days ago

https://github.com/spotiflacapp/spotiflac-mobile

A mobile application for downloading lossless FLAC music via a decentralized extension system. Documentation covers app customization, extension installation and development, and a Go-based backend for processing APEv2, ID3, and Ogg/Vorbis metadata, CUE sheet parsing, and audio quality metrics.

Tokens
22.1K
Snippets
27
Records
245
Agent score
91%

What's inside SpotiFLAC Mobile

  1. Add SpotiFLAC to AltStore or SideStore

    main

    To receive updates directly within AltStore or SideStore, add the official SpotiFLAC source using the following JSON URL:

    1. Copy the URL below.
    2. In AltStore/SideStore, go to Browse > Sources.
    3. Tap + and paste the link.
    https://raw.githubusercontent.com/zarzet/SpotiFLAC-Mobile/refs/heads/main/apps.json
  2. Install extensions in SpotiFLAC Mobile

    main

    Extensions allow you to add new music sources and features. You can install them using the in-app Store or by manually providing a file.

    Via the Store

    1. Open the Store tab in the app.
    2. On first launch, enter an Extension Repository URL when prompted.
    3. Browse and install extensions with one tap.

    Via Manual File

    1. Download a .spotiflac-ext file.
    2. Navigate to Settings > Extensions to install it manually.

    Configuration

    • Configure specific extension settings within the app if required.
    • Set the order of providers under Settings > Extensions > Provider Priority to manage which source is used first.
  3. Define an Extension Manifest

    main

    To create an extension for SpotiFLAC, you must provide a JSON manifest that conforms to the ExtensionManifest schema. This manifest defines the extension's identity, capabilities, permissions, and configuration settings.

    Key requirements:

    • name: A lowercase extension ID containing only letters, numbers, '.', '_', or '-'.
    • type: Must include at least one of metadata_provider, download_provider, or lyrics_provider.
    • permissions: Defines access to network, storage, and file systems.
    • settings: An array of ExtensionSetting objects to allow user configuration.

    Use ParseManifest(data []byte) to validate and load the manifest from JSON data.

  4. Configure Network Compatibility Options

    main
    You can configure global network settings to allow unencrypted HTTP traffic or insecure TLS connections. This is useful for bypassing certain network restrictions or interacting with legacy servers. When these options are updated, existing idle connections are closed to apply the new configuration.
  5. Configure extension fallback provider IDs

    main

    Use SetExtensionFallbackProviderIDs to restrict which extension providers are allowed to act as fallbacks.

    • To set a specific list, pass a slice of provider IDs. The list is sanitized to remove whitespace and duplicates.
    • To reset to the default behavior (allowing all enabled download extensions), pass nil.

    Use GetExtensionFallbackProviderIDs to retrieve the current list, and isExtensionFallbackAllowed (internal logic used by the system) to check if a specific provider is in the allowed list.

  6. Search for music with SearchAll

    main

    Perform a comprehensive search across tracks, artists, albums, and playlists. You can use the filter parameter to restrict results to a specific type.

    Filter options:

    • track: Returns up to 50 tracks.
    • artist: Returns up to 20 artists.
    • album: Returns up to 20 albums.
    • playlist: Returns up to 20 playlists.

    If no filter is provided, the method returns a mix of results (up to 5 playlists, 5 albums, etc.).

  7. Read audio file metadata with ReadFileMetadata

    main

    Extracts metadata and audio quality information from various audio file formats including FLAC, M4A, MP3, Ogg/Opus, APE, WAV, and AIFF. The function returns a JSON string containing the metadata fields.

    Supported metadata fields in the output JSON:

    • title, artist, album, album_artist, date, genre, label, copyright, composer, comment, isrc, lyrics
    • track_number, total_tracks, disc_number, total_discs
    • duration, format, audio_codec, bitrate, sample_rate, bit_depth