From 798aa6fc7009688f16ba44f37e505e3e0f0accb8 Mon Sep 17 00:00:00 2001 From: kiri_feather Date: Mon, 27 Dec 2010 12:26:00 +0000 Subject: [PATCH] =?utf8?q?=E9=96=A2=E9=80=A3=E7=99=BA=E8=A8=80=E5=8F=96?= =?utf8?q?=E5=BE=97=E3=82=92=E5=BC=B7=E5=8C=96=EF=BC=88ToDo=EF=BC=9A?= =?utf8?q?=E6=96=B0=E7=9D=80=E8=A1=A8=E7=A4=BA=E3=81=95=E3=81=9B=E3=81=AA?= =?utf8?q?=E3=81=84=E3=80=81Esc=E3=81=A7=E3=82=BF=E3=83=96=E9=96=89?= =?utf8?q?=E3=81=98=E3=81=A6=E5=85=83=E3=81=AE=E3=82=BF=E3=83=96=E3=81=B8?= =?utf8?q?=E6=88=BB=E3=82=8A=E3=81=9F=E3=81=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.sourceforge.jp/svnroot/tween/trunk@1264 e39ad16e-3079-482e-bb30-4b4d378143b6 --- Tween/Tween.vb | 2 +- Tween/Twitter.vb | 74 ++++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 57 insertions(+), 19 deletions(-) diff --git a/Tween/Tween.vb b/Tween/Tween.vb index 084cbdca..822efad6 100644 --- a/Tween/Tween.vb +++ b/Tween/Tween.vb @@ -2081,7 +2081,7 @@ Public Class TweenMain Case WORKERTYPE.Related bw.ReportProgress(50, MakeStatusMessage(args, False)) Dim tb As TabClass = _statuses.GetTabByName(args.tName) - ret = tw.GetRelatedResultsApi(read, tb) + ret = tw.GetRelatedResult(read, tb) rslt.addCount = _statuses.DistributePosts() End Select 'キャンセル要求 diff --git a/Tween/Twitter.vb b/Tween/Twitter.vb index 2deb3818..33e5299f 100644 --- a/Tween/Twitter.vb +++ b/Tween/Twitter.vb @@ -1597,8 +1597,38 @@ Public Class Twitter Return CreatePostsFromJson(content, WORKERTYPE.List, tab, read, count, tab.OldestId) End Function - Public Function GetRelatedResultsApi(ByVal read As Boolean, _ - ByVal tab As TabClass) As String + Private Function CheckReplyToPost(ByVal relPosts As List(Of PostClass)) As PostClass + Dim tmpPost As PostClass = relPosts(0) + Dim lastPost As PostClass = Nothing + Do While tmpPost IsNot Nothing + If tmpPost.InReplyToId = 0 Then Return Nothing + lastPost = tmpPost + Dim replyToPost = From p In relPosts + Where p.Id = tmpPost.InReplyToId + Select p + tmpPost = replyToPost.FirstOrDefault() + Loop + Return lastPost + End Function + + Public Function GetRelatedResult(ByVal read As Boolean, ByVal tab As TabClass) As String + Dim relPosts As New List(Of PostClass) + relPosts.Add(tab.RelationTargetPost.Copy) + Dim tmpPost As PostClass = relPosts(0) + Dim rslt As String = "" + Do + rslt = Me.GetRelatedResultsApi(read, tmpPost, tab, relPosts) + If Not String.IsNullOrEmpty(rslt) Then Exit Do + tmpPost = CheckReplyToPost(relPosts) + Loop While tmpPost IsNot Nothing + relPosts.ForEach(New Action(Of PostClass)(Sub(p) TabInformations.GetInstance.AddPost(p))) + Return rslt + End Function + + Public Function GetRelatedResultsApi(ByVal read As Boolean, + ByVal post As PostClass, + ByVal tab As TabClass, + ByVal relatedPosts As List(Of PostClass)) As String If Twitter.AccountState <> ACCOUNT_STATE.Valid Then Return "" @@ -1607,7 +1637,7 @@ Public Class Twitter Dim res As HttpStatusCode Dim content As String = "" Try - res = twCon.GetRelatedResults(tab.RelationTargetPost.Id, content) + res = twCon.GetRelatedResults(post.Id, content) Catch ex As Exception Return "Err:" + ex.Message End Try @@ -1623,7 +1653,18 @@ Public Class Twitter Return "Err:" + res.ToString() + "(" + GetCurrentMethod.Name + ")" End Select - Dim targetItem As PostClass = tab.RelationTargetPost + Dim items As List(Of TwitterDataModel.RelatedResult) + Try + items = CreateDataFromJson(Of List(Of TwitterDataModel.RelatedResult))(content) + Catch ex As SerializationException + TraceOut(ex.Message + Environment.NewLine + content) + Return "Json Parse Error(DataContractJsonSerializer)" + Catch ex As Exception + TraceOut(content) + Return "Invalid Json!" + End Try + + Dim targetItem As PostClass = post If targetItem Is Nothing Then Return "" Else @@ -1641,17 +1682,6 @@ Public Class Twitter replyToItem.RelTabName = tab.TabName End If - Dim items As List(Of TwitterDataModel.RelatedResult) - Try - items = CreateDataFromJson(Of List(Of TwitterDataModel.RelatedResult))(content) - Catch ex As SerializationException - TraceOut(ex.Message + Environment.NewLine + content) - Return "Json Parse Error(DataContractJsonSerializer)" - Catch ex As Exception - TraceOut(content) - Return "Invalid Json!" - End Try - Dim replyAdded As Boolean = False For Each relatedData As TwitterDataModel.RelatedResult In items For Each result As TwitterDataModel.RelatedTweet In relatedData.Results @@ -1665,13 +1695,21 @@ Public Class Twitter If item.IsMe AndAlso Not read AndAlso _readOwnPost Then item.IsRead = True If tab IsNot Nothing Then item.RelTabName = tab.TabName '非同期アイコン取得&StatusDictionaryに追加 - TabInformations.GetInstance.AddPost(item) + relatedPosts.Add(item) Next Next If replyToItem IsNot Nothing Then - TabInformations.GetInstance.AddPost(replyToItem) + relatedPosts.Add(replyToItem) ElseIf targetItem.InReplyToId > 0 AndAlso Not replyAdded Then - Return GetStatusApi(read, targetItem.InReplyToId, tab) + Dim p As PostClass = Nothing + Dim rslt As String = "" + rslt = GetStatusApi(read, targetItem.InReplyToId, p) + If String.IsNullOrEmpty(rslt) Then + p.IsRead = read + p.RelTabName = tab.TabName + relatedPosts.Add(p) + End If + Return rslt End If '発言者・返信先ユーザーの直近10発言取得 -- 2.11.0