예제 #1
0
        public string LanguageDetect(string source)
        {
            var http    = new HttpVarious();
            var headers = new Dictionary <string, string>
            {
                { "User-Agent", MyCommon.GetUserAgentString() },
                { "v", "1.0" },
                { "q", source }
            };
            var content = string.Empty;

            if (!http.GetData(LanguageDetectEndPoint, headers, ref content))
            {
                return(string.Empty);
            }

            try
            {
                var res = D.CreateDataFromJson <LanguageDetectResponse>(content);
                return(res.ResponseData.Language);
            }
            catch (Exception)
            {
                return(string.Empty);
            }
        }
예제 #2
0
 public bool GetDataToFile(string url, string savePath)
 {
     try
     {
         var req = CreateRequest(GetMethod, new Uri(url), null, false);
         req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
         req.UserAgent = MyCommon.GetUserAgentString();
         using (var strm = new FileStream(savePath, FileMode.Create, FileAccess.Write))
         {
             try
             {
                 var res = GetResponse(req, strm, null, false);
                 strm.Close();
                 return(res == HttpStatusCode.OK);
             }
             catch (Exception)
             {
                 strm.Close();
                 return(false);
             }
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }
예제 #3
0
        // Google URL Shortener API
        // http://code.google.com/intl/ja/apis/urlshortener/v1/getting_started.html
        public string Shorten(string source)
        {
            var headers = new Dictionary <string, string> {
                { "User-Agent", MyCommon.GetUserAgentString() }, { "Content-Type", "application/json" }
            };

            var http = new HttpVarious();

            http.PostData("https://www.googleapis.com/urlshortener/v1/url", headers);
            return(string.Empty);
        }
예제 #4
0
        public bool Translate(string srclng, string dstlng, string source, ref string destination, out string errorMessage)
        {
            errorMessage = string.Empty;
            if (string.IsNullOrEmpty(srclng) || string.IsNullOrEmpty(dstlng))
            {
                return(false);
            }

            var headers = new Dictionary <string, string>
            {
                { "v", "1.0" },
                { "User-Agent", MyCommon.GetUserAgentString() },
                { "langpair", string.Format("{0}|{1}", srclng, dstlng) },
                { "q", source }
            };

            var content = string.Empty;
            var http    = new HttpVarious();

            if (!http.GetData(TranslateEndPoint, headers, ref content))
            {
                return(false);
            }

            TranslateResponse res;

            try
            {
                res = D.CreateDataFromJson <TranslateResponse>(content);
            }
            catch (Exception)
            {
                errorMessage = "Err:Invalid JSON";
                return(false);
            }

            if (res.ResponseData == null)
            {
                errorMessage = "Err:" + res.ResponseDetails;
                return(false);
            }

            var body = res.ResponseData.TranslatedText;
            var buf  = HttpUtility.UrlDecode(body);

            destination = string.Copy(buf);
            return(true);
        }
예제 #5
0
        /// <summary>
        /// BackgroundWorkerから呼び出されるサムネイル画像作成デリゲート
        /// </summary>
        /// <param name="args">CreateImageArgs</param>
        /// <returns>サムネイル画像作成に成功した場合はTrue,失敗した場合はFalse
        /// なお失敗した場合はargs.errmsgにエラーを表す文字列がセットされる</returns>
        /// <remarks></remarks>
        private static bool StreamZoo_CreateImage(CreateImageArgs args)
        {
            var src = string.Empty;

            if (!new HttpVarious().GetData(args.Url.Value, null, ref src, 0, ref args.Errmsg, MyCommon.GetUserAgentString()))
            {
                return(false);
            }

            //  <meta property="og:image"  content="http://cdn.streamzoo.com/si_5790766_p194egkoms_lr.jpg" />
            var thummc = Regex.Match(src, "property=\"og:image\"(?: *)content=\"([^\"]+)\"", RegexOptions.IgnoreCase);

            if (!thummc.Success)
            {
                return(false);
            }

            var thumburl = thummc.Result("$1");
            var img      = new HttpVarious().GetImage(thumburl, args.Url.Value, 10000, ref args.Errmsg);

            if (img == null)
            {
                return(false);
            }

            args.AddTooltipInfo(args.Url.Key, string.Empty, img);
            return(true);
        }
예제 #6
0
        /// <summary>
        /// BackgroundWorkerから呼び出されるサムネイル画像作成デリゲート
        /// </summary>
        /// <param name="args">CreateImageArgs</param>
        /// <returns>サムネイル画像作成に成功した場合はTrue,失敗した場合はFalse
        /// なお失敗した場合はargs.errmsgにエラーを表す文字列がセットされる</returns>
        private static bool ViaMe_CreateImage(CreateImageArgs args)
        {
            var mc     = Regex.Match(args.Url.Value, @"^https?://via\.me/-(\w+)$", RegexOptions.IgnoreCase);
            var apiUrl = mc.Result("http://via.me/api/v1/posts/$1");
            var src    = string.Empty;

            if (!new HttpVarious().GetData(apiUrl, null, ref src, 0, ref args.Errmsg, MyCommon.GetUserAgentString()))
            {
                return(false);
            }

            // "thumb_url":"http://img.viame-cdn.com/photos/0e267550-b6c4-012f-bf69-123138092a26/s150x150.jpg",
            var thummc = Regex.Match(src, "\"thumb_url\":\"([^\"]+)\"", RegexOptions.IgnoreCase);

            if (!thummc.Success)
            {
                return(false);
            }

            var thumburl = thummc.Result("$1");
            var img      = new HttpVarious().GetImage(thumburl, args.Url.Key, 10000, ref args.Errmsg);

            if (img == null)
            {
                return(false);
            }

            args.AddTooltipInfo(args.Url.Key, string.Empty, img);
            return(true);
        }
예제 #7
0
        /// <summary>
        /// BackgroundWorkerから呼び出されるサムネイル画像作成デリゲート
        /// </summary>
        /// <param name="args">CreateImageArgs</param>
        /// <returns>サムネイル画像作成に成功した場合はTrue,失敗した場合はFalse
        /// なお失敗した場合はargs.errmsgにエラーを表す文字列がセットされる</returns>
        /// <remarks></remarks>
        private static bool MiilMe_CreateImage(CreateImageArgs args)
        {
            var photoId = new Uri(args.Url.Value).AbsolutePath.Split('/')[2];
            var apiUrl  = $"http://miil.me/api/photos/{ToInt32(photoId, 36)}.js";

            var json = string.Empty;

            if (!new HttpVarious().GetData(apiUrl, null, ref json, 0, ref args.Errmsg, MyCommon.GetUserAgentString()))
            {
                return(false);
            }

            // name="twitter:image" content="http://images.miil.me/i/ab9f8cd6-9500-11e2-97f8-123143016634.jpg"
            var thummc = Regex.Match(json, "\"url\"\\s*:\\s*\"([^\"]+)\"", RegexOptions.IgnoreCase);

            if (!thummc.Success)
            {
                return(false);
            }

            var thumburl = thummc.Result("$1");
            var img      = new HttpVarious().GetImage(thumburl, args.Url.Key, 10000, ref args.Errmsg);

            if (img == null)
            {
                return(false);
            }

            args.AddTooltipInfo(args.Url.Key, string.Empty, img);
            return(true);
        }
예제 #8
0
        /// <summary>
        /// BackgroundWorkerから呼び出されるサムネイル画像作成デリゲート
        /// </summary>
        /// <param name="args">CreateImageArgs</param>
        /// <returns>サムネイル画像作成に成功した場合はTrue,失敗した場合はFalse
        /// なお失敗した場合はargs.errmsgにエラーを表す文字列がセットされる</returns>
        /// <remarks></remarks>
        private static bool Path_CreateImage(CreateImageArgs args)
        {
            var src = string.Empty;

            if (!new HttpVarious().GetData(args.Url.Value, null, ref src, 0, ref args.Errmsg, MyCommon.GetUserAgentString()))
            {
                return(false);
            }

            var thummc = Regex.Match(src, "property=\"og:image\" content=\"([^\"]+)\"", RegexOptions.IgnoreCase);

            if (!thummc.Success)
            {
                return(false);
            }

            var thumburl = thummc.Result("$1");
            var img      = new HttpVarious().GetImage(thumburl, args.Url.Key, 10000, ref args.Errmsg);

            if (img == null)
            {
                return(false);
            }

            args.AddTooltipInfo(args.Url.Key, string.Empty, img);
            return(true);
        }
예제 #9
0
        /// <summary>
        /// BackgroundWorkerから呼び出されるサムネイル画像作成デリゲート
        /// </summary>
        /// <param name="args">Class CreateImageArgs
        ///                                 url As KeyValuePair(Of String, String)                  元URLとサムネイルURLのKeyValuePair
        ///                                 pics As List(Of KeyValuePair(Of String, Image))         元URLとサムネイル画像のKeyValuePair
        ///                                 tooltiptext As List(Of KeyValuePair(Of String, String)) 元URLとツールチップテキストのKeyValuePair
        ///                                 errmsg As String                                        取得に失敗した際のエラーメッセージ
        /// </param>
        /// <returns>サムネイル画像作成に成功した場合はTrue,失敗した場合はFalse
        /// なお失敗した場合はargs.errmsgにエラーを表す文字列がセットされる</returns>
        /// <remarks></remarks>
        private static bool Nicovideo_CreateImage(CreateImageArgs args)
        {
            var    mc     = Regex.Match(args.Url.Value, "^http://(?:(www|ext)\\.nicovideo\\.jp/watch|nico\\.ms)/(?<id>(?:sm|nm)?([0-9]+))(\\?.+)?$", RegexOptions.IgnoreCase);
            string apiurl = "http://www.nicovideo.jp/api/getthumbinfo/" + mc.Groups["id"].Value;
            string src    = string.Empty;

            if (!(new HttpVarious()).GetData(apiurl, null, ref src, 0, ref args.Errmsg, MyCommon.GetUserAgentString()))
            {
                return(false);
            }

            var    sb = new StringBuilder();
            string imgurl;

            try
            {
                var xdoc = new XmlDocument();
                xdoc.LoadXml(src);
                string status = xdoc.SelectSingleNode("/nicovideo_thumb_response").Attributes["status"].Value;
                if (status != "ok")
                {
                    imgurl      = string.Empty;
                    args.Errmsg = status == "fail" ? xdoc.SelectSingleNode("/nicovideo_thumb_response/error/code").InnerText : "UnknownResponse";
                }
                else
                {
                    TryGetSingleNodeText(xdoc, "/nicovideo_thumb_response/thumb/thumbnail_url", out imgurl);
                    string tmp;
                    if (TryGetSingleNodeText(xdoc, "/nicovideo_thumb_response/thumb/title", out tmp))
                    {
                        if (!string.IsNullOrEmpty(tmp))
                        {
                            sb.AppendLine(R.NiconicoInfoText1 + tmp);
                        }
                    }

                    if (TryGetSingleNodeText(xdoc, "/nicovideo_thumb_response/thumb/length", out tmp))
                    {
                        if (!string.IsNullOrEmpty(tmp))
                        {
                            sb.AppendLine(R.NiconicoInfoText2 + tmp);
                        }
                    }

                    if (TryGetSingleNodeText(xdoc, "/nicovideo_thumb_response/thumb/first_retrieve", out tmp))
                    {
                        DateTime tm;
                        if (DateTime.TryParse(tmp, out tm))
                        {
                            sb.AppendLine(R.NiconicoInfoText3 + tm);
                        }
                    }

                    if (TryGetSingleNodeText(xdoc, "/nicovideo_thumb_response/thumb/view_counter", out tmp))
                    {
                        if (!string.IsNullOrEmpty(tmp))
                        {
                            sb.AppendLine(R.NiconicoInfoText4 + tmp);
                        }
                    }

                    if (TryGetSingleNodeText(xdoc, "/nicovideo_thumb_response/thumb/comment_num", out tmp))
                    {
                        if (!string.IsNullOrEmpty(tmp))
                        {
                            sb.AppendLine(R.NiconicoInfoText5 + tmp);
                        }
                    }

                    if (TryGetSingleNodeText(xdoc, "/nicovideo_thumb_response/thumb/mylist_counter", out tmp))
                    {
                        if (!string.IsNullOrEmpty(tmp))
                        {
                            sb.AppendLine(R.NiconicoInfoText6 + tmp);
                        }
                    }
                }
            }
            catch (Exception)
            {
                imgurl      = string.Empty;
                args.Errmsg = "Invalid XML";
            }

            if (string.IsNullOrEmpty(imgurl))
            {
                return(false);
            }

            Image img = new HttpVarious().GetImage(imgurl, args.Url.Key, 0, ref args.Errmsg);

            if (img == null)
            {
                return(false);
            }

            args.AddTooltipInfo(args.Url.Key, sb.ToString().Trim(), img);
            return(true);
        }
예제 #10
0
        /// <summary>
        /// BackgroundWorkerから呼び出されるサムネイル画像作成デリゲート
        /// </summary>
        /// <param name="args">Class CreateImageArgs
        ///                                 url As KeyValuePair(Of String, String)                  元URLとサムネイルURLのKeyValuePair
        ///                                 pics As List(Of KeyValuePair(Of String, Image))         元URLとサムネイル画像のKeyValuePair
        ///                                 tooltiptext As List(Of KeyValuePair(Of String, String)) 元URLとツールチップテキストのKeyValuePair
        ///                                 errmsg As String                                        取得に失敗した際のエラーメッセージ
        /// </param>
        /// <returns>サムネイル画像作成に成功した場合はTrue,失敗した場合はFalse
        /// なお失敗した場合はargs.errmsgにエラーを表す文字列がセットされる</returns>
        /// <remarks></remarks>
        private static bool Lockerz_CreateImage(CreateImageArgs args)
        {
            var src = string.Empty;

            if (!new HttpVarious().GetData(args.Url.Value, null, ref src, 0, ref args.Errmsg, MyCommon.GetUserAgentString()))
            {
                return(false);
            }

            // <meta name="twitter:image" value="http://static.lockerz.com/decalz/original/image001366662197907nmgm7x.jpeg" />
            var thummc = Regex.Match(src, "name=\"twitter:image\" (?:value|content)=\"([^\"]+)\"", RegexOptions.IgnoreCase);

            if (!thummc.Success)
            {
                return(false);
            }

            var thumburl = thummc.Result("$1");
            var img      = new HttpVarious().GetImage(thumburl, args.Url.Key, 10000, ref args.Errmsg);

            if (img == null)
            {
                return(false);
            }

            // 成功した場合はURLに対応する画像、ツールチップテキストを登録
            args.AddTooltipInfo(args.Url.Key, string.Empty, img);
            return(true);
        }
예제 #11
0
        /// <summary>
        /// BackgroundWorkerから呼び出されるサムネイル画像作成デリゲート
        /// </summary>
        /// <param name="args">Class CreateImageArgs
        ///                                 url As KeyValuePair(Of String, String)                  元URLとサムネイルURLのKeyValuePair
        ///                                 pics As List(Of KeyValuePair(Of String, Image))         元URLとサムネイル画像のKeyValuePair
        ///                                 tooltiptext As List(Of KeyValuePair(Of String, String)) 元URLとツールチップテキストのKeyValuePair
        ///                                 errmsg As String                                        取得に失敗した際のエラーメッセージ
        /// </param>
        /// <returns>サムネイル画像作成に成功した場合はTrue,失敗した場合はFalse
        /// なお失敗した場合はargs.errmsgにエラーを表す文字列がセットされる</returns>
        /// <remarks></remarks>
        private static bool PicPlz_CreateImage(CreateImageArgs args)
        {
            string apiurl = "http://api.picplz.com/api/v2/pic.json?";
            Match  mc     = Regex.Match(args.Url.Value, "^http://picplz\\.com/user/\\w+/pic/(?<longurl_ids>\\w+)/?$", RegexOptions.IgnoreCase);

            if (mc.Success)
            {
                apiurl += "longurl_ids=" + mc.Groups["longurl_ids"].Value;
            }
            else
            {
                mc = Regex.Match(args.Url.Value, "^http://picplz\\.com/(?<shorturl_ids>\\w+)?$", RegexOptions.IgnoreCase);
                if (mc.Success)
                {
                    apiurl += "shorturl_ids=" + mc.Groups["shorturl_ids"].Value;
                }
                else
                {
                    return(false);
                }
            }

            string src    = string.Empty;
            string imgurl = string.Empty;

            if (!(new HttpVarious()).GetData(apiurl, null, ref src, 0, ref args.Errmsg, MyCommon.GetUserAgentString()))
            {
                return(false);
            }

            var sb = new StringBuilder();

            PicPlzDataModel.ResultData res;
            try
            {
                res = D.CreateDataFromJson <PicPlzDataModel.ResultData>(src);
            }
            catch (Exception)
            {
                return(false);
            }

            if (res.Result != "ok")
            {
                return(false);
            }

            try
            {
                imgurl = res.Value.Pics[0].PicFiles.Pic320Rh.ImgUrl;
            }
            catch (Exception)
            {
            }

            try
            {
                sb.Append(res.Value.Pics[0].Caption);
            }
            catch (Exception)
            {
            }

            if (string.IsNullOrEmpty(imgurl))
            {
                return(false);
            }

            Image img = new HttpVarious().GetImage(imgurl, args.Url.Key, 0, ref args.Errmsg);

            if (img == null)
            {
                return(false);
            }

            args.AddTooltipInfo(args.Url.Key, sb.ToString().Trim(), img);
            return(true);
        }