diff --git a/apps/media/lib_collection.php b/apps/media/lib_collection.php
index caa3ac3f47985b2da5e6c78a741f9434506fdc70..1240f1de2f00f4cdd99668cdea5159ba8f7a8a99 100644
--- a/apps/media/lib_collection.php
+++ b/apps/media/lib_collection.php
@@ -127,7 +127,7 @@ class OC_MEDIA_COLLECTION{
 			$search='%';
 		}
 		$query=OC_DB::prepare("SELECT DISTINCT *PREFIX*media_artists.artist_name AS artist_name , *PREFIX*media_artists.artist_id AS artist_id FROM *PREFIX*media_artists
-			INNER JOIN *PREFIX*media_songs ON *PREFIX*media_artists.artist_id=*PREFIX*media_songs.song_artist WHERE artist_name LIKE ? AND *PREFIX*media_songs.song_user=?");
+			INNER JOIN *PREFIX*media_songs ON *PREFIX*media_artists.artist_id=*PREFIX*media_songs.song_artist WHERE artist_name LIKE ? AND *PREFIX*media_songs.song_user=? ORDER BY artist_name");
 		return $query->execute(array($search,self::$uid))->fetchAll();
 	}
 	
@@ -160,7 +160,7 @@ class OC_MEDIA_COLLECTION{
 	*/
 	static public function getAlbums($artist=0,$search='%',$exact=false){
 		$cmd="SELECT DISTINCT *PREFIX*media_albums.album_name AS album_name , *PREFIX*media_albums.album_artist AS album_artist , *PREFIX*media_albums.album_id AS album_id
-			FROM *PREFIX*media_albums INNER JOIN *PREFIX*media_songs ON *PREFIX*media_albums.album_id=*PREFIX*media_songs.song_album WHERE *PREFIX*media_songs.song_user=? ";
+			FROM *PREFIX*media_albums INNER JOIN *PREFIX*media_songs ON *PREFIX*media_albums.album_id=*PREFIX*media_songs.song_album WHERE *PREFIX*media_songs.song_user=? ORDER BY album_name";
 		$params=array(self::$uid);
 		if($artist!=0){
 			$cmd.="AND *PREFIX*media_albums.album_artist = ? ";
@@ -233,7 +233,7 @@ class OC_MEDIA_COLLECTION{
 		}else{
 			$searchString='';
 		}
-		$query=OC_DB::prepare("SELECT * FROM *PREFIX*media_songs WHERE song_user=? $artistString $albumString $searchString");
+		$query=OC_DB::prepare("SELECT * FROM *PREFIX*media_songs WHERE song_user=? $artistString $albumString $searchString ORDER BY song_track, song_name");
 		return $query->execute($params)->fetchAll();
 	}
 	
@@ -378,4 +378,4 @@ class OC_MEDIA_COLLECTION{
 	}
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/apps/media/lib_scanner.php b/apps/media/lib_scanner.php
index c2bea2d836d95f5e0b85fe205be4611473ccf23d..320b1f79199aefc06a814d1d7d915ee77c5d5443 100644
--- a/apps/media/lib_scanner.php
+++ b/apps/media/lib_scanner.php
@@ -120,7 +120,20 @@ class OC_MEDIA_SCANNER{
 				$title=stripslashes($data['comments']['title'][0]);
 			}
 			$size=$data['filesize'];
-			$track=(isset($data['comments']['track']))?$data['comments']['track'][0]:0;
+			if (isset($data['comments']['track']))
+			{
+				$track = $data['comments']['track'][0];
+			}
+			else if (isset($data['comments']['track_number']))
+			{
+				$track = $data['comments']['track_number'][0];
+				$track = explode('/',$track);
+				$track = $track[0];
+			}
+			else
+			{
+				$track = 0;
+			}
 			$length=isset($data['playtime_seconds'])?round($data['playtime_seconds']):0;
 		}
 		if(!isset(self::$artists[$artist])){