diff options
author | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2007-12-16 23:52:06 +0000 |
---|---|---|
committer | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2007-12-16 23:52:06 +0000 |
commit | 81a854f7ea737ecdb05ebfb5d09209508f34b745 (patch) | |
tree | 33a37cc50b0425e6f6d4e8904c766313e495606f /lib/class/catalog.class.php | |
parent | 3887ab1f65fa556368d555e33b5c3e9ab59459da (diff) | |
download | ampache-81a854f7ea737ecdb05ebfb5d09209508f34b745.tar.gz ampache-81a854f7ea737ecdb05ebfb5d09209508f34b745.tar.bz2 ampache-81a854f7ea737ecdb05ebfb5d09209508f34b745.zip |
fixed the find duplicates stuff, its actually still broken somewhat but it mostly works so why not commit eah?
Diffstat (limited to 'lib/class/catalog.class.php')
-rw-r--r-- | lib/class/catalog.class.php | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/class/catalog.class.php b/lib/class/catalog.class.php index 39c2c7ea..d5e8535f 100644 --- a/lib/class/catalog.class.php +++ b/lib/class/catalog.class.php @@ -791,6 +791,77 @@ class Catalog { } //get_files /** + * get_duplicate_songs + * This function takes a search type and returns a list of all song_ids that + * are likely to be duplicates based on teh search method selected. + */ + public static function get_duplicate_songs($search_method) { + + // Setup the base SQL + $sql = "SELECT song.id AS song,artist.id AS artist,album.id AS album,title,COUNT(title) AS ctitle". + " FROM `song` LEFT JOIN `artist` ON `artist`.`id`=`song`.`artist` " . + " LEFT JOIN `album` ON `album`.`id`=`song`.`album` ". + " GROUP BY song.title"; + + // Add any Additional constraints + if ($search_method == "artist_title" OR $search_method == "artist_album_title") { + $sql = $sql.",artist.name"; + } + + if ($search_method == "artist_album_title") { + $sql = $sql.",album.name"; + } + + // Final componets + $sql = $sql." HAVING COUNT(title) > 1"; + $sql = $sql." ORDER BY `ctitle`"; + + $db_results = Dba::query($sql); + + $results = array(); + + while ($item = Dba::fetch_assoc($db_results)) { + $results[] = $item; + } // end while + + return $results; + + } // get_duplicate_songs + + /** + * get_duplicate_info + * This takes a song, search type and auto flag and returns the duplicate songs in the correct + * order, it sorts them by longest, higest bitrate, largest filesize, checking + * the last one as most likely bad + */ + public static function get_duplicate_info($item,$search_type) { + // Build the SQL + $sql = "SELECT `song`.`id`" . + " FROM song,artist,album". + " WHERE song.artist=artist.id AND song.album=album.id". + " AND song.title= '".Dba::escape($item['title'])."'"; + + if ($search_type == "artist_title" || $search_type == "artist_album_title") { + $sql .=" AND artist.id = '".Dba::escape($item['artist'])."'"; + } + if ($search_type == "artist_album_title" ) { + $sql .=" AND album.id = '".Dba::escape($item['album'])."'"; + } + + $sql .= " ORDER BY `time`,`bitrate`,`size` LIMIT 2"; + $db_results = Dba::query($sql); + + $results = array(); + + while ($item = Dba::fetch_assoc($db_results)) { + $results[] = $item['id']; + } // end while + + return $results; + + } // get_duplicate_info + + /** * dump_album_art (Added by Cucumber 20050216) * This runs through all of the albums and trys to dump the * art for them into the 'folder.jpg' file in the appropriate dir |