예제 #1
0
        /// <summary>
        /// Сваля новините и ги зарежда в tmp таблици
        /// </summary>
        private void LoadNewsRSS(SqliteCommand aCmmndNews, SqliteCommand aCmmndEncl, NewsSource aNSource)
        {
            // Освобождата tmp таблиците
            OnLog(LogMessageType.Event, _PNews.WSaitID.ToString() + _Msg1_ExemptionТmpТables);
            // tmp_news
            aCmmndNews.CommandText = "DELETE FROM tmp_news;";
            aCmmndNews.ExecuteNonQuery();

            // tmp_enclosure
            aCmmndEncl.CommandText = "DELETE FROM tmp_enclosure;";
            aCmmndEncl.ExecuteNonQuery();

            // Зарежда tmp таблиците
            // tmp_news
            aCmmndNews.CommandText =
                "INSERT INTO tmp_news " +
                "        (  news_site_id,  news_id,  news_guid,  news_title,  news_link,  news_description,  news_body, news_comments,  news_pubdate,  news_category ) " +
                " VALUES ( @news_site_id, @news_id, @news_guid, @news_title, @news_link, @news_description, @news_body, @news_comments, @news_pubdate, @news_category ); ";
            aCmmndNews.Parameters.Clear();
            aCmmndNews.Parameters.Add("@news_site_id", DbType.Int32).Value = _PNews.WSaitID;
            aCmmndNews.Parameters.Add("@news_id", DbType.Int32);
            aCmmndNews.Parameters.Add("@news_guid", DbType.String);
            aCmmndNews.Parameters.Add("@news_title", DbType.String);
            aCmmndNews.Parameters.Add("@news_link", DbType.String);
            aCmmndNews.Parameters.Add("@news_description", DbType.String);
            aCmmndNews.Parameters.Add("@news_body", DbType.String);
            aCmmndNews.Parameters.Add("@news_comments", DbType.String);
            aCmmndNews.Parameters.Add("@news_pubdate", DbType.DateTime);
            aCmmndNews.Parameters.Add("@news_category", DbType.String);

            // tmp_enclosure
            aCmmndEncl.CommandText =
                "INSERT INTO tmp_enclosure " +
                "        (  news_id,  encl_link,  encl_type ) " +
                " VALUES ( @news_id, @encl_link, @encl_type ); ";
            aCmmndEncl.Parameters.Clear();
            aCmmndEncl.Parameters.Add("@news_id", DbType.Int32);
            aCmmndEncl.Parameters.Add("@encl_link", DbType.String);
            aCmmndEncl.Parameters.Add("@encl_type", DbType.String);

            //
            OnLog(LogMessageType.Event, _PNews.WSaitID.ToString() + _Msg2_DownloadedAndFilledNews);
            // create a new xml doc
            XmlDocument doc = new XmlDocument();

            doc.XmlResolver = null;

            // load the xml doc
            // doc.Load(aNSource.URL);
            string rssPage  = RSSFeeds.dUtils.DownloadRss(aNSource.URL);
            int    indexEnd = rssPage.IndexOf("</rss>");

            if (indexEnd > 0)
            {
                indexEnd += 6;
                int endCount = rssPage.Length - indexEnd;
                rssPage = rssPage.Remove(indexEnd, endCount);
            }
            doc.LoadXml(rssPage);

            // get an xpath navigator
            XPathNavigator navigator = doc.CreateNavigator();
            NewsItem       NData     = new NewsItem();

            // Get the links from the RSS feed
            XPathNodeIterator nodesLink = navigator.Select("//rss/channel/item");
            int iNewsID = 1;

            while (nodesLink.MoveNext())
            {
                NData.Clear();
                // clean up the link
                XPathNodeIterator RNode = nodesLink.Current.SelectChildren(XPathNodeType.Element);
                //
                bool bRes = true;
                while (RNode.MoveNext() && bRes)
                {
                    bRes = _PNews.ParseNews(NData, RNode.Current);
                }
                // Ако е успешно заредена новината
                if (bRes)
                {
                    // tmp_news
                    aCmmndNews.Parameters["@news_id"].Value          = iNewsID;
                    aCmmndNews.Parameters["@news_guid"].Value        = NData.Guid;
                    aCmmndNews.Parameters["@news_title"].Value       = NData.Title;
                    aCmmndNews.Parameters["@news_link"].Value        = NData.Link;
                    aCmmndNews.Parameters["@news_description"].Value = NData.Description;
                    aCmmndNews.Parameters["@news_body"].Value        = NData.Body;
                    aCmmndNews.Parameters["@news_comments"].Value    = NData.Comments;
                    aCmmndNews.Parameters["@news_pubdate"].Value     = NData.pubDate;
                    aCmmndNews.Parameters["@news_category"].Value    = (NData.Category.Equals("") ? aNSource.DefCategory : NData.Category).ToLower().Trim();

                    aCmmndNews.ExecuteNonQuery();

                    // tmp_enclosure
                    aCmmndEncl.Parameters["@news_id"].Value = iNewsID;
                    foreach (Enclosure encl in NData.Enclosure)
                    {
                        aCmmndEncl.Parameters["@encl_link"].Value = encl.Link;
                        aCmmndEncl.Parameters["@encl_type"].Value = encl.Type;

                        aCmmndEncl.ExecuteNonQuery();
                    }
                    //
                    iNewsID++;
                }
                NData.Clear();
            }
        }
예제 #2
0
        /// <summary>
        /// Сваля новините и ги зарежда в tmp таблици
        /// </summary>
        private void LoadNewsRSS(SqliteCommand aCmmndNews, SqliteCommand aCmmndEncl, NewsSource aNSource)
        {
            // Освобождата tmp таблиците
            OnLog(LogMessageType.Event, _PNews.WSaitID.ToString() + _Msg1_ExemptionТmpТables);
            // tmp_news
            aCmmndNews.CommandText = "DELETE FROM tmp_news;";
            aCmmndNews.ExecuteNonQuery();

            // tmp_enclosure
            aCmmndEncl.CommandText = "DELETE FROM tmp_enclosure;";
            aCmmndEncl.ExecuteNonQuery();

            // Зарежда tmp таблиците
            // tmp_news
            aCmmndNews.CommandText =
                "INSERT INTO tmp_news " +
                "        (  news_site_id,  news_id,  news_guid,  news_title,  news_link,  news_description,  news_body, news_comments,  news_pubdate,  news_category ) " +
                " VALUES ( @news_site_id, @news_id, @news_guid, @news_title, @news_link, @news_description, @news_body, @news_comments, @news_pubdate, @news_category ); ";
            aCmmndNews.Parameters.Clear();
            aCmmndNews.Parameters.Add("@news_site_id", DbType.Int32).Value = _PNews.WSaitID;
            aCmmndNews.Parameters.Add("@news_id", DbType.Int32);
            aCmmndNews.Parameters.Add("@news_guid", DbType.String);
            aCmmndNews.Parameters.Add("@news_title", DbType.String);
            aCmmndNews.Parameters.Add("@news_link", DbType.String);
            aCmmndNews.Parameters.Add("@news_description", DbType.String);
            aCmmndNews.Parameters.Add("@news_body", DbType.String);
            aCmmndNews.Parameters.Add("@news_comments", DbType.String);
            aCmmndNews.Parameters.Add("@news_pubdate", DbType.DateTime);
            aCmmndNews.Parameters.Add("@news_category", DbType.String);

            // tmp_enclosure
            aCmmndEncl.CommandText =
                "INSERT INTO tmp_enclosure " +
                "        (  news_id,  encl_link,  encl_type ) " +
                " VALUES ( @news_id, @encl_link, @encl_type ); ";
            aCmmndEncl.Parameters.Clear();
            aCmmndEncl.Parameters.Add("@news_id", DbType.Int32);
            aCmmndEncl.Parameters.Add("@encl_link", DbType.String);
            aCmmndEncl.Parameters.Add("@encl_type", DbType.String);

            //
            OnLog(LogMessageType.Event, _PNews.WSaitID.ToString() + _Msg2_DownloadedAndFilledNews);
            // create a new xml doc
            XmlDocument doc = new XmlDocument();
            doc.XmlResolver = null;

            // load the xml doc
            // doc.Load(aNSource.URL);
            string rssPage = RSSFeeds.dUtils.DownloadRss(aNSource.URL);
            int indexEnd = rssPage.IndexOf("</rss>");
            if (indexEnd > 0)
            {
                indexEnd += 6;
                int endCount = rssPage.Length - indexEnd;
                rssPage = rssPage.Remove(indexEnd, endCount);
            }
            doc.LoadXml(rssPage);

            // get an xpath navigator
            XPathNavigator navigator = doc.CreateNavigator();
            NewsItem NData = new NewsItem();

            // Get the links from the RSS feed
            XPathNodeIterator nodesLink = navigator.Select("//rss/channel/item");
            int iNewsID = 1;
            while (nodesLink.MoveNext())
            {
                NData.Clear();
                // clean up the link
                XPathNodeIterator RNode = nodesLink.Current.SelectChildren(XPathNodeType.Element);
                //
                bool bRes = true;
                while (RNode.MoveNext() && bRes)
                {
                    bRes = _PNews.ParseNews(NData, RNode.Current);
                }
                // Ако е успешно заредена новината
                if (bRes)
                {
                    // tmp_news
                    aCmmndNews.Parameters["@news_id"].Value = iNewsID;
                    aCmmndNews.Parameters["@news_guid"].Value = NData.Guid;
                    aCmmndNews.Parameters["@news_title"].Value = NData.Title;
                    aCmmndNews.Parameters["@news_link"].Value = NData.Link;
                    aCmmndNews.Parameters["@news_description"].Value = NData.Description;
                    aCmmndNews.Parameters["@news_body"].Value = NData.Body;
                    aCmmndNews.Parameters["@news_comments"].Value = NData.Comments;
                    aCmmndNews.Parameters["@news_pubdate"].Value = NData.pubDate;
                    aCmmndNews.Parameters["@news_category"].Value = (NData.Category.Equals("") ? aNSource.DefCategory : NData.Category).ToLower().Trim();

                    aCmmndNews.ExecuteNonQuery();

                    // tmp_enclosure
                    aCmmndEncl.Parameters["@news_id"].Value = iNewsID;
                    foreach (Enclosure encl in NData.Enclosure)
                    {
                        aCmmndEncl.Parameters["@encl_link"].Value = encl.Link;
                        aCmmndEncl.Parameters["@encl_type"].Value = encl.Type;

                        aCmmndEncl.ExecuteNonQuery();
                    }
                    //
                    iNewsID++;
                }
                NData.Clear();
            }
        }