Ejemplo n.º 1
0
        /// <summary>
        /// Provides example code for the YahooMediaSyndicationExtension class.
        /// </summary>
        public static void ClassExample()
        {
            // Framework auto-discovers supported extensions based on XML namespace attributes (xmlns) defined on root of resource
            RssFeed feed = RssFeed.Create(new Uri("http://www.example.com/feed.aspx?format=rss"));

            // Extensible framework entities provide properties/methods to determine if entity is extended and predicate based seaching against available extensions
            if (feed.Channel.HasExtensions)
            {
                YahooMediaSyndicationExtension channelExtension = feed.Channel.FindExtension(YahooMediaSyndicationExtension.MatchByType) as YahooMediaSyndicationExtension;
                if (channelExtension != null)
                {
                    // Process channel extension
                }
            }

            foreach (RssItem item in feed.Channel.Items)
            {
                if (item.HasExtensions)
                {
                    YahooMediaSyndicationExtension itemExtension = item.FindExtension(YahooMediaSyndicationExtension.MatchByType) as YahooMediaSyndicationExtension;
                    if (itemExtension != null)
                    {
                        // Process extension for current item
                    }
                }
            }

            // By default the framework will automatically determine what XML namespace attributes (xmlns) to write
            // on the root of the resource based on the extensions applied to extensible parent and child entities
            using (FileStream stream = new FileStream("Feed.xml", FileMode.Create, FileAccess.Write))
            {
                feed.Save(stream);
            }
        }
        // Get Yahoo extension data
        private void SetYahooExtension(IList <AdvancedRssItemMedia> ilarim, YahooMediaSyndicationExtension yme)
        {
            //TODO, case of group!!! for type ??
            foreach (AdvancedRssItemMedia item in ilarim)
            {
                YahooMediaContent ymc = new YahooMediaContent();

                ymc.Url = new Uri(item.Content);

                //Title
                if (item.Title != null && item.Title != "")
                {
                    ymc.Title = new YahooMediaTextConstruct(item.Title);
                }

                //Content
                if (item.Content != null && item.Content != "")
                {
                    try
                    {
                        ymc.Url = new Uri(item.Content);
                    }
                    catch
                    {
                    }
                }

                //ContentType
                if (item.ContentType != null)
                {
                    ymc.ContentType = item.ContentType;
                }

                //Credit
                if (item.Credit != null && item.Credit != "")
                {
                    ymc.Credits.Add(new YahooMediaCredit(item.Credit));
                }

                //Descripcion
                if (item.Description != null && item.Description != "")
                {
                    ymc.Description = new YahooMediaTextConstruct(item.Description);
                }

                yme.Context.AddContent(ymc);
            }
        }
        public void SetChannelRss(AdvancedRssChannel rssChannel, Stream OutputStream)
        {
            RssFeed ArgoticRssFeed = new RssFeed();

            SetBasicChannelData(rssChannel, ArgoticRssFeed.Channel);

            if (rssChannel.RssItems != null)
            {
                foreach (AdvancedRssItem RssItem in rssChannel.RssItems)
                {
                    //New item
                    RssItem ArgoRssItem = new RssItem();

                    //Basic item of the item
                    SetBasicItemData(RssItem, ArgoRssItem);

                    //Extention for Geocoding
                    SetBasicGeocodingExtension(RssItem, ArgoRssItem);

                    //Extention Slash for nomber of comment
                    SetSlashExtension(RssItem, ArgoRssItem);

                    //Yahoo extention for media content
                    if (RssItem.RssfeedItemsMedia != null)
                    {
                        YahooMediaSyndicationExtension yme = new YahooMediaSyndicationExtension();
                        SetYahooExtension(RssItem.RssfeedItemsMedia, yme);
                        ArgoRssItem.AddExtension(yme);
                    }

                    ArgoticRssFeed.Channel.AddItem(ArgoRssItem);
                }
            }

            ArgoticRssFeed.Save(OutputStream);
        }
        private AdvancedRssChannel GetRssChannelFromRss(Uri url)
        {
            AdvancedRssChannel Channel = new AdvancedRssChannel();

            //Argotic object declaration
            RssFeed ArgoticRssFeed = new RssFeed();

            //Load from uri
            try
            {
                ArgoticRssFeed.Load(url, null, null);
            }
            catch
            {
            }

            //Init Channel basic data
            GetBasicChannelData(ArgoticRssFeed.Channel, Channel);

            //Init data for each item
            foreach (RssItem item in ArgoticRssFeed.Channel.Items)
            {
                //Init basic data
                AdvancedRssItem RssItem = new AdvancedRssItem();
                GetBasicItemData(item, RssItem);

                //Extensions type content
                if (item.HasExtensions)
                {
                    //Dublin Core Extension
                    DublinCoreMetadataTermsSyndicationExtension BublinExtension =
                        (DublinCoreMetadataTermsSyndicationExtension)
                        item.FindExtension(DublinCoreMetadataTermsSyndicationExtension.MatchByType);
                    if (BublinExtension != null)
                    {
                        GetDublinCoreExtension(BublinExtension.Context, RssItem);
                    }

                    //Dublin Extension
                    DublinCoreMetadataTermsSyndicationExtension DublinExtension =
                        (DublinCoreMetadataTermsSyndicationExtension)
                        item.FindExtension(DublinCoreMetadataTermsSyndicationExtension.MatchByType);
                    if (DublinExtension != null)
                    {
                        GetDublinCoreExtension(DublinExtension.Context, RssItem);
                    }

                    //Slash Extension
                    SiteSummarySlashSyndicationExtension SlashExtension =
                        (SiteSummarySlashSyndicationExtension)
                        item.FindExtension(SiteSummarySlashSyndicationExtension.MatchByType);
                    if (SlashExtension != null)
                    {
                        GetSlashCoreExtension(SlashExtension.Context, RssItem);

                        /*-----------------------------------------------------------------------------------*/
                        /* TODO: Comment problem                                                             */
                        /* Arrangment for a stupid argotic buc, they wrote "coment" and no "comment" !!!!!!  */
                        /* The news module comment URL, it's the URL + #comments                             */
                        /*-----------------------------------------------------------------------------------*/
                        if (SlashExtension.Context.Comments >= 0 && RssItem.Commenturl == null)
                        {
                            RssItem.Commenturl = item.Link.AbsoluteUri + "#comments";
                        }
                        /*-----------------------------------------------------------------------------------*/
                    }

                    //Geo localization
                    BasicGeocodingSyndicationExtension GMLExtension =
                        (BasicGeocodingSyndicationExtension)
                        item.FindExtension(BasicGeocodingSyndicationExtension.MatchByType);
                    if (GMLExtension != null)
                    {
                        GetBasicGeocodingExtension(GMLExtension.Context, RssItem);
                    }

                    ////Yahoo media tag
                    YahooMediaSyndicationExtension YahooExtension =
                        (YahooMediaSyndicationExtension)item.FindExtension(YahooMediaSyndicationExtension.MatchByType);
                    if (YahooExtension != null)
                    {
                        RssItem.RssfeedItemsMedia = new List <AdvancedRssItemMedia>();
                        GetYahooExtension(YahooExtension.Context, RssItem.RssfeedItemsMedia);
                    }
                }

                Channel.RssItems.Add(RssItem);
            }

            return(Channel);
        }