読者です 読者をやめる 読者になる 読者になる

みつろぐ

やれることはやってみる

MusicBeeでNowPlayingをつぶやく、アートワークも出力します

自宅では音楽管理にMusicBeeを利用しています。
MusicBeeは機能が充実しているのに加えて、デフォルトで綺麗なテーマが多数用意されてるのでおすすめです。

MusicBeeでは「Social Networks Status」というプラグインを使えば、簡単にNowPlayingをTwitterFaceBookなどに投稿することができるのですが、いかんせんテキストのみになってしまうため非常に残念です。


そこで、プラグインを改造してアートワークを同時に呟けるようにしてみました。まずは以下のサイトを参考にプラグインの導入をおこなってください

NetskyのPC、音楽なんでもblogMusicBee Plug-in for twitter MusicBeeで再生中

  1. ここのDownload欄のSourceから、最新プロジェクトをDL
  2. 解答したフォルダにあるSocialNetworksStatus.slnをダブルクリックしてプロジェクトを開きます
  3. SocialNetworksStatus.csを次のように書き換え
  4. メニューの「BUILD/Build Solution」からビルド
  5. 生成された「mb_SocialNetworksStatus.dll」をProgramFile/MusicBee/Pluginsにコピー
// ソースファイルの先頭に追加
using System.IO;

// TwitterServiceクラス内
public bool updateStatus(string status, string imagePath = "")
{
    try 
    {
        if (imagePath == "") {
            TwitterStatus result = service.SendTweet(new SendTweetOptions
            {
                Status = status,
            });
        } else {
            using (var stream = new FileStream(imagePath, FileMode.Open))
            {
                var result = service.SendTweetWithMedia(new SendTweetWithMediaOptions
                {
                    Status = status,
                    Images = new Dictionary<string, Stream> { { "artwork", stream } }
                });
            }
        }
    } 
    catch (Exception ex) 
    {
        if (ex.Message != "Status is a duplicate")
            MessageBox.Show(ex.Message);
    }

    Plugin.MbApiInterface.MB_SetBackgroundTaskMessage("");

    return true;
}

// Pluginクラス内
public void updateStatusEventHandler(object sender, EventArgs e)
{
    string status = GetStatusText(MbApiInterface.NowPlaying_GetFileUrl());

    //Facebook
    if (facebookService != null) {
        MbApiInterface.MB_SetBackgroundTaskMessage(UpdateStatusCommandSbText);
        facebookService.updateStatus(status);
    }
            
    //Twitter
    if (twitterService != null) {
        MbApiInterface.MB_SetBackgroundTaskMessage(UpdateStatusCommandSbText);
        twitterService.updateStatus(status, MbApiInterface.NowPlaying_GetArtworkUrl());   
    }

    //VKontakte
    if (vkService != null) {
        MbApiInterface.MB_SetBackgroundTaskMessage(UpdateStatusCommandSbText);
        vkService.updateStatus(status);
    }
}

これでアートワーク付きのNowPlayingがつぶやけるようになるはずです。


# 参考サイト
Tutorial: Creating A Simple Plugin - MusicBee Wiki - Wikia
Post message with image on twitter using C# - DotNetFunda.com