思わぬ所で、時間食いました
VBだと型宣言が曖昧なので、型変換を厳密に考えなくても良かったのですが、C#だとはまりました。
プレイリスト一覧がJSON形式だったので、今まで通りの方法が使えなくて><
プレイリストを取得するには、下記のAPIをつかいます
http://www.nicovideo.jp/api/mylistgroup/list
するとJSON形式で帰ってくるので、デシリアライズしないと、1こ1こ自分で取り出して処理しないといけないのでめんどくさくて・・・・
ということで、これで出来ました。
public static Mylist getMyListGroup() { try { string url = "http://www.nicovideo.jp/api/mylistgroup/list"; string rescode = ""; string res=""; for (int i = 0; i < 5; i++) { res = LibAnko.Utility.GetResponseText(url, host.CookieContainer, 2000, ref rescode); if (!string.IsNullOrEmpty(res) && rescode!="503" ) { break; } } if (!string.IsNullOrEmpty(res)) { System.Runtime.Serialization.Json.DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(Mylist)); byte[] buf = Encoding.UTF8.GetBytes(res); var stream = new System.IO.MemoryStream(buf); Mylist lst = (Mylist)s.ReadObject(stream); return lst; } } catch { } return null; }
typeofのなかのクラス定義がミソのようです
めんどくさいので、説明は省きますw
[System.Runtime.Serialization.DataContract()] public class Mylist { [System.Runtime.Serialization.DataMember()] public MylistGroup[] mylistgroup { get; set; } [System.Runtime.Serialization.DataMember()] public string status { get; set; } } [System.Runtime.Serialization.DataContract()] public class MylistGroup { [System.Runtime.Serialization.DataMember()] public string id {get;set;} [System.Runtime.Serialization.DataMember()] public string user_id { get; set; } [System.Runtime.Serialization.DataMember()] public string name { get; set; } [System.Runtime.Serialization.DataMember()] public string description { get; set; } [System.Runtime.Serialization.DataMember()] public string @public { get; set; } [System.Runtime.Serialization.DataMember()] public string default_sort { get; set; } [System.Runtime.Serialization.DataMember()] public int create_time { get; set; } [System.Runtime.Serialization.DataMember()] public int update_time { get; set; } [System.Runtime.Serialization.DataMember()] public string sort_order { get; set; } [System.Runtime.Serialization.DataMember()] public string icon_id { get; set; } }