public static async Task <int> Add(NGImg img) { using var connection = new SqliteConnection(CONN); return(await connection.ExecuteAsync($@"INSERT INTO {NAME} (Key, Title, Link, EnDesc, ZhDesc, AddTime) VALUES (@Key, @Title, @Link, @EnDesc, @ZhDesc, @AddTime);", img)); }
static async Task Main(string[] args) { _conf = Deserialize <Conf>(GetEnvValue("CONF")); await NGImg.InitDB(); List <NGImg> imgs = await NGImg.Query(20); using HttpClient client = new HttpClient(); UnicodeEncoding enc = new UnicodeEncoding(); Random rand = new Random(); int addNum = 0; string data = await client.GetStringAsync(_conf.Url); XElement xe = XElement.Parse(data); foreach (XElement xeItem in xe.Descendants("item")) { XText cdataNode = xeItem.Element("description").FirstNode as XText; GroupCollection groups = Regex.Match(cdataNode.Value, @"(pod-[\s\S]+?)\.jpg[\s\S]+>([\s\S]+)").Groups; string key = groups[1].Value; NGImg img = imgs.FirstOrDefault(p => p.Key == key); if (img == null) { string enDesc = groups[2].Value; string salt = rand.Next(1000, 10000).ToString(); string sign = MD5Hash($"{_conf.BdAppId}{enDesc}{salt}{_conf.BdSecret}"); string rspData = await client.GetStringAsync($"http://api.fanyi.baidu.com/api/trans/vip/translate?from=en&to=zh&appid={_conf.BdAppId}&salt={salt}&sign={sign}&q={enDesc}"); BdTransRsp bdTransRsp = Deserialize <BdTransRsp>(rspData); string zhDesc = enc.GetString(enc.GetBytes(bdTransRsp.trans_result[0].dst)); img = new NGImg { Key = key, Title = xeItem.Element("title").Value, Link = xeItem.Element("link").Value, EnDesc = enDesc, ZhDesc = zhDesc }; addNum += await NGImg.Add(img); } cdataNode.Value += $"<br/>{img.ZhDesc}"; } string xml = xe.ToString(); if (addNum > 0) { await File.WriteAllTextAsync("rss.xml", xml); } Console.WriteLine(xml); }