Example #1
0
        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));
        }
Example #2
0
        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);
        }