itunes听

时间:2011-04-04 21:38:20

标签: c# .net itunes

在Windows Live Messenger中,可以共享您当前正在收听的歌曲。我需要做些什么才能让它在c#中运行如libarys等,无法在google上找到正确的文档。

3 个答案:

答案 0 :(得分:1)

您需要使用iTunes SDK与.NET进行交互。所以这是你的谷歌搜索词。 :)

这是一个开始:

答案 1 :(得分:0)

最后我检查了这个功能包含在开箱即用的所有你需要的是安装itunes和windows live messenger并激活“我正在听什么”,它显示在你的信使状态。如果你想创建一个机器人,将这个消息发送给一个不同故事的联系人,你将需要编写一个脚本

答案 2 :(得分:0)

这是C#中LinqPad的一个脚本,可以按要求执行。 (见LinqPad.com)

奖金!艺术品观点。

看起来像这样:

example

<Query Kind="Program">
  <Namespace>iTunesLib</Namespace>
  <Namespace>System.Security.Cryptography</Namespace>
</Query>

void Main()
{
  var track = new iTunesApp().CurrentTrack;

  if (track == null)
    "nothing playing".Dump();
  else
    new Viewer(track,true).Dump();
}

public class Viewer
{
  const string PREFIX = "itlps-";

  private IITFileOrCDTrack store;
  private bool materialize;

  public string album { get { return store.Album; } }
  public string band { get { return store.Artist; } }
  public string song { get { return store.Name; } }
  public string desc { get { return store.Description; } }
  public int? artCnt { get {
    if (store.Artwork == null) return null;
    else return store.Artwork.Count; }
  }

  public IEnumerable<ImageViewer> art { get {

    if (materialize)
    {
      foreach(var artT in store.Artwork)
      {
        var art = artT as IITArtwork;
        string ext = ".tmp";
        switch(art.Format)
        {
          case ITArtworkFormat.ITArtworkFormatBMP:
            ext = ".BMP";
            break;
          case ITArtworkFormat.ITArtworkFormatJPEG:
            ext = ".JPG";
            break;
          case ITArtworkFormat.ITArtworkFormatPNG:
            ext = ".PNG";
            break;
        }

        string path = Path.Combine(Path.GetTempPath(),PREFIX+Path.GetRandomFileName()+ext);

        art.SaveArtworkToFile(path);

        yield return new ImageViewer(path);
      }
    }
    yield break; }
  }

  public Viewer(IITFileOrCDTrack t,bool materializeArt = false)
  {
    store = t;
    materialize = materializeArt;
  }

  public Viewer(IITTrack t,bool materializeArt = false)
  {
    store = t as IITFileOrCDTrack;
    materialize = materializeArt;
  }

}

public class ImageViewer
{
  public string hash { get { return _hash.Value; } }
  static private string _path { get; set; }

  public object image { get { return _image.Value; } }

  static private SHA1Managed sha = new SHA1Managed();  

  private Lazy<object> _image = new Lazy<object>(() => {return Util.Image(_path);});
  private Lazy<string> _hash = new Lazy<string>(() =>
  {
    string hash = string.Empty;
    using (FileStream stream = File.OpenRead(_path))
    {
      byte [] checksum = sha.ComputeHash(stream);
      hash = BitConverter.ToString(checksum).Replace("-", string.Empty);
    }  
    return hash;
  });

  public ImageViewer(string path)
  {
    _path = path;
  }
}