Trying to sync whole library and seem to be missing 1 track

App version

Production

Issue description

I am trying to sync my whole library to my phone. I’ve created a smart playlist with a match of anything with a duration of 1 second. The playlist shows the correct amount of tracks 5118 but when I sync this playlist to my phone it downloads 5117. I’m not sure why there is 1 track missing. It could be a problem with the track buy I don’t have any idea how to figure out which track is the missing one.
Could you help me figure out which track is the missing/problem track please?

Device type

Phone

Media provider

Navidrome

Steps to reproduce

Create smart playlist with a match of “duration = more than 1 second”
Playlist shows all the tracks from my Navidrome library (5118)
In the playlist options select “Configure auto offline cache” > Enabled
Tracks will download to phone
Upon completion downloaded tracks show 5117

Additional information

I’ve added screenshots of the playlist showing 5118 tracks and the “Manage offline files” screen showing 5117 tracks

Screenshots

I searched existing issues first

on

I understand that logs are mandatory

on

Log upload name / description

dronics

Enable the media cache option on the provider itself to cache all it’s way more efficient.

And use the offline status in a smart playlist to easily find what is cached or not.

Hi, Thanks for the response. I’ve changed the way to sync my library and did as you suggested.

Unfortunately, I still have the strange missing track on the “Manage offline files” page (showing 5117). If I create a smart playlist and show “is cached” it says 5118 and if I create one and show “is not cached” there is nothing listed (see screenshots).

Any idea why the “Managed offline files” is only showing 5117 tracks?

You probably have a duplicate track with the same path reported by Navidrome. You can enable the option in navidrome to report the real path to fix, but you’ll need to download all again.

Hi @Tolriq Thanks for supporting me on this. With respect to Navidrome and showing the paths, is it expected that I enable that option and have to manually go through all the tracks and file paths?
That will be a mission on 5118 tracks. Do you have better way to do it?

I did use fdupe, rdfind on my Music directory (that feeds into Navidrome) and both those tools couldn’t find any duplicates. I’m hoping there is a more automated way to find a duplicate file/path other than using my eyeballs, lol!

@deluan any magic query they can run on Navidrome db to find the duplicates?

And yes as said it will require full new cache.

There was a bug pre 0.61.0, that could cause duplications when moving tracks around: https://github.com/navidrome/navidrome/pull/5183

A full scan should resolve any issues, though.

If not, here is a query to find duplicates:

  SELECT library_id, LOWER(path) AS lpath, COUNT(*) AS dupes, GROUP_CONCAT(path, ' | ') AS paths, GROUP_CONCAT(id, ' | ') AS ids                                                                                                                      
  FROM media_file                                                                                                                                                                                                                                     
  GROUP BY library_id, lpath                                                                                                                                                                                                                          
  HAVING COUNT(*) > 1                                                                                                                                                                                                                                 
  ORDER BY dupes DESC, lpath; 

Thanks but he is not using the real filenames in report, so navidrome by default return the artist/album/track that can clash not sure that query identify those ?

That query identify same (actual) path (case-insensitive) in the DB. When using fake (constructed) paths, there is a higher chance to get duplicates, but a SQL query to identify these are way harder, as it is constructed in code, not in SQL

arf ok so then yes no easy solution @dronics sorry.