豆瓣电台桌面版之所以在3.0之后采用了插件架构,一方面是为了练手,而更主要是为了方便。方便用户使用,方便我的开发和发布,更是要方便其他有需求的同学的扩展和二次开发。

观察豆瓣电台桌面版的插件管理界面,就可以发现事实上插件也分几种,目前包括“搜索插件”、“过滤插件”、“歌曲处理”、“历史记录”等几种插件。其中“搜索插件”最为简单,目前接口也比较完善,而且可能用户的需求差异也会比较大,所以先放出“搜索插件”的开发方法。

准备工作

首先是下载豆瓣电台桌面版最新版,在下载下来的压缩包中找到Slippor.Common.PluginFramework.dll、Slippor.Douban.Radio.Search.dll这两个dll。

然后新建一个Class Library工程,建议取名为XXSearchPlugin,并添加上述两个dll的引用到新建的工程中。至此,准备工作完成。

开发搜索引擎插件

一个搜索引擎插件能有多简单?只需要两个类!

其中一个类继承Slippor.Douban.Radio.Search下的BaseSearch基类(这是一个应用了ISearch接口的类,已经实现了所有的方法,只需要提供几个字段的信息即可)。以巨鲸搜索为例,JuJingSearch是这样的:

using Slippor.Douban.Radio.Search;namespace JuJingSearchPlugin
{public class JuJingSearch : BaseSearch{public JuJingSearch(){_searchUrl = "http://www.top100.cn/search/index.aspx?keyword={0}";_name = "巨鲸";_encoder = "utf-8";}}
}

这里有三个字段:_searchUrl就是搜索引擎的搜索特征Url,“{0}”是搜索关键字的占位符;_name是显示名称;_encoder是对搜索关键字的编码字符集,默认为“gb2312”。

除此之外,还需要一个插件类,用于提供插件的相关信息,同样很简单:

using System.ComponentModel;
using Slippor.Common.PluginFramework;
using Slippor.Douban.Radio.Search;namespace JuJingSearchPlugin
{[Description("巨鲸搜索引擎")][DisplayName("巨鲸搜索")][Author("拖鞋不脱")][Version("1.0.0.0")][PluginCategory(PluginCategory.Search)]public class JuJingSearchPlugin : SearchPlugin{protected override ISearch Search{get { return new JuJingSearch(); }}}
}

继承了SearchPlugin类,只需实现Search属性就可以了。这里面看起来字数比较多的是类前面的特性“Attribute”标注。各个Attibute的含义都很明了,其中PluginCategory用于指明这个插件是属于哪个类型的插件,这里当然是PluginCategory.Search了。

小提示

正如我之前所说,BaseSearch实现了ISearch接口,而对于相应的SearchPlugin类来说,要实现的Search属性也只要应用了ISearch接口即可。那么当然可以让搜索引擎类直接应用ISearch接口,具体实现方式就不细述了,只提醒一下可能需要引用Slippor.Douban.Radio.Assist.dll这个dll。

备注

这里只放出搜索插件的开发方法是因为目前只有这类插件的接口比较稳定,其余的有待进一步稳定。当然也可以茶余饭后挑几个dll自己研究下,很简单的,尤其是配合reflector大杀器之后。

如果有童鞋开发的插件愿意共享出来,十分欢迎。请将源代码发予我,我会在检测之后发布在豆瓣电台桌面版——插件大全中。之所以必须是源代码,是出于安全的考虑,请大家谅解。

转载于:https://www.cnblogs.com/smjack/archive/2010/06/10/1755892.html

【原】豆瓣电台桌面版插件开发——搜索插件相关推荐

  1. 五一,给心情放个假-酷狗电台桌面版

    平时闲下来的时候总是喜欢听听歌,放松放松心情.也不知道哪些歌好听,所以总是用酷狗电台听歌.所以,一套"复杂"的流程就开始了:双击浏览器→输入百度→回车→输入酷狗电台→点击→最小化浏 ...

  2. Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析

    Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才 ...

  3. 苹果maccmsV8获取豆瓣影评豆瓣ID信息远程图片下载插件

    程序说明:利用苹果maccmsV8二次开发根据影片名称自动检索影片,点击获取豆瓣影评,豆瓣ID等信息,自动保存远程图片本地化插件. 安装教程:直接覆盖目录文件即可实现. 使用说明: 1.根据名称搜索影 ...

  4. 电商行业智能搜索技术原理全解析

    简介: 对于电商平台来说,智能搜索功能是至关重要的.本文剖析电商行业的搜索专属特点和业务需求,并介绍开放搜索提供的[电商行业模板]智能搜索能力,希望带给企业更多提升业务转化的思路和解决方案~ 一.搜索 ...

  5. 赛马网ACM试题(原杭电oj ACM)java版答案(1000,10001,1002)

    赛马网ACM试题(原杭电OJ ACM试题)答案(java版) Author : Zhang Hailong   Date   : 2015-09-17    HomePage : http://  E ...

  6. 33.搜索插件——autocomplete

    搜索插件的功能是通过插件的autocomplete()方法与文本框相绑定,当文本框输入字符时,绑定后的插件将返回与字符相近的字符串提示选择,调用格式如下: $(textbox).autocomplet ...

  7. idea无法搜索插件问题解决

    idea无法搜索插件问题解决 参考文章: (1)idea无法搜索插件问题解决 (2)https://www.cnblogs.com/jisusukaifa/p/11225728.html 备忘一下.

  8. NET插件系统之四——提升系统搜索插件和启动速度的思考

    一. 面临的问题 开发插件系统的主要优势是扩展性,我们不需要为系统模块的集成再多费脑筋,但这也带来了额外的问题.通常,系统需要在每次启动时搜索固定目录下的符合要求的插件.但是,当系统变得越来越庞大,所 ...

  9. php 搜索名称或者编号,ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能-ecshop插件网...

    最近给客户做一个ECSHOP商城,发现ECSHOP的模糊搜索要求太高,需要加入and.空格.加号等,客户搜索的时候不可能这样操作. 考虑到工期的问题,采用了织梦的分词算法,搜索效果虽然不是特别理想,但 ...

  10. 搜索插件像百度那样的智能感知效果

    题记:写这篇博客要主是加深自己对搜索插件的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. <link href="css/jquery.autocomplete.c ...

最新文章

  1. HDU1874(Dijstra算法)
  2. 【nacos】本机电脑、服务器上如何安装配置nacos
  3. Linux下的文件系统
  4. uabntu18.04 安装mysql5.7
  5. 【图文详解】JAVA字面量和变量
  6. Android深入探究笔记--手势识别
  7. html中鼠标移走的伪元素,a标签的伪元素的应用——link,hover,visited,active
  8. 智能优化算法:海洋捕食者算法
  9. 【空间分析】4 探索性分析
  10. 计算机用户系统软件,计算机软件系统
  11. 小型数控雕刻机制作Arduino_微型CNC制作基于开源项目GRBL
  12. TI OSAL资料 整理
  13. BZOJ2827: 千山鸟飞绝
  14. 第四章第六题(圆上的随机点)(Random points on a circle)
  15. 今天QQ被盗,异常情况调查与反思
  16. 解决error mounted is not defined no-undef
  17. python数据处理工具-Pandas笔记
  18. 玩期货风险大吗(玩期货有风险吗)
  19. 怎么样用计算机计算上浮的价格,原价上上涨百分比怎么算
  20. C# winform设置开机启动

热门文章

  1. 搜索引擎那些你不知道的事
  2. gift to me by myself on 2012's new year
  3. XML第十讲:XML中Schema深入详解、元素、属性、关系
  4. 中国企业如何实施5s管理体系
  5. ThinkPHP高仿蓝奏云网盘系统源码/对接易支付系统程序
  6. 02333软件工程_202008_试卷+答案
  7. Django菜鸟教程学习记录(一)
  8. R语言聚类分析可视化
  9. 威纶通定时循环操作宏_「精品详解」威纶通触摸屏宏指令应用(三)
  10. Vue3加载本地assets图片