--- /dev/null
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+
+use Audio::MPD;
+
+my $mpd = Audio::MPD->new;
+
+my $pl = $mpd->playlist;
+
+my @items = $pl->as_items;
+
+my %items_to_delete;
+my %files;
+for my $item (@items) {
+ my ($name,$type) = $item->file =~ m/(.+)\.([^\.]+)/;
+ if (exists $files{$name}{$type}) {
+ $items_to_delete{$item->id} = 1;
+ next;
+ }
+ $files{$name}{$type} = $item->id;
+ if (exists $files{$name}{flac}) {
+ $items_to_delete{$_} = 1 foreach values %{$files{$name}};
+ delete $items_to_delete{$files{$name}{flac}}
+ } elsif (exists $files{$name}{ogg}) {
+ $items_to_delete{$_} = 1 foreach values %{$files{$name}};
+ delete $items_to_delete{$files{$name}{ogg}}
+ }
+}
+
+$pl->deleteid(keys %items_to_delete);