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); } }
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); } }
// 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); }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }