示例#1
0
        public static async void InsertBDataAsync(BData bdata)
        {
            var entity = await GetBDataAsync(bdata.Calendar);

            if (entity != null)
            {
                return;
            }
            using (var conn = GetConnection()) {
                using (var command = new SqliteCommand(conn)) {
                    command.CommandType = System.Data.CommandType.Text;
                    command.CommandText = String.Format("INSERT INTO {0} (TITLE,COPYRIGHT,DESCRIPTION,LOCATION,BITMAP,CALENDAR)" +
                                                        " VALUES(:Title,:Copyright,:Description,:Location,:Bitmap,:Calendar)", BDataTableName);

                    command.Parameters.Add(new SqliteParameter("Title", bdata.Title));
                    command.Parameters.Add(new SqliteParameter("Copyright", bdata.Copyright));
                    command.Parameters.Add(new SqliteParameter("Description", bdata.Description));
                    command.Parameters.Add(new SqliteParameter("Location", bdata.Location));
                    command.Parameters.Add(new SqliteParameter("Bitmap", await BitmapUtil.GetBitmapBufferAsync(bdata.Bitmap)));
                    command.Parameters.Add(new SqliteParameter("Calendar", DateUtil.GetDateTicks(bdata.Calendar)));

                    await command.ExecuteNonQueryAsync();
                }
            }
        }
示例#2
0
        private async Task <BData> GetBDataFromRemoteAsync(int d)
        {
            var size = new Point();

            mMainActivity.WindowManager.DefaultDisplay.GetSize(size);
            var screenWidth  = size.X;      // 屏幕宽(像素,如:768px)  
            var screenHeight = size.Y;      // 屏幕高(像素,如:1184px)  

            var res   = Utils.GetSuitableResolution(screenWidth, screenHeight);
            var bData = new BData();

            var html = await GetHtmlDataAsync(string.Format(Consts.BingLifeUrl, DateTime.Today.Subtract(new TimeSpan(d, 0, 0, 0)).ToString("yyyyMMdd")));

            bData.Title       = ExtractText(html, "<div class=\"hplaTtl\">(.*?)</div>");
            bData.Location    = ExtractText(html, "<span class=\"hplaAttr\">(.*?)</span");
            bData.Description = ExtractText(html, "<div id=\"hplaSnippet\">(.*?)</div>");

            var json = await GetHtmlDataAsync(string.Format(Consts.BingHPImageArchiveUrl, d, DateUtil.ConvertFromLocalDateTimeToSeconds(DateTime.Now)));

            var JBData = JsonConvert.DeserializeObject <JBData>(json);

            bData.Copyright = JBData.Images[0].Copyright;
            bData.ImageUrl  = Consts.BingBaseUrl + JBData.Images[0].Urlbase + "_" + res.Width + "x" + res.Height + ".jpg";

            bData.Bitmap = await GetBitmapAsync(bData.ImageUrl);

            if (bData.Bitmap.Width != screenWidth || bData.Bitmap.Height != screenHeight)
            {
                bData.Bitmap = BitmapUtil.ZoomBitmap(bData.Bitmap, screenWidth, screenHeight);
            }

            bData.Calendar = FormatCalendar(JBData);

            return(bData);
        }
示例#3
0
 public static async Task <BData> GetBDataAsync(DateTime dt)
 {
     using (var conn = GetConnection()) {
         using (var command = new SqliteCommand(conn)) {
             command.CommandType = System.Data.CommandType.Text;
             command.CommandText = String.Format("SELECT * FROM {0} WHERE CALENDAR={1}", BDataTableName, DateUtil.GetDateTicks(dt));
             using (var dr = await command.ExecuteReaderAsync().ConfigureAwait(false)) {
                 if (dr.Read())
                 {
                     return(new BData {
                         Title = dr["Title"].ToString(),
                         Copyright = dr["Copyright"].ToString(),
                         Description = dr["Description"].ToString(),
                         Location = dr["Location"].ToString(),
                         Bitmap = await BitmapUtil.GetBitmapAsync((byte[])dr["Bitmap"]).ConfigureAwait(false),
                         Calendar = DateUtil.GetDateTimeFromDateTicks(long.Parse(dr["Calendar"].ToString()))
                     });
                 }
             }
         }
     }
     return(null);
 }