Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Lunar;
- using System.Dynamic;
- namespace NekoVampire
- {
- public class StreamList
- {
- public StreamList(string userName, string listName)
- {
- this.userName = userName;
- this.listName = listName;
- }
- private string userName;
- private string listName;
- private IEnumerable<User> members;
- /// <summary>
- /// range で指定された範囲の項目を取得します。
- /// </summary>
- /// <param name="client">クライアント</param>
- /// <param name="range">範囲</param>
- /// <returns>エントリーのリスト</returns>
- public IEnumerable<IEntry> GetStatuses(TwitterClient client, StatusRange range)
- {
- //var statuses = client.StatusCache.GetStatuses();
- var statuses = client.Statuses.HomeTimeline();
- if(members == null)
- members = client.Lists.Members(userName, listName);
- return statuses.AsParallel()
- .Where(x => range.SinceID != 0 ? x.StatusID >= range.SinceID : true && range.MaxID != 0 ? x.StatusID <= range.MaxID : true)
- .Where(x => members.Contains(x.User))
- .OrderByDescending(x => x.StatusID)
- .Skip(range.Page * range.Count)
- .Take(range.Count);
- }
- /// <summary>
- /// User Streams で受信した entry がこのソースで取得できるものと同等であるかを取得します。
- /// </summary>
- /// <param name="entry"></param>
- /// <returns></returns>
- public bool StreamEntryMatches(IEntry entry)
- {
- return members.Select(x => x.Name).Contains(entry.UserName);
- }
- /// <summary>
- /// ページごとに取得し、スクロールで次のページが取得できるかどうかを定義します。
- /// </summary>
- public bool Pagable
- {
- get
- {
- return true;
- }
- }
- /// <summary>
- /// 任意のデータを保存できます。設定ファイルに記録されます。
- /// </summary>
- public ExpandoObject LocalData { private get; set; }
- }
- }
Add Comment
Please, Sign In to add comment