"Tween")
End Function
+ Public Function SavedSearches(ByRef content As String) As HttpStatusCode
+ Return httpCon.GetContent(GetMethod, _
+ CreateTwitterUri("/1/saved_searches.json"), _
+ Nothing, _
+ content, _
+ Nothing, _
+ AddressOf GetApiCallback)
+ End Function
+
Public Function FollowerIds(ByVal cursor As Long, ByRef content As String) As HttpStatusCode
Dim param As New Dictionary(Of String, String)
param.Add("cursor", cursor.ToString())
AddressOf GetApiCallback)
End Function
+ Public Function NoRetweetIds(ByVal cursor As Long, ByRef content As String) As HttpStatusCode
+ Dim param As New Dictionary(Of String, String)
+ param.Add("cursor", cursor.ToString())
+
+ Return httpCon.GetContent(GetMethod, _
+ CreateTwitterUri("/1/friendships/no_retweet_ids.json"), _
+ param, _
+ content, _
+ TwitterApiInfo.HttpHeaders, _
+ AddressOf GetApiCallback)
+ End Function
+
Public Function RateLimitStatus(ByRef content As String) As HttpStatusCode
Return httpCon.GetContent(GetMethod, _
CreateTwitterUri("/1/account/rate_limit_status.json"), _
End Class
<DataContract()> _
- Public Class Followers
+ Public Class Ids
<DataMember(Name:="ids")> Public Id As Long()
<DataMember(Name:="next_cursor")> Public NextCursor As Long
<DataMember(Name:="previous_cursor")> Public PreviousCursor As Long
<data name=">>StatusStrip1.ZOrder" xml:space="preserve">
<value>8</value>
</data>
+ <data name="SaveLogButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+ <value>Bottom, Right</value>
+ </data>
<data name="SaveLogButton.Location" type="System.Drawing.Point, System.Drawing">
<value>599, 239</value>
</data>
list = listAvail.SelectedList
End Using
End If
- If Not DirectCast(Me.Owner, TweenMain).AddNewTab(tabName, False, tabType, list) Then
+ If Not _sts.AddTab(tabName, tabType, list) OrElse Not DirectCast(Me.Owner, TweenMain).AddNewTab(tabName, False, tabType, list) Then
Dim tmp As String = String.Format(My.Resources.AddTabMenuItem_ClickText1, tabName)
MessageBox.Show(tmp, My.Resources.AddTabMenuItem_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
Else
'成功
- _sts.AddTab(tabName, tabType, list)
ListTabs.Items.Add(tabName)
SetTabnamesToDialog()
End If
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("0.1.0.0")>
-<Assembly: AssemblyFileVersion("1.0.0.1")>
+<Assembly: AssemblyFileVersion("1.0.0.2")>
retUrlStr = retUrlStr.Replace("""", "%22") 'ダブルコーテーションがあるとURL終端と判断されるため、これだけ再エンコード
orgData = orgData.Replace("<a href=""" + orgUrl + """", "<a href=""" + retUrlStr + """")
SyncLock _lockObj
- urlCache.Add(orgUrl, retUrlStr)
+ If Not urlCache.ContainsKey(orgUrl) Then urlCache.Add(orgUrl, retUrlStr)
End SyncLock
End If
Catch ex As Exception
Private _IsDeleted As Boolean = False
Private _InReplyToUserId As Long = 0
Public Property RetweetedCount As Integer = 0
+ Public Property RetweetedByUserId As Long = 0
<FlagsAttribute()> _
Private Enum Statuses
End Set
End Property
- Public Sub AddTab(ByVal TabName As String, ByVal TabType As TabUsageType, ByVal List As ListElement)
+ Public Function AddTab(ByVal TabName As String, ByVal TabType As TabUsageType, ByVal List As ListElement) As Boolean
+ If _tabs.ContainsKey(TabName) Then Return False
_tabs.Add(TabName, New TabClass(TabName, TabType, List))
_tabs(TabName).Sorter.Mode = _sorter.Mode
_tabs(TabName).Sorter.Order = _sorter.Order
- End Sub
+ Return True
+ End Function
'Public Sub AddTab(ByVal TabName As String, ByVal Tab As TabClass)
' _tabs.Add(TabName, Tab)
'振り分け可能タブの判定処理
Public Function IsDistributableTab(ByVal tabName As String) As Boolean
Return tabName IsNot Nothing AndAlso
- _tabs.ContainsKey(tabName) AndAlso
+ Me._tabs.ContainsKey(tabName) AndAlso
(_tabs(tabName).TabType = TabUsageType.Mentions OrElse
_tabs(tabName).TabType = TabUsageType.UserDefined)
End Function
Case WORKERTYPE.Follower
bw.ReportProgress(50, My.Resources.UpdateFollowersMenuItem1_ClickText1)
ret = tw.GetFollowersApi()
+ If String.IsNullOrEmpty(ret) Then
+ ret = tw.GetNoRetweetIdsApi()
+ End If
Case WORKERTYPE.OpenUri
Dim myPath As String = Convert.ToString(args.url)
End If
Next
'タブ追加
- AddNewTab(tabName, False, TabUsageType.PublicSearch)
_statuses.AddTab(tabName, TabUsageType.PublicSearch, Nothing)
+ AddNewTab(tabName, False, TabUsageType.PublicSearch)
'追加したタブをアクティブに
ListTab.SelectedIndex = ListTab.TabPages.Count - 1
'検索条件の設定
list = listAvail.SelectedList
End Using
End If
- If Not AddNewTab(tabName, False, tabUsage, list) Then
+ If Not _statuses.AddTab(tabName, tabUsage, list) OrElse Not AddNewTab(tabName, False, tabUsage, list) Then
Dim tmp As String = String.Format(My.Resources.AddTabMenuItem_ClickText1, tabName)
MessageBox.Show(tmp, My.Resources.AddTabMenuItem_ClickText2, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
'成功
- _statuses.AddTab(tabName, tabUsage, list)
SaveConfigsTabs()
If tabUsage = TabUsageType.PublicSearch Then
ListTab.SelectedIndex = ListTab.TabPages.Count - 1
End Using
Me.TopMost = SettingDialog.AlwaysTop
If Not String.IsNullOrEmpty(tabName) Then
- If Not AddNewTab(tabName, False, TabUsageType.UserDefined) Then
+ If Not _statuses.AddTab(tabName, TabUsageType.UserDefined, Nothing) OrElse Not AddNewTab(tabName, False, TabUsageType.UserDefined) Then
Dim tmp As String = String.Format(My.Resources.IDRuleMenuItem_ClickText2, tabName)
MessageBox.Show(tmp, My.Resources.IDRuleMenuItem_ClickText3, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
'もう一度タブ名入力
Else
- _statuses.AddTab(tabName, TabUsageType.UserDefined, Nothing)
Return True
End If
End If
Private ReadOnly LockObj As New Object
Private followerId As New List(Of Long)
Private _GetFollowerResult As Boolean = False
+ Private noRTId As New List(Of Long)
+ Private _GetNoRetweetResult As Boolean = False
Private _followersCount As Integer = 0
Private _friendsCount As Integer = 0
'Retweetした人
post.RetweetedBy = status.User.ScreenName
+ post.RetweetedByUserId = status.User.Id
post.IsMe = post.RetweetedBy.ToLower.Equals(_uid)
Else
post.CreatedAt = DateTimeParse(status.CreatedAt)
End If
End SyncLock
+ 'RT禁止ユーザーによるもの
+ If post.RetweetedId > 0 AndAlso Me.noRTId.Contains(post.RetweetedByUserId) Then Continue For
+
post.IsRead = read
If post.IsMe AndAlso Not read AndAlso _readOwnPost Then post.IsRead = True
End Select
Try
- Dim followers = CreateDataFromJson(Of TwitterDataModel.Followers)(content)
+ Dim followers = CreateDataFromJson(Of TwitterDataModel.Ids)(content)
followerId.AddRange(followers.Id)
cursor = followers.NextCursor
Return ""
End Try
End Function
+ Public Function GetNoRetweetIdsApi() As String
+ If _endingFlag Then Return ""
+ Dim cursor As Long = -1
+ Dim tmpIds As New List(Of Long)(noRTId)
+
+ noRTId.Clear()
+ Do
+ Dim ret As String = NoRetweetApi(cursor)
+ If Not String.IsNullOrEmpty(ret) Then
+ noRTId.Clear()
+ noRTId.AddRange(tmpIds)
+ _GetNoRetweetResult = False
+ Return ret
+ End If
+ Loop While cursor > 0
+
+ _GetNoRetweetResult = True
+ Return ""
+ End Function
+
+ Private Function NoRetweetApi(ByRef cursor As Long) As String
+ If Twitter.AccountState <> ACCOUNT_STATE.Valid Then Return ""
+
+ Dim res As HttpStatusCode
+ Dim content As String = ""
+ Try
+ res = twCon.NoRetweetIds(cursor, content)
+ Catch ex As Exception
+ Return "Err:" + ex.Message + "(" + GetCurrentMethod.Name + ")"
+ End Try
+
+ Select Case res
+ Case HttpStatusCode.OK
+ Twitter.AccountState = ACCOUNT_STATE.Valid
+ Case HttpStatusCode.Unauthorized
+ Twitter.AccountState = ACCOUNT_STATE.Invalid
+ Return "Check your Username/Password."
+ Case HttpStatusCode.BadRequest
+ Return "Err:API Limits?"
+ Case Else
+ Return "Err:" + res.ToString() + "(" + GetCurrentMethod.Name + ")"
+ End Select
+
+ Try
+ Dim ids = CreateDataFromJson(Of Long())(content)
+ noRTId.AddRange(ids)
+ cursor = 1 '0より大きければ何でも良い。
+ Return ""
+ Catch ex As SerializationException
+ TraceOut(ex.Message + Environment.NewLine + content)
+ Return "Err:Json Parse Error(DataContractJsonSerializer)"
+ Catch ex As Exception
+ TraceOut(ex, GetCurrentMethod.Name & " " & content)
+ Return "Err:Invalid Json!"
+ End Try
+ End Function
+
+ Public ReadOnly Property GetNoRetweetSuccess() As Boolean
+ Get
+ Return _GetNoRetweetResult
+ End Get
+ End Property
+
Public Function GetListsApi() As String
If Twitter.AccountState <> ACCOUNT_STATE.Valid Then Return ""