zarzet 4df96db809 feat: batch re-enrich for local tracks, SAF FD refactor, Ogg quality fix
- Replace batch Share action with batch Re-enrich in local album selection bar
  - Full native/FFmpeg re-enrich flow with SAF write-back support
  - Triggers incremental local library scan after completion to refresh metadata
- Queue tab: switch first selection action to Re-enrich when all selected items are local-only
- Refactor SAF FD handoff in MainActivity: drop detachFd/dup pattern, pass procfs
  path to Go and let Go re-open it to avoid fdsan double-close race conditions
- Handle /proc/self/fd/ path in output_fd.go: re-open via O_WRONLY|O_TRUNC instead
  of taking raw FD ownership
- Fix Ogg duration/bitrate calculation in audio_metadata.go:
  - Use float64 arithmetic and math.Round for accurate duration
  - Compute bitrate from file size / float duration at the source
  - Validate Ogg page header fields (version, headerType, segment table) to avoid
    false positives from payload bytes during backward scan
  - Guard against corrupted granule values (>24h duration, <8kbps bitrate)
- Rename trackReEnrich label from 'Re-enrich Metadata' to 'Re-enrich' across all
  13 locales and ARB files
- Update CHANGELOG.md with 3.7.0 entry
2026-02-18 19:29:59 +07:00

GitHub All Releases VirusTotal Crowdin

Download music in true lossless FLAC from Tidal, Qobuz & Amazon Music — no account required.

Android iOS

Download

Screenshots

Extensions

Extensions allow the community to add new music sources and features without waiting for app updates. When a streaming service API changes or a new source becomes available, extensions can be updated independently.

Installing Extensions

  1. Go to Store tab in the app
  2. Browse and install extensions with one tap
  3. Or download a .spotiflac-ext file and install manually via Settings > Extensions
  4. Configure extension settings if needed
  5. Set provider priority in Settings > Extensions > Provider Priority

Developing Extensions

Want to create your own extension? Check out the Extension Development Guide for complete documentation.

Other project

SpotiFLAC (Desktop)

Download music in true lossless FLAC from Tidal, Qobuz & Amazon Music for Windows, macOS & Linux

Telegram

Telegram Channel Telegram Community

FAQ

Q: Why is my download failing with "Song not found"?
A: The track may not be available on Tidal, Qobuz, or Amazon Music. Try enabling more download services in Settings > Download > Provider Priority, or install additional extensions from the Store.

Q: Why are some tracks downloading in lower quality?
A: Quality depends on what's available from the streaming service. Tidal offers up to 24-bit/192kHz, Qobuz up to 24-bit/192kHz, and Amazon up to 24-bit/48kHz. The app automatically selects the best available quality.

Q: Can I download playlists?
A: Yes! Just paste the playlist URL in the search bar. The app will fetch all tracks and queue them for download.

Q: Why do I need to grant storage permission?
A: The app needs permission to save downloaded files to your device. On Android 13+, you may need to grant "All files access" in Settings > Apps > SpotiFLAC > Permissions.

Q: Is this app safe?
A: Yes, the app is open source and you can verify the code yourself. Each release is scanned with VirusTotal (see badge at top of README).

Q: Why is download not working in my country?
A: Some countries have restricted access to certain streaming service APIs. If downloads are failing, try using a VPN to connect through a different region.

Want to support SpotiFLAC-Mobile?

If this software is useful and brings you value, consider supporting the project. Your support helps keep development going.

Ko-fi

Disclaimer

This project is for educational and private use only. The developer does not condone or encourage copyright infringement.

SpotiFLAC is a third-party tool and is not affiliated with, endorsed by, or connected to Tidal, Qobuz, Amazon Music, Deezer, or any other streaming service.

The application is purely a user interface that facilitates communication between your device and existing third-party services.

You are solely responsible for:

  1. Ensuring your use of this software complies with your local laws.
  2. Reading and adhering to the Terms of Service of the respective platforms.
  3. Any legal consequences resulting from the misuse of this tool.

The software is provided "as is", without warranty of any kind. The author assumes no liability for any bans, damages, or legal issues arising from its use.

API Credits

Tip

Star Us, You will receive all release notifications from GitHub without any delay ~

Languages
Dart 71.7%
Go 16.7%
HTML 7.2%
Kotlin 3.3%
Swift 1%