0

我正在尝试为 iTunes 编写一个 JS 脚本,以创建歌曲总数大于 7 的任何歌曲的播放列表(即 LP 而非 EP)。我以前从未使用 Microsoft 的 JScript 编写过任何东西,所以我在很大程度上是在学习如何即时使用它。当我只想要一个索引值时,我不明白为什么需要一个对象:albumKey = checkAlbumExists(albumName, albumArray);

var iTunesApp = WScript.CreateObject("iTunes.Application");
var mainLibrary = iTunesApp.LibraryPlaylist;

var tracks = mainLibrary.Tracks;
// var numTracks = tracks.Count;
// limit to 100 for testing
var numTracks = 100;

var albumArray = new Array();

for (var i = 1; i <= numTracks; i++) {
  // skip track if undefined:
  if(tracks.Item(i) !== undefined) {

    // get album title from track
    var curTrack = tracks.Item(i);
    var albumName = curTrack.Album.toString();

    var albumKey = -1;
    if(albumArray.length > 0) {
      albumKey = checkAlbumExists(albumName, albumArray);

      if(albumKey === undefined || albumKey === -1) {
        // no album found
        albumArray.push({album: albumName, numTracks: 1});
      } else {
        albumArray[albumKey].numTracks++;
      }
    } else {
      albumArray.push({album: albumName, numTracks: 1});
    }
  }
}

var checkAlbumExists = function(needle, haystack) {
  for(var l =1; l<= haystack.length; l++) {
    if(haystack[l].album.toString() === needle) {
      return parseInt(l);
    }
  }
  return -1;
}
[...]

任何有关出了什么问题的信息将不胜感激。此处为我的 GitHub 上的文件链接,以帮助理解上下文中的完整脚本

4

0 回答 0