Miss plugin in QuodLibet 4.4.0

Hi there, after installing QuodLibet 4.4.0 from the official Manjaro repository, i miss at least the Import/Export plugin. If i understand Added a unified and flexible ImportExport plugin by CreamyCookie · Pull Request #3705 · quodlibet/quodlibet · GitHub correct, this should replace the old Import, Export and Migrate plugins. Is there an issue with the package from the Manjaro repository? I’m in the testing branch…

As mentioned in the issue you created, the Import / Export plugin is part of the package:

/usr/lib/python3.10/site-packages/quodlibet/ext/songsmenu/importexport.py

In that case I have no idea what is wrong on my side. I’m a complete noob with Manjaro and also Quodlibet, but if I look into the list of plugins, i have no trace of a plugin with the name “Import/Export”. If I’m back on the laptop, I will check the path you mentioned. Hopefully the files are there.

If not, do you have any advice for me, how to solve the issue? I know in Debian I can use apt autoremove and apt purge to get rid of bogus configs and orphaned files, don’t know if a equivalent on Manjaro exist.

BTW: im using Gnome, don’t know if this is important. But it’s no problem to use the shell itself. Maybe I miss a dependency, but the installer didn’t mentioned additional packages.

I think i got it. On the path you mentioned, is a file “importexport.py” (6.7kb), but i miss “import_export_tags_and_track_user_data.py” (27.3kb). Maybe this is only included in an upcoming release and not the actual 4.4.0

I have tried to copy the file to the directory, but i get a warning about a missing dependency from another file. I’m not familiar with python, maybe there is a way with the current version, but it doesn’t seem so.

Anyhow, its not the fault of the current package. I ill have a look later in a future version.

Oops. Apparently my reading skills were poor earlier. That is not included in the package. No idea why, but shouldn’t be a packaging issue. The Arch package installs with the setup.py, looks normal.

OK, no problem. I have found and extracted the missing files and now the Plugin is loaded and listed in QuodLibet. I will try my luck and play with the plugin. If i found a way to migrate Media Monkey to QuodLibet, i can make a post in a new thread.

I don’t want to make a new thread for this. I have installed the version from the master branch, which is 4.5.development. Here the mentioned plugin replaces the current 3 plugins “Import”-, “Export-” and “Migrate-” Tags. First i selected all tracks in the library, richtlick on one of the tracks, select Plugins > Import/Export > Export userdata. This creates a index.json and one JSON file for every album for the selected tracks. Now i used my SQL to extract the data from Media Monkey on Windows:

SELECT 
	Artist as artist, 
	Album as album, 
	AlbumArtist as albumartist, 
	TrackNumber as track, 
	DiscNumber as  disc, 
	SongTitle as title, 
	PlayCounter as playcount, 
	IIF(LastTimePlayed > 1, strftime('%s', datetime(LastTimePlayed + 2415019.0)), -1) as lastplayed,
	FileLength as filesize, 
	strftime('%s', datetime(FileModified + 2415019.0)) as mtime, 
	strftime('%s', datetime(DateAdded + 2415019.0)) as ctime
FROM Songs;

You can create a CSV file from this, if you want, with the syntax (just replace the select):

sqlite3 -header -csv /path/to/your/database.db "select * from Songs;" > /tmp/mmdb_export.csv

Now you can edit the JSON files from the userdata extraction and insert the data from the csv file. I have currently no idea, how to automate the process. Be careful to add dateadded in the JSON field “~#added”, playcount in the field “~#playcount” and lastplayed in the field “~#lastplayed”. For example a track will read like this, when you are finished:

{
        "//identifier": [
            "Der Schmeisser",
            "Kassel Von Hinten",
            1,
            1,
            3,
            1,
            "03 - Kassel Von Hinten.mp3"
        ],
        "~#added": 1363863871,
        "~#playcount": 5,
        "~#lastplayed": 1442867893
    }

Be sure, to only add or edit existing fields, because all what is changed here, will also change during the import. A track will be renamed, if you change the filename here. In my case i change only the added field and add playcount and lastplayed and leave the rest unchanged.

If you have finished all tracks/albums, go back to QuodLibet. Select again all tracks, rightclick Plugins > Import/Export > Import. Dependent from the size of the library, this will take some time.

If the process is finished, you have all data from Media Monkey in QuodLibet and use this for smart playlists. I’m super happy with the result.

BTW: For syncing new music to Android I’m now using a different approach: I’m using rsync or better Grsync, a GUI for rsync. I create a dynamic search, based on lastplayed and some sorting. I export the result in to a new folder and sync this via grsync to the phone, when the phone is connected via MTP.
If you enable --delete and “Windows Compatibility”, this will erase the old music on the phone and prevent some warnings.

All in all, its a little bit more complicated as with Media Monkey, but its on the other hand more reliable.

Ahh and before i forget it, the migrate process is a one time process. For future sync of lastplayed and playcount, which is needed for the mentioned smart list, i use last.fm. You can scrobble the songs from every device you play your music. This statistics can be synced back from last.fm to QuodLibet with another plugin to keep the statistics in sync.