[ie8]Flickr搜尋加速器

  • 2915
  • 0
  • 2012-07-01

Flickc搜尋加速器

IE8的加速器可以有兩種不同呈現方式,一種就是上次做的"Youtube搜尋加速器",直接把資料傳送到特定的網頁去做動作,另一種就是今天要練習的preview模式,讓你可以在不離開原本的網頁就先預覽一下加速器的內容。

 

這次想要練習的是Flickr的搜尋加速器。

 

Flickr應該不用特別介紹了,這麼有名的圖片儲存空間大家都應該耳熟能詳了。Flickr本身除了讓大家可以方便的瀏覽照片以外,同時他還有許多api可以讓大家使用,讓你可以不用直接連上flickr也可以使用flickr的服務。

flickr服務

 

網路上有不少包裝好的library可以幫你叫用flickr api,像是Flickr.Net API Library,還有提供完整的說明文件和範例程式碼,三兩下就可以完成工作。

 

這次flickr search就是使用Flickr.Net完成的。

 

.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.QueryString["t"] != null)
    {
        PhotoRepeater.DataSource = RecentPhotos(Server.UrlDecode(Request.QueryString["t"]));
        PhotoRepeater.DataBind();
    }        
}

		
public static FlickrNet.PhotoCollection RecentPhotos(string strSearchText)
{
    FlickrNet.Flickr flickr = new FlickrNet.Flickr();

		
    FlickrNet.PhotoSearchOptions options = new FlickrNet.PhotoSearchOptions();
    options.Text = strSearchText;        

		
    options.PerPage = 9;
    options.Page = 1;
    options.SortOrder = FlickrNet.PhotoSearchSortOrder.DatePostedDesc;

		
    FlickrNet.Photos photos = flickr.PhotosSearch(options);

		
    if (photos.PhotoCollection == null)
        return new FlickrNet.Photo[0];
    else
        return photos.PhotoCollection;
}

 

.aspx

<form id="form1" runat="server">
<div>
    <asp:Repeater runat="server" ID="PhotoRepeater">
        <ItemTemplate>
            <a target="_blank" href="<%# Eval("WebUrl") %>">
                <img style="border: solid 1px black; margin: 0px; padding: 1px; background-color: #444;"
                    alt="<%# Eval("Title") %>" title="<%# Eval("Title") %>" src="<%# Eval("SquareThumbnailUrl") %>" /></a></ItemTemplate>
    </asp:Repeater>
</div>
</form>

 

完成後測試一下。

image

 

有了搜尋的網頁,還記得加速器是xml base的,我們還需要一個xml的檔案來定義這個加速器設定。

<?xml version="1.0" encoding="UTF-8"?>
<os:openServiceDescription  xmlns:os="http://www.microsoft.com/schemas/openservicedescription/1.0">
    <os:homepageUrl>http://192.168.1.183/</os:homepageUrl>
    <os:display>
        <os:name>Flickr Search</os:name>
        <os:description>搜尋Flickr</os:description>
    </os:display>
    <os:activity category="Search">      
        <os:activityAction context="selection">
            <os:preview action= "http://192.168.1.183/asp35/Accelerators/FlickrSearch.aspx?t={selection}"/>
            <os:execute method="get" action="http://192.168.1.183/asp35/Accelerators/FlickrSearch.aspx" >
                <os:parameter name="t" value="{selection}" type="text" />
            </os:execute>
        </os:activityAction>
    </os:activity>
</os:openServiceDescription>

若是要加速器有preview的功能,只要再多指定preview的element和action的屬性如,

<os:preview action= "http://192.168.1.183/asp35/Accelerators/FlickrSearch.aspx?t={selection}"/>

這邊要注意preview僅能呈現320X240大小的內容,超過的部份會看不到的。

 

看一下完成的效果。

image

 

還有一個剛剛發現的,如果要把某個加速器設成預設值,就是可以像圖上第一層就找到他,不用再到第二層的所有加速器,只要到管理附加元件-加速器,選到你要的那個加速器,按下設成預設值就可以了。

image

 

 

程式下載

---------------

這是簽名檔,I love Dotblogs