OSDN Git Service

Port Connection/imgly.vb to C#
authorspinor <spinor2109@gmail.com>
Sun, 4 Dec 2011 08:25:07 +0000 (17:25 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Wed, 22 Feb 2012 10:50:52 +0000 (19:50 +0900)
Tween/Connection/imgly.vb [deleted file]
Tween/Tween.vbproj
TweenCS/Connection/imgly.cs [new file with mode: 0644]
TweenCS/TweenCS.csproj

diff --git a/Tween/Connection/imgly.vb b/Tween/Connection/imgly.vb
deleted file mode 100644 (file)
index eff6751..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-' Tween - Client of Twitter
-' Copyright (c) 2007-2011 kiri_feather (@kiri_feather) <kiri.feather@gmail.com>
-'           (c) 2008-2011 Moz (@syo68k)
-'           (c) 2008-2011 takeshik (@takeshik) <http://www.takeshik.org/>
-'           (c) 2010-2011 anis774 (@anis774) <http://d.hatena.ne.jp/anis774/>
-'           (c) 2010-2011 fantasticswallow (@f_swallow) <http://twitter.com/f_swallow>
-' All rights reserved.
-' 
-' This file is part of Tween.
-' 
-' This program is free software; you can redistribute it and/or modify it
-' under the terms of the GNU General Public License as published by the Free
-' Software Foundation; either version 3 of the License, or (at your option)
-' any later version.
-' 
-' This program is distributed in the hope that it will be useful, but
-' WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-' or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-' for more details. 
-' 
-' You should have received a copy of the GNU General Public License along
-' with this program. If not, see <http://www.gnu.org/licenses/>, or write to
-' the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
-' Boston, MA 02110-1301, USA.
-
-Imports System.IO
-Imports System.Net
-Imports System.Xml
-
-Public Class imgly
-    Inherits HttpConnectionOAuthEcho
-    Implements IMultimediaShareService
-
-    'OAuth関連
-    '''<summary>
-    '''OAuthのコンシューマー鍵
-    '''</summary>
-    Private Const ConsumerKey As String = "ST6eAABKDRKTqbN7pPo2A"
-
-    '''<summary>
-    '''OAuthの署名作成用秘密コンシューマーデータ
-    '''</summary>
-    Private Const ConsumerSecretKey As String = "BJMEiivrXlqGESzdb8D0bvLfNYf3fifXRDMFjMogXg"
-
-    Private pictureExt() As String = {".jpg", _
-                                    ".jpeg", _
-                                    ".gif", _
-                                    ".png"}
-
-    Private Const MaxFileSize As Long = 4 * 1024 * 1024
-
-    Private tw As Twitter
-
-    Public Function Upload(ByRef filePath As String,
-                           ByRef message As String,
-                           ByVal reply_to As Long) As String Implements IMultimediaShareService.Upload
-        If String.IsNullOrEmpty(filePath) Then Return "Err:File isn't specified."
-        If String.IsNullOrEmpty(message) Then message = ""
-        Dim mediaFile As FileInfo
-        Try
-            mediaFile = New FileInfo(filePath)
-        Catch ex As NotSupportedException
-            Return "Err:" + ex.Message
-        End Try
-        If mediaFile Is Nothing OrElse Not mediaFile.Exists Then Return "Err:File isn't exists."
-
-        Dim content As String = ""
-        Dim ret As HttpStatusCode
-        'img.lyへの投稿
-        Try
-            ret = UploadFile(mediaFile, message, content)
-        Catch ex As Exception
-            Return "Err:" + ex.Message
-        End Try
-        Dim url As String = ""
-        If ret = HttpStatusCode.OK Then
-            Dim xd As XmlDocument = New XmlDocument()
-            Try
-                xd.LoadXml(content)
-                'URLの取得
-                url = xd.SelectSingleNode("/image/url").InnerText
-            Catch ex As XmlException
-                Return "Err:" + ex.Message
-            Catch ex As Exception
-                Return "Err:" + ex.Message
-            End Try
-        Else
-            Return "Err:" + ret.ToString
-        End If
-        'アップロードまでは成功
-        filePath = ""
-        If String.IsNullOrEmpty(url) Then url = ""
-        'Twitterへの投稿
-        '投稿メッセージの再構成
-        If String.IsNullOrEmpty(message) Then message = ""
-        If message.Length + AppendSettingDialog.Instance.TwitterConfiguration.CharactersReservedPerMedia + 1 > 140 Then
-            message = message.Substring(0, 140 - AppendSettingDialog.Instance.TwitterConfiguration.CharactersReservedPerMedia - 1) + " " + url
-        Else
-            message += " " + url
-        End If
-        Return tw.PostStatus(message, reply_to)
-    End Function
-
-    Private Function UploadFile(ByVal mediaFile As FileInfo, _
-                       ByVal message As String, _
-                       ByRef content As String) As HttpStatusCode
-        'Message必須
-        If String.IsNullOrEmpty(message) Then message = ""
-        'Check filetype and size(Max 4MB)
-        If Not Me.CheckValidExtension(mediaFile.Extension) Then Throw New ArgumentException("Service don't support this filetype.")
-        If Not Me.CheckValidFilesize(mediaFile.Extension, mediaFile.Length) Then Throw New ArgumentException("File is too large.")
-
-        Dim param As New Dictionary(Of String, String)
-        param.Add("message", message)
-        Dim binary As New List(Of KeyValuePair(Of String, FileInfo))
-        binary.Add(New KeyValuePair(Of String, FileInfo)("media", mediaFile))
-        Me.InstanceTimeout = 60000 'タイムアウト60秒
-
-        Return GetContent(PostMethod, _
-                          New Uri("http://img.ly/api/2/upload.xml"), _
-                          param, _
-                          binary, _
-                          content, _
-                          Nothing, _
-                          Nothing)
-    End Function
-
-    Public Function CheckValidExtension(ByVal ext As String) As Boolean Implements IMultimediaShareService.CheckValidExtension
-        If Array.IndexOf(pictureExt, ext.ToLower) > -1 Then
-            Return True
-        End If
-        Return False
-    End Function
-
-    Public Function GetFileOpenDialogFilter() As String Implements IMultimediaShareService.GetFileOpenDialogFilter
-        Return "Image Files(*.gif;*.jpg;*.jpeg;*.png)|*.gif;*.jpg;*.jpeg;*.png"
-    End Function
-
-    Public Function GetFileType(ByVal ext As String) As UploadFileType Implements IMultimediaShareService.GetFileType
-        If Me.CheckValidExtension(ext) Then
-            Return UploadFileType.Picture
-        End If
-        Return UploadFileType.Invalid
-    End Function
-
-    Public Function IsSupportedFileType(ByVal type As UploadFileType) As Boolean Implements IMultimediaShareService.IsSupportedFileType
-        Return type.Equals(UploadFileType.Picture)
-    End Function
-
-    Public Function CheckValidFilesize(ByVal ext As String, ByVal fileSize As Long) As Boolean Implements IMultimediaShareService.CheckValidFilesize
-        If Me.CheckValidExtension(ext) Then
-            Return fileSize <= MaxFileSize
-        End If
-        Return False
-    End Function
-
-    Public Function Configuration(ByVal key As String, ByVal value As Object) As Boolean Implements IMultimediaShareService.Configuration
-        Return True
-    End Function
-
-    Public Sub New(ByVal twitter As Twitter)
-        MyBase.New(New Uri("http://api.twitter.com/"), _
-                   New Uri("https://api.twitter.com/1/account/verify_credentials.json"))
-        tw = twitter
-        Initialize(ConsumerKey, ConsumerSecretKey, tw.AccessToken, tw.AccessTokenSecret, "", "")
-    End Sub
-End Class
index 8b8ec74..83a164c 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{41B54F21-5442-47D4-80F0-872D56D9E1FD}</ProjectGuid>
-    <OutputType>WinExe</OutputType>
-    <StartupObject>Tween.My.MyApplication</StartupObject>
-    <RootNamespace>Tween</RootNamespace>
-    <AssemblyName>Tween</AssemblyName>
-    <MyType>WindowsForms</MyType>
-    <ApplicationIcon>Resources\4b.ico</ApplicationIcon>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <OptionStrict>On</OptionStrict>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <DefineDebug>true</DefineDebug>
-    <DefineTrace>true</DefineTrace>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DocumentationFile>
-    </DocumentationFile>
-    <NoWarn>42353,42354,42355</NoWarn>
-    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
-    <RemoveIntegerChecks>true</RemoveIntegerChecks>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <DefineDebug>false</DefineDebug>
-    <DefineTrace>true</DefineTrace>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DocumentationFile>
-    </DocumentationFile>
-    <NoWarn>42353,42354,42355</NoWarn>
-    <DebugSymbols>true</DebugSymbols>
-    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
-    <RemoveIntegerChecks>true</RemoveIntegerChecks>
-    <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ApplicationManifest>My Project\app.manifest</ApplicationManifest>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
-    <DebugSymbols>true</DebugSymbols>
-    <DefineDebug>true</DefineDebug>
-    <DefineTrace>true</DefineTrace>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <RemoveIntegerChecks>true</RemoveIntegerChecks>
-    <NoWarn>42353,42354,42355</NoWarn>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
-    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
-    <DefineConstants>UA="False"</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
-    <DebugSymbols>true</DebugSymbols>
-    <DefineTrace>true</DefineTrace>
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <RemoveIntegerChecks>true</RemoveIntegerChecks>
-    <Optimize>true</Optimize>
-    <NoWarn>42353,42354,42355</NoWarn>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
-    <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
-    <DefineConstants>UA="False"</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup>
-    <OptionInfer>On</OptionInfer>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Runtime.Caching" />
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.XML" />
-    <Reference Include="System.Xml.Linq" />
-  </ItemGroup>
-  <ItemGroup>
-    <Import Include="Microsoft.VisualBasic" />
-    <Import Include="System" />
-    <Import Include="System.Collections" />
-    <Import Include="System.Collections.Generic" />
-    <Import Include="System.Drawing" />
-    <Import Include="System.Windows.Forms" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AdsBrowser.vb">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="AppendSettingDialog.Designer.vb">
-      <DependentUpon>AppendSettingDialog.vb</DependentUpon>
-    </Compile>
-    <Compile Include="AppendSettingDialog.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ApplicationEvents.vb" />
-    <Compile Include="AtIdSupplement.Designer.vb">
-      <DependentUpon>AtIdSupplement.vb</DependentUpon>
-    </Compile>
-    <Compile Include="AtIdSupplement.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="AuthBrowser.Designer.vb">
-      <DependentUpon>AuthBrowser.vb</DependentUpon>
-    </Compile>
-    <Compile Include="AuthBrowser.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="bing.vb" />
-    <Compile Include="Connection\HttpConnectionOAuthEcho.vb" />
-    <Compile Include="Connection\HttpOAuthApiProxy.vb" />
-    <Compile Include="Connection\HttpConnectionOAuth.vb" />
-    <Compile Include="Connection\HttpTwitter.vb" />
-    <Compile Include="Connection\HttpVarious.vb" />
-    <Compile Include="Connection\Plixi.vb" />
-    <Compile Include="Connection\TwitPic.vb" />
-    <Compile Include="Connection\imgly.vb" />
-    <Compile Include="DataModel.vb" />
-    <Compile Include="DetailsListView.vb">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="Dynamic.vb" />
-    <Compile Include="EventViewerDialog.Designer.vb">
-      <DependentUpon>EventViewerDialog.vb</DependentUpon>
-    </Compile>
-    <Compile Include="EventViewerDialog.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="DialogAsShieldIcon.Designer.vb">
-      <DependentUpon>DialogAsShieldIcon.vb</DependentUpon>
-    </Compile>
-    <Compile Include="DialogAsShieldIcon.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="DoubleClickCopyCanceller.vb" />
-    <Compile Include="FormInfo.Designer.vb">
-      <DependentUpon>FormInfo.vb</DependentUpon>
-    </Compile>
-    <Compile Include="FormInfo.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Foursquare.vb" />
-    <Compile Include="Google.vb" />
-    <Compile Include="Growl.vb" />
-    <Compile Include="HashtagManage.Designer.vb">
-      <DependentUpon>HashtagManage.vb</DependentUpon>
-    </Compile>
-    <Compile Include="HashtagManage.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="HookGlobalHotkey.vb" />
-    <Compile Include="ImageDictionary.vb" />
-    <Compile Include="ImageListViewItem.vb" />
-    <Compile Include="InputTabName.Designer.vb">
-      <DependentUpon>InputTabName.vb</DependentUpon>
-    </Compile>
-    <Compile Include="InputTabName.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ListAvailable.Designer.vb">
-      <DependentUpon>ListAvailable.vb</DependentUpon>
-    </Compile>
-    <Compile Include="ListAvailable.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="ListElement.vb" />
-    <Compile Include="ListManage.Designer.vb">
-      <DependentUpon>ListManage.vb</DependentUpon>
-    </Compile>
-    <Compile Include="ListManage.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MessageForm.Designer.vb">
-      <DependentUpon>MessageForm.vb</DependentUpon>
-    </Compile>
-    <Compile Include="MessageForm.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="My Project\AssemblyInfo.vb" />
-    <Compile Include="My Project\Application.Designer.vb">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Application.myapp</DependentUpon>
-    </Compile>
-    <Compile Include="My Project\Resources.Designer.vb">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="My Project\Settings.Designer.vb">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <Compile Include="MyLists.Designer.vb">
-      <DependentUpon>MyLists.vb</DependentUpon>
-    </Compile>
-    <Compile Include="MyLists.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MySpecialPath.vb" />
-    <Compile Include="nicoms.vb" />
-    <Compile Include="Outputz.vb" />
-    <Compile Include="PictureBoxEx.vb">
-      <SubType>Component</SubType>
-    </Compile>
-    <Compile Include="RadixConvert.vb" />
-    <Compile Include="Setting\SettingAtIdList.vb" />
-    <Compile Include="Setting\SettingBase.vb" />
-    <Compile Include="Setting\SettingCommon.vb" />
-    <Compile Include="Setting\SettingLocal.vb" />
-    <Compile Include="Setting\SettingFollower.vb" />
-    <Compile Include="Setting\SettingTabs.vb" />
-    <Compile Include="ShieldIcon.vb" />
-    <Compile Include="ShortUrl.vb" />
-    <Compile Include="ShowUserInfo.Designer.vb">
-      <DependentUpon>ShowUserInfo.vb</DependentUpon>
-    </Compile>
-    <Compile Include="ShowUserInfo.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="StatusDictionary.vb" />
-    <Compile Include="FilterDialog.Designer.vb">
-      <DependentUpon>FilterDialog.vb</DependentUpon>
-    </Compile>
-    <Compile Include="FilterDialog.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="TabsDialog.Designer.vb">
-      <DependentUpon>TabsDialog.vb</DependentUpon>
-    </Compile>
-    <Compile Include="TabsDialog.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Thumbnail.vb" />
-    <Compile Include="Tween.Designer.vb">
-      <DependentUpon>Tween.vb</DependentUpon>
-    </Compile>
-    <Compile Include="Tween.vb">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="FavoriteQueue.vb" />
-    <Compile Include="Twitter.vb" />
-    <Compile Include="UserInfo.vb" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="AppendSettingDialog.en.resx">
-      <DependentUpon>AppendSettingDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="AppendSettingDialog.resx">
-      <DependentUpon>AppendSettingDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="AppendSettingDialog.zh-CHS.resx">
-      <DependentUpon>AppendSettingDialog.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="AtIdSupplement.en.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>AtIdSupplement.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="AtIdSupplement.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>AtIdSupplement.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="AtIdSupplement.zh-CHS.resx">
-      <DependentUpon>AtIdSupplement.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="AuthBrowser.resx">
-      <DependentUpon>AuthBrowser.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="EventViewerDialog.en.resx">
-      <DependentUpon>EventViewerDialog.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="EventViewerDialog.resx">
-      <DependentUpon>EventViewerDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DialogAsShieldIcon.resx">
-      <DependentUpon>DialogAsShieldIcon.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DialogAsShieldIcon.zh-CHS.resx">
-      <DependentUpon>DialogAsShieldIcon.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="FilterDialog.zh-CHS.resx">
-      <DependentUpon>FilterDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="FormInfo.resx">
-      <DependentUpon>FormInfo.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="HashtagManage.en.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>HashtagManage.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="HashtagManage.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>HashtagManage.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="HashtagManage.zh-CHS.resx">
-      <DependentUpon>HashtagManage.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="InputTabName.en.resx">
-      <DependentUpon>InputTabName.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="InputTabName.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>InputTabName.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="InputTabName.zh-CHS.resx">
-      <DependentUpon>InputTabName.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ListAvailable.en.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>ListAvailable.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ListAvailable.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>ListAvailable.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ListAvailable.zh-CHS.resx">
-      <DependentUpon>ListAvailable.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ListManage.en.resx">
-      <DependentUpon>ListManage.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ListManage.resx">
-      <DependentUpon>ListManage.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ListManage.zh-CHS.resx">
-      <DependentUpon>ListManage.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MessageForm.resx">
-      <DependentUpon>MessageForm.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="My Project\Resources.en.resx">
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="My Project\Resources.resx">
-      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
-      <CustomToolNamespace>My.Resources</CustomToolNamespace>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="My Project\Resources.zh-CHS.resx">
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MyLists.en.resx">
-      <DependentUpon>MyLists.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MyLists.resx">
-      <DependentUpon>MyLists.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MyLists.zh-CHS.resx">
-      <DependentUpon>MyLists.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="FilterDialog.en.resx">
-      <DependentUpon>FilterDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="FilterDialog.resx">
-      <DependentUpon>FilterDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ShowUserInfo.en.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>ShowUserInfo.vb</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ShowUserInfo.resx">
-      <DependentUpon>ShowUserInfo.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ShowUserInfo.zh-CHS.resx">
-      <DependentUpon>ShowUserInfo.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TabsDialog.en.resx">
-      <DependentUpon>TabsDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TabsDialog.resx">
-      <DependentUpon>TabsDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="TabsDialog.zh-CHS.resx">
-      <DependentUpon>TabsDialog.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tween.en.resx">
-      <DependentUpon>Tween.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tween.resx">
-      <DependentUpon>Tween.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Tween.zh-CHS.resx">
-      <DependentUpon>Tween.vb</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="app.config">
-    </None>
-    <None Include="My Project\app.manifest">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="My Project\Application.myapp">
-      <Generator>MyApplicationCodeGenerator</Generator>
-      <LastGenOutput>Application.Designer.vb</LastGenOutput>
-    </None>
-    <None Include="My Project\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <CustomToolNamespace>My</CustomToolNamespace>
-      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Resources\2b.ico" />
-    <None Include="Resources\re.ico" />
-    <None Include="Resources\4b.ico" />
-    <None Include="Resources\4y.ico" />
-    <None Include="Resources\4r.ico" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="DynamicQuery.txt" />
-    <Content Include="Resources\1o.ico" />
-    <None Include="Resources\ads.txt" />
-    <Content Include="tips.txt" />
-    <None Include="Resources\5g.ico" />
-    <Content Include="Resources\5o.ico" />
-    <Content Include="Resources\6b.ico" />
-    <None Include="Resources\6g.ico" />
-    <Content Include="Resources\6o.ico" />
-    <None Include="Resources\ChangeLog.txt" />
-    <None Include="Resources\InitialImage.png" />
-    <None Include="Resources\MultiMediaImage.png" />
-    <EmbeddedResource Include="Resources\Description.txt" />
-    <Content Include="Resources\re2.ico" />
-    <Content Include="Resources\re3.ico" />
-    <Content Include="Resources\re4.ico" />
-    <None Include="Resources\3b.ico" />
-    <None Include="Resources\5r.ico" />
-    <None Include="Resources\5y.ico" />
-    <None Include="Resources\5b.ico" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows インストーラー 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\TweenCS\TweenCS.csproj">
-      <Project>{3D8995C7-BDF3-4273-9F9D-DDD902F6A101}</Project>
-      <Name>TweenCS</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">\r
+  <PropertyGroup>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>8.0.50727</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{41B54F21-5442-47D4-80F0-872D56D9E1FD}</ProjectGuid>\r
+    <OutputType>WinExe</OutputType>\r
+    <StartupObject>Tween.My.MyApplication</StartupObject>\r
+    <RootNamespace>Tween</RootNamespace>\r
+    <AssemblyName>Tween</AssemblyName>\r
+    <MyType>WindowsForms</MyType>\r
+    <ApplicationIcon>Resources\4b.ico</ApplicationIcon>\r
+    <FileUpgradeFlags>\r
+    </FileUpgradeFlags>\r
+    <UpgradeBackupLocation>\r
+    </UpgradeBackupLocation>\r
+    <OldToolsVersion>3.5</OldToolsVersion>\r
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>\r
+    <IsWebBootstrapper>false</IsWebBootstrapper>\r
+    <OptionStrict>On</OptionStrict>\r
+    <TargetFrameworkProfile>\r
+    </TargetFrameworkProfile>\r
+    <PublishUrl>publish\</PublishUrl>\r
+    <Install>true</Install>\r
+    <InstallFrom>Disk</InstallFrom>\r
+    <UpdateEnabled>false</UpdateEnabled>\r
+    <UpdateMode>Foreground</UpdateMode>\r
+    <UpdateInterval>7</UpdateInterval>\r
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\r
+    <UpdatePeriodically>false</UpdatePeriodically>\r
+    <UpdateRequired>false</UpdateRequired>\r
+    <MapFileExtensions>true</MapFileExtensions>\r
+    <ApplicationRevision>0</ApplicationRevision>\r
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\r
+    <UseApplicationTrust>false</UseApplicationTrust>\r
+    <BootstrapperEnabled>true</BootstrapperEnabled>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <DefineDebug>true</DefineDebug>\r
+    <DefineTrace>true</DefineTrace>\r
+    <OutputPath>bin\Debug\</OutputPath>\r
+    <DocumentationFile>\r
+    </DocumentationFile>\r
+    <NoWarn>42353,42354,42355</NoWarn>\r
+    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r
+    <RemoveIntegerChecks>true</RemoveIntegerChecks>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <DefineDebug>false</DefineDebug>\r
+    <DefineTrace>true</DefineTrace>\r
+    <Optimize>true</Optimize>\r
+    <OutputPath>bin\Release\</OutputPath>\r
+    <DocumentationFile>\r
+    </DocumentationFile>\r
+    <NoWarn>42353,42354,42355</NoWarn>\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r
+    <RemoveIntegerChecks>true</RemoveIntegerChecks>\r
+    <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <ApplicationManifest>My Project\app.manifest</ApplicationManifest>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DefineDebug>true</DefineDebug>\r
+    <DefineTrace>true</DefineTrace>\r
+    <OutputPath>bin\x86\Debug\</OutputPath>\r
+    <RemoveIntegerChecks>true</RemoveIntegerChecks>\r
+    <NoWarn>42353,42354,42355</NoWarn>\r
+    <DebugType>full</DebugType>\r
+    <PlatformTarget>x86</PlatformTarget>\r
+    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>\r
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>\r
+    <DefineConstants>UA="False"</DefineConstants>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DefineTrace>true</DefineTrace>\r
+    <OutputPath>bin\x86\Release\</OutputPath>\r
+    <RemoveIntegerChecks>true</RemoveIntegerChecks>\r
+    <Optimize>true</Optimize>\r
+    <NoWarn>42353,42354,42355</NoWarn>\r
+    <DebugType>pdbonly</DebugType>\r
+    <PlatformTarget>x86</PlatformTarget>\r
+    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r
+    <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>\r
+    <DefineConstants>UA="False"</DefineConstants>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <OptionInfer>On</OptionInfer>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <Reference Include="System" />\r
+    <Reference Include="System.Drawing" />\r
+    <Reference Include="System.Runtime.Serialization" />\r
+    <Reference Include="System.Runtime.Caching" />\r
+    <Reference Include="System.Web" />\r
+    <Reference Include="System.Windows.Forms" />\r
+    <Reference Include="System.XML" />\r
+    <Reference Include="System.Xml.Linq" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Import Include="Microsoft.VisualBasic" />\r
+    <Import Include="System" />\r
+    <Import Include="System.Collections" />\r
+    <Import Include="System.Collections.Generic" />\r
+    <Import Include="System.Drawing" />\r
+    <Import Include="System.Windows.Forms" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Compile Include="AdsBrowser.vb">\r
+      <SubType>Component</SubType>\r
+    </Compile>\r
+    <Compile Include="AppendSettingDialog.Designer.vb">\r
+      <DependentUpon>AppendSettingDialog.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="AppendSettingDialog.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="ApplicationEvents.vb" />\r
+    <Compile Include="AtIdSupplement.Designer.vb">\r
+      <DependentUpon>AtIdSupplement.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="AtIdSupplement.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="AuthBrowser.Designer.vb">\r
+      <DependentUpon>AuthBrowser.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="AuthBrowser.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="bing.vb" />\r
+    <Compile Include="Connection\HttpOAuthApiProxy.vb" />\r
+    <Compile Include="Connection\HttpTwitter.vb" />\r
+    <Compile Include="Connection\HttpVarious.vb" />\r
+    <Compile Include="Connection\Plixi.vb" />\r
+    <Compile Include="Connection\TwitPic.vb" />\r
+    <Compile Include="DataModel.vb" />\r
+    <Compile Include="DetailsListView.vb">\r
+      <SubType>Component</SubType>\r
+    </Compile>\r
+    <Compile Include="Dynamic.vb" />\r
+    <Compile Include="EventViewerDialog.Designer.vb">\r
+      <DependentUpon>EventViewerDialog.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="EventViewerDialog.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="DialogAsShieldIcon.Designer.vb">\r
+      <DependentUpon>DialogAsShieldIcon.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="DialogAsShieldIcon.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="DoubleClickCopyCanceller.vb" />\r
+    <Compile Include="FormInfo.Designer.vb">\r
+      <DependentUpon>FormInfo.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="FormInfo.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="Foursquare.vb" />\r
+    <Compile Include="Google.vb" />\r
+    <Compile Include="Growl.vb" />\r
+    <Compile Include="HashtagManage.Designer.vb">\r
+      <DependentUpon>HashtagManage.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="HashtagManage.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="HookGlobalHotkey.vb" />\r
+    <Compile Include="ImageDictionary.vb" />\r
+    <Compile Include="ImageListViewItem.vb" />\r
+    <Compile Include="InputTabName.Designer.vb">\r
+      <DependentUpon>InputTabName.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="InputTabName.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="ListAvailable.Designer.vb">\r
+      <DependentUpon>ListAvailable.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="ListAvailable.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="ListElement.vb" />\r
+    <Compile Include="ListManage.Designer.vb">\r
+      <DependentUpon>ListManage.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="ListManage.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="MessageForm.Designer.vb">\r
+      <DependentUpon>MessageForm.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="MessageForm.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="My Project\AssemblyInfo.vb" />\r
+    <Compile Include="My Project\Application.Designer.vb">\r
+      <AutoGen>True</AutoGen>\r
+      <DependentUpon>Application.myapp</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="My Project\Resources.Designer.vb">\r
+      <AutoGen>True</AutoGen>\r
+      <DesignTime>True</DesignTime>\r
+      <DependentUpon>Resources.resx</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="My Project\Settings.Designer.vb">\r
+      <AutoGen>True</AutoGen>\r
+      <DependentUpon>Settings.settings</DependentUpon>\r
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>\r
+    </Compile>\r
+    <Compile Include="MyLists.Designer.vb">\r
+      <DependentUpon>MyLists.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="MyLists.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="MySpecialPath.vb" />\r
+    <Compile Include="nicoms.vb" />\r
+    <Compile Include="Outputz.vb" />\r
+    <Compile Include="PictureBoxEx.vb">\r
+      <SubType>Component</SubType>\r
+    </Compile>\r
+    <Compile Include="RadixConvert.vb" />\r
+    <Compile Include="Setting\SettingAtIdList.vb" />\r
+    <Compile Include="Setting\SettingBase.vb" />\r
+    <Compile Include="Setting\SettingCommon.vb" />\r
+    <Compile Include="Setting\SettingLocal.vb" />\r
+    <Compile Include="Setting\SettingFollower.vb" />\r
+    <Compile Include="Setting\SettingTabs.vb" />\r
+    <Compile Include="ShieldIcon.vb" />\r
+    <Compile Include="ShortUrl.vb" />\r
+    <Compile Include="ShowUserInfo.Designer.vb">\r
+      <DependentUpon>ShowUserInfo.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="ShowUserInfo.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="StatusDictionary.vb" />\r
+    <Compile Include="FilterDialog.Designer.vb">\r
+      <DependentUpon>FilterDialog.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="FilterDialog.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="TabsDialog.Designer.vb">\r
+      <DependentUpon>TabsDialog.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="TabsDialog.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="Thumbnail.vb" />\r
+    <Compile Include="Tween.Designer.vb">\r
+      <DependentUpon>Tween.vb</DependentUpon>\r
+    </Compile>\r
+    <Compile Include="Tween.vb">\r
+      <SubType>Form</SubType>\r
+    </Compile>\r
+    <Compile Include="FavoriteQueue.vb" />\r
+    <Compile Include="Twitter.vb" />\r
+    <Compile Include="UserInfo.vb" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <EmbeddedResource Include="AppendSettingDialog.en.resx">\r
+      <DependentUpon>AppendSettingDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="AppendSettingDialog.resx">\r
+      <DependentUpon>AppendSettingDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="AppendSettingDialog.zh-CHS.resx">\r
+      <DependentUpon>AppendSettingDialog.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="AtIdSupplement.en.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>AtIdSupplement.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="AtIdSupplement.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>AtIdSupplement.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="AtIdSupplement.zh-CHS.resx">\r
+      <DependentUpon>AtIdSupplement.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="AuthBrowser.resx">\r
+      <DependentUpon>AuthBrowser.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="EventViewerDialog.en.resx">\r
+      <DependentUpon>EventViewerDialog.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="EventViewerDialog.resx">\r
+      <DependentUpon>EventViewerDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="DialogAsShieldIcon.resx">\r
+      <DependentUpon>DialogAsShieldIcon.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="DialogAsShieldIcon.zh-CHS.resx">\r
+      <DependentUpon>DialogAsShieldIcon.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="FilterDialog.zh-CHS.resx">\r
+      <DependentUpon>FilterDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="FormInfo.resx">\r
+      <DependentUpon>FormInfo.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="HashtagManage.en.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>HashtagManage.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="HashtagManage.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>HashtagManage.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="HashtagManage.zh-CHS.resx">\r
+      <DependentUpon>HashtagManage.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="InputTabName.en.resx">\r
+      <DependentUpon>InputTabName.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="InputTabName.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>InputTabName.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="InputTabName.zh-CHS.resx">\r
+      <DependentUpon>InputTabName.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ListAvailable.en.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>ListAvailable.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ListAvailable.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>ListAvailable.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ListAvailable.zh-CHS.resx">\r
+      <DependentUpon>ListAvailable.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ListManage.en.resx">\r
+      <DependentUpon>ListManage.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ListManage.resx">\r
+      <DependentUpon>ListManage.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ListManage.zh-CHS.resx">\r
+      <DependentUpon>ListManage.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="MessageForm.resx">\r
+      <DependentUpon>MessageForm.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="My Project\Resources.en.resx">\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="My Project\Resources.resx">\r
+      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>\r
+      <LastGenOutput>Resources.Designer.vb</LastGenOutput>\r
+      <CustomToolNamespace>My.Resources</CustomToolNamespace>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="My Project\Resources.zh-CHS.resx">\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="MyLists.en.resx">\r
+      <DependentUpon>MyLists.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="MyLists.resx">\r
+      <DependentUpon>MyLists.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="MyLists.zh-CHS.resx">\r
+      <DependentUpon>MyLists.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="FilterDialog.en.resx">\r
+      <DependentUpon>FilterDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="FilterDialog.resx">\r
+      <DependentUpon>FilterDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ShowUserInfo.en.resx">\r
+      <SubType>Designer</SubType>\r
+      <DependentUpon>ShowUserInfo.vb</DependentUpon>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ShowUserInfo.resx">\r
+      <DependentUpon>ShowUserInfo.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="ShowUserInfo.zh-CHS.resx">\r
+      <DependentUpon>ShowUserInfo.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="TabsDialog.en.resx">\r
+      <DependentUpon>TabsDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="TabsDialog.resx">\r
+      <DependentUpon>TabsDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="TabsDialog.zh-CHS.resx">\r
+      <DependentUpon>TabsDialog.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="Tween.en.resx">\r
+      <DependentUpon>Tween.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="Tween.resx">\r
+      <DependentUpon>Tween.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+    <EmbeddedResource Include="Tween.zh-CHS.resx">\r
+      <DependentUpon>Tween.vb</DependentUpon>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="app.config">\r
+    </None>\r
+    <None Include="My Project\app.manifest">\r
+      <SubType>Designer</SubType>\r
+    </None>\r
+    <None Include="My Project\Application.myapp">\r
+      <Generator>MyApplicationCodeGenerator</Generator>\r
+      <LastGenOutput>Application.Designer.vb</LastGenOutput>\r
+    </None>\r
+    <None Include="My Project\Settings.settings">\r
+      <Generator>SettingsSingleFileGenerator</Generator>\r
+      <CustomToolNamespace>My</CustomToolNamespace>\r
+      <LastGenOutput>Settings.Designer.vb</LastGenOutput>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="Resources\2b.ico" />\r
+    <None Include="Resources\re.ico" />\r
+    <None Include="Resources\4b.ico" />\r
+    <None Include="Resources\4y.ico" />\r
+    <None Include="Resources\4r.ico" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Content Include="DynamicQuery.txt" />\r
+    <Content Include="Resources\1o.ico" />\r
+    <None Include="Resources\ads.txt" />\r
+    <Content Include="tips.txt" />\r
+    <None Include="Resources\5g.ico" />\r
+    <Content Include="Resources\5o.ico" />\r
+    <Content Include="Resources\6b.ico" />\r
+    <None Include="Resources\6g.ico" />\r
+    <Content Include="Resources\6o.ico" />\r
+    <None Include="Resources\ChangeLog.txt" />\r
+    <None Include="Resources\InitialImage.png" />\r
+    <None Include="Resources\MultiMediaImage.png" />\r
+    <EmbeddedResource Include="Resources\Description.txt" />\r
+    <Content Include="Resources\re2.ico" />\r
+    <Content Include="Resources\re3.ico" />\r
+    <Content Include="Resources\re4.ico" />\r
+    <None Include="Resources\3b.ico" />\r
+    <None Include="Resources\5r.ico" />\r
+    <None Include="Resources\5y.ico" />\r
+    <None Include="Resources\5b.ico" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">\r
+      <Visible>False</Visible>\r
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>\r
+      <Install>false</Install>\r
+    </BootstrapperPackage>\r
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">\r
+      <Visible>False</Visible>\r
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>\r
+      <Install>false</Install>\r
+    </BootstrapperPackage>\r
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">\r
+      <Visible>False</Visible>\r
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>\r
+      <Install>false</Install>\r
+    </BootstrapperPackage>\r
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">\r
+      <Visible>False</Visible>\r
+      <ProductName>.NET Framework 3.5</ProductName>\r
+      <Install>false</Install>\r
+    </BootstrapperPackage>\r
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">\r
+      <Visible>False</Visible>\r
+      <ProductName>.NET Framework 3.5 SP1</ProductName>\r
+      <Install>true</Install>\r
+    </BootstrapperPackage>\r
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">\r
+      <Visible>False</Visible>\r
+      <ProductName>Windows インストーラー 3.1</ProductName>\r
+      <Install>true</Install>\r
+    </BootstrapperPackage>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\TweenCS\TweenCS.csproj">\r
+      <Project>{3D8995C7-BDF3-4273-9F9D-DDD902F6A101}</Project>\r
+      <Name>TweenCS</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>
   <Target Name="AfterBuild">
   </Target>
-  -->
-  <Target Name="AfterBuild">
-    <SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(TargetDir)" ShouldGenerateSerializer="true" UseProxyTypes="false" />
-  </Target>
-  <PropertyGroup>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
-</Project>
+  -->\r
+  <Target Name="AfterBuild">\r
+    <SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(TargetDir)" ShouldGenerateSerializer="true" UseProxyTypes="false" />\r
+  </Target>\r
+  <PropertyGroup>\r
+    <PostBuildEvent>\r
+    </PostBuildEvent>\r
+  </PropertyGroup>\r
+</Project>
\ No newline at end of file
diff --git a/TweenCS/Connection/imgly.cs b/TweenCS/Connection/imgly.cs
new file mode 100644 (file)
index 0000000..65b5793
--- /dev/null
@@ -0,0 +1,199 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2007-2011 kiri_feather (@kiri_feather) <kiri.feather@gmail.com>
+//           (c) 2008-2011 Moz (@syo68k)
+//           (c) 2008-2011 takeshik (@takeshik) <http://www.takeshik.org/>
+//           (c) 2010-2011 anis774 (@anis774) <http://d.hatena.ne.jp/anis774/>
+//           (c) 2010-2011 fantasticswallow (@f_swallow) <http://twitter.com/f_swallow>
+//           (c) 2011      spinor (@tplantd) <http://d.hatena.ne.jp/spinor/>
+// All rights reserved.
+// 
+// This file is part of OpenTween.
+// 
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 3 of the License, or (at your option)
+// any later version.
+// 
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details. 
+// 
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see <http://www.gnu.org/licenses/>, or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using HttpConnectionOAuthEcho = Tween.HttpConnectionOAuthEcho;
+using IMultimediaShareService = Tween.IMultimediaShareService;
+using FileInfo = System.IO.FileInfo;
+using NotSupportedException = System.NotSupportedException;
+using HttpStatusCode = System.Net.HttpStatusCode;
+using Exception = System.Exception;
+using XmlDocument = System.Xml.XmlDocument;
+using XmlException = System.Xml.XmlException;
+using ArgumentException = System.ArgumentException;
+using System.Collections.Generic; // for Dictionary<TKey, TValue>, List<T>, KeyValuePair<TKey, TValue>
+using Uri = System.Uri;
+using Array = System.Array;
+using UploadFileType = MyCommon.UploadFileType;
+
+namespace Tween
+{
+       public class imgly : HttpConnectionOAuthEcho, IMultimediaShareService
+       {
+               // OAuth関連
+
+               /// <summary>
+               /// OAuthのコンシューマー鍵
+               /// </summary>
+               private const string ConsumerKey = "ST6eAABKDRKTqbN7pPo2A";
+
+               /// <summary>
+               /// OAuthの署名作成用秘密コンシューマーデータ
+               /// </summary>
+               private const string ConsumerSecretKey = "BJMEiivrXlqGESzdb8D0bvLfNYf3fifXRDMFjMogXg";
+
+               private string[] pictureExt = new string[] { ".jpg", ".jpeg", ".gif", ".png" };
+
+               private const long MaxFileSize = 4 * 1024 * 1024;
+
+               private Twitter tw;
+
+               public string Upload( ref string filePath, ref string message, long reply_to )
+               {
+                       if ( string.IsNullOrEmpty( filePath ) )
+                               return "Err:File isn't specified.";
+                       if ( string.IsNullOrEmpty( message ) )
+                               message = "";
+
+                       FileInfo mediaFile;
+                       try
+                       {
+                               mediaFile = new FileInfo( filePath );
+                       }
+                       catch ( NotSupportedException ex )
+                       {
+                               return "Err:" + ex.Message;
+                       }
+                       if ( mediaFile == null || !mediaFile.Exists )
+                               return "Err:File isn't exists.";
+
+                       string content = "";
+                       HttpStatusCode ret;
+                       // img.lyへの投稿
+                       try
+                       {
+                               ret = this.UploadFile( mediaFile, message, ref content );
+                       }
+                       catch ( Exception ex )
+                       {
+                               return "Err:" + ex.Message;
+                       }
+
+                       string url = "";
+                       if ( ret == HttpStatusCode.OK )
+                       {
+                               XmlDocument xd = new XmlDocument();
+                               try
+                               {
+                                       xd.LoadXml( content );
+                                       // URLの取得
+                                       url = xd.SelectSingleNode( "/image/url" ).InnerText;
+                               }
+                               catch ( XmlException ex )
+                               {
+                                       return "Err:" + ex.Message;
+                               }
+                               catch ( Exception ex )
+                               {
+                                       return "Err:" + ex.Message;
+                               }
+                       }
+                       else
+                       {
+                               return "Err:" + ret.ToString();
+                       }
+                       // アップロードまでは成功
+                       filePath = "";
+                       if ( string.IsNullOrEmpty( url ) )
+                               url = "";
+                       // Twitterへの投稿
+                       // 投稿メッセージの再構成
+                       if ( string.IsNullOrEmpty( message ) )
+                               message = "";
+                       if ( message.Length + AppendSettingDialog.Instance.TwitterConfiguration.CharactersReservedPerMedia + 1 > 140 )
+                               message = message.Substring( 0, 140 - AppendSettingDialog.Instance.TwitterConfiguration.CharactersReservedPerMedia - 1 ) + " " + url;
+                       else
+                               message += " " + url;
+
+                       return tw.PostStatus( message, reply_to );
+               }
+
+               private HttpStatusCode UploadFile( FileInfo mediaFile, string message, ref string content )
+               {
+                       // Message必須
+                       if ( string.IsNullOrEmpty( message ) )
+                               message = "";
+                       // Check filetype and size(Max 4MB)
+                       if ( !this.CheckValidExtension( mediaFile.Extension ) )
+                               throw new ArgumentException( "Service don't support this filetype." );
+                       if ( !this.CheckValidFilesize( mediaFile.Extension, mediaFile.Length ) )
+                               throw new ArgumentException( "File is too large." );
+
+                       Dictionary< string, string > param = new Dictionary< string, string >();
+                       param.Add( "message", message );
+                       List< KeyValuePair< string, FileInfo > > binary = new List< KeyValuePair< string, FileInfo > >();
+                       binary.Add( new KeyValuePair< string, FileInfo >( "media", mediaFile ) );
+                       this.InstanceTimeout = 60000; // タイムアウト60秒
+
+                       return this.GetContent( HttpConnection.PostMethod, new Uri( "http://img.ly/api/2/upload.xml" ), param, binary, ref content, null, null );
+               }
+
+               public bool CheckValidExtension( string ext )
+               {
+                       if ( Array.IndexOf( this.pictureExt, ext.ToLower() ) > -1 )
+                               return true;
+
+                       return false;
+               }
+
+               public string GetFileOpenDialogFilter()
+               {
+                       return "Image Files(*.gif;*.jpg;*.jpeg;*.png)|*.gif;*.jpg;*.jpeg;*.png";
+               }
+
+               public UploadFileType GetFileType( string ext )
+               {
+                       if ( this.CheckValidExtension( ext ) )
+                               return UploadFileType.Picture;
+
+                       return UploadFileType.Invalid;
+               }
+
+               public bool IsSupportedFileType( UploadFileType type )
+               {
+                       return type.Equals( UploadFileType.Picture );
+               }
+
+               public bool CheckValidFilesize( string ext, long fileSize )
+               {
+                       if ( this.CheckValidExtension( ext ) )
+                               return fileSize <= imgly.MaxFileSize;
+
+                       return false;
+               }
+
+               public bool Configuration( string key, object value )
+               {
+                       return true;
+               }
+
+               public imgly( Twitter twitter )
+                       : base( new Uri( "http://api.twitter.com/" ), new Uri( "https://api.twitter.com/1/account/verify_credentials.json" ) )
+               {
+                       this.tw = twitter;
+                       this.Initialize( imgly.ConsumerKey, imgly.ConsumerSecretKey, tw.AccessToken, tw.AccessTokenSecret, "", "" );
+               }
+       }
+}
index bb92f70..5ada05b 100644 (file)
@@ -49,6 +49,7 @@
     <Compile Include="Connection\HttpConnectionOAuth.cs" />\r
     <Compile Include="Connection\HttpConnectionOAuthEcho.cs" />\r
     <Compile Include="Connection\IHttpConnection.cs" />\r
+    <Compile Include="Connection\imgly.cs" />\r
     <Compile Include="Connection\IMultimediaShareService.cs" />\r
     <Compile Include="Connection\TwitterPhoto.cs" />\r
     <Compile Include="Connection\TwitVideo.cs" />\r