2011-10-19 10 views
0

私の問題は、Twitterフィードタイマーがページの絶対フッターとして配置されているサイトの立ち上げを継承したことです。行政当局は、フィードにretweetsや@mentionsを含めたくないと決めた。フィードがAtom RSSを通じて集約されているのがわかります。私は検索条件を変更しようとしましたが、C#コードのツイッターURLは、サイト全体がクラッシュします。Twitter API Atom Aggregator with C#

残念ながら、私はC#で全く慣れていないので、このコードを修正する能力はせいぜい限られています。

ウェブサイトを用いて構成され、ヘッダ、フッタ、さえずり・バー含む、等

さらに、サイトの投影開始はCOBで、この夜なので、最初から別のプラグインを製図することではありません本当にオプションです。

ティッカーは、(それがここに表示されますので、コードはその開閉コメント括弧が欠落している)これでページに呼び出されます。

com.omniupdate.div label="ticker" path="/z-omniupdate/fakes/bfeo/2012/ticker.html"  
bf2012:ticker runat="server"  
/com.omniupdate.div 

CSSは次のとおりです。

#ticker{ 
    width: 100%; 
    height: 43px; 
    border-top: 1px solid #939241; 
    background: #bdcc2a url('/bfeo/2012/img/tweet-bg.gif') 0 0 repeat-x; 
    background: -moz-linear-gradient(#bdcc2a, #a9b625); 
    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#a9b625), to(#e4c595)); 
    background: -webkit-linear-gradient(#bdcc2a, #a9b625); 
    background: -o-linear-gradient(#bdcc2a, #a9b625); 
    position:fixed; 
    z-index: 1000; 
    bottom: 0; 
} 
    #ticker p{ 
     font-size: 15px; 
     color: #fff; 
     text-transform: uppercase; 
     float: left; 
     line-height: 43px; 
     margin-right: 10px; 
    } 
.ticker-engage { 
    list-style: none; 
    padding: 0; 
    margin: 8px 0 0 0; 
    width: 108px; 
    height: 28px; 
    float: left; 
} 
    .ticker-engage li{ 
     display: inline;  
    } 
    .ticker-engage li a{ 
     height: 28px; 
     width: 28px; 
     text-indent: -9999px; 
     float: left; 
     margin: 0 2px 0 0; 
    } 
    .ticker-engage li a.twitter{ 
     background: url('/bfeo/2012/img/twitter-sm.png') 0 0 no-repeat; 
    } 
    .ticker-engage li a.facebook{ 
     background: url('/bfeo/2012/img/facebook-sm.png') 0 0 no-repeat; 
    } 
    .ticker-engage li a.youtube{ 
     background: url('/bfeo/2012/img/youtube-sm.png') 0 0 no-repeat; 
    } 
#tweetlist{ 
    list-style: none; 
    padding: 7px 20px 0 20px; 
    height: 36px; 
    width: 666px; 
    float: left; 
    background: url('/bfeo/2012/img/tweet-bg.gif') 0 0 repeat-x; 
    background: -moz-linear-gradient(#aab726, #98a322); 
    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#aab726), to(#98a322)); 
    background: -webkit-linear-gradient(#aab726, #98a322); 
    background: -o-linear-gradient(#aab726, #98a322); 
    font-size: 12px; 
} 
    #tweetlist li{ 
     display: inline;  
    } 
    #tweetlist li a:link, #tweetlist li a:visited{ 
     color: #fff; 
     text-decoration: none; 
     font-weight: normal; 
    } 
    #tweetlist li a:hover, #tweetlist li a:focus{ 
     text-decoration: underline; 
    } 
    #tweetlist li span{ 
      color: #ffe400; 
    } 

ティッカーた.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ticker.ascx.cs" Inherits="bf_controls_ticker" %> 
<div id="ticker"> 
    <div class="wrapper clearfix"> 
     <p>Engage with us</p> 
     <ul class="ticker-engage"> 
      <li><a class="facebook" target="_blank" href="http://www.facebook.com/booththinking"> 
       Facebook</a></li> 
      <li><a class="twitter" target="_blank" href="http://twitter.com/booththinking">Twitter</a></li> 
      <li><a class="youtube" target="_blank" href="http://www.youtube.com/user/BoothThinking"> 
       Youtube</a></li> 
     </ul> 
     <form id="form1" runat="server"> 
     <div> 
      <ul id="tweetlist"> 
       <asp:Literal ID="Literal1" runat="server"></asp:Literal> 
      </ul> 
     </div> 
     </form> 
    </div> 
</div> 

ticker.ascx.cs

using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml; 
using System.Text; 

public partial class bf_controls_ticker : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.LoadXml(HttpGet("http://search.twitter.com/search.atom?q=booththinking")); 
     XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable); 
     ns.AddNamespace("at", "http://www.w3.org/2005/Atom"); 
     ns.AddNamespace("twitter", "http://api.twitter.com/"); 
     XmlNodeList entries = doc.DocumentElement.SelectNodes("//at:entry", ns); 
     //Response.Write(entries.Count); 
     StringBuilder sb = new StringBuilder(); 
     foreach (XmlNode node in entries) 
     { 
      sb.Append(String.Format("<li><span>{2}:</span> <a href=\"{0}\">{1}</a></li>", node.ChildNodes[2].Attributes["href"].Value, node.ChildNodes[3].InnerText, node.LastChild.FirstChild.InnerText.Split(' ')[0])); 
     } 
     Literal1.Text = sb.ToString(); 
    } 

    private string HttpGet(string URI) 
    { 
     System.Net.WebRequest req = System.Net.WebRequest.Create(URI); 

     System.Net.WebResponse resp = req.GetResponse(); 
     if (resp == null) return null; 

     System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); 
     string responsexml = sr.ReadToEnd().Trim(); 
     sr.Close(); 

     return responsexml; 
    } 
} 

答えて

1

私が正しく理解していれば、スキップしようとしているパターンの文字列をチェックすることができます。

foreach (XmlNode node in entries) 
{ 
    var content = node.SelectSingleNode("at:content", ns).InnerText; 

    if(!content.ToLower().Contains("@somename")) 
    { 
     sb.Append(String.Format("<li><span>{2}:</span> <a href=\"{0}\">{1}</a></li>", node.ChildNodes[2].Attributes["href"].Value, node.ChildNodes[3].InnerText, node.LastChild.FirstChild.InnerText.Split(' ')[0])); 
    } 
} 

をマッチングより複雑なパターンの正規表現を見て:各ループのために、このような何かを試してみてください、あなたは