请问我的手里想玩插件不过有些云帆插件要钱了之前同学帮我安了一个破解源那个源是???

【更新 v0.6】分享一个抓取字幕的Chrome小插件(支持edX, Coursera, 学堂在线, FutureLearn) | MOOC学院
【更新 v0.6】分享一个抓取字幕的Chrome小插件(支持edX, Coursera, 学堂在线, FutureLearn)
【通知】现在Chrome只允许使用通过store***的扩展,所以之前手动***的,如果被chrome禁用,请删除后再去商店在线***即可。【报错】报错请附上在e站上课的时候发现字幕都是在视频的旁边单独辟开一块滚动显示。个人感觉体验很不好啊●_● 对比度太大会闪到眼睛。还有的课会提供一个srt下载链接,但是视频区域没有CC选项。所以听力苦手只好把视频和老师提供的transcrip.srt下载下来,用播放器看。后来发现有的课不提供字幕下载的链接。于是请帮我抓源码。没想到?明同学顺手做了个chrome插件,专门提取e站字幕的。这样他就不用一直提供售后服务了~ 后来在小伙伴们的要求下陆续增加了学堂在线以及coursera字幕抓取的功能。分享给和我有一样怪癖的小伙伴们~ 适用于Chrome和基于Chromium开发的浏览器。 ***Version 0.6 在线***:
使用Ⅰ、edX & 学堂在线***完成之后在e站或者学堂在线上看课程视频的时候就会发现,在视频title的旁边会出现一个SUBTITLE DOWNLOAD 链接,点击就可以下载插件生成的srt字幕文件了~如果该页面没有视频或者视频没有提供字幕,点击链接后会弹出空文件的提示。如果视频title旁未出现下载链接,请刷新页面。如下图↓对于视频中出现不同语言的字幕,如下图↓请先在CC选项中选择自己需要的那个语言,比如Chinese,等视频右边区域中开始显示中文字幕时,再点击SUBTITLE DOWNLOAD链接进行下载。如果还需要英文字幕,在CC选项中点击English进行切换,待右边区域开始显示英文字幕,再点击SUBTITLE DOWNLOAD链接进行下载即可。无需刷新页面或者重新登录等。Ⅱ、Coursera该功能可以免插件实现,具体操作详见。***插件后,C站视频如果有中文字幕会在Video Lectures页面给出中文字幕的下载链接,例如: (截图如下↓)在英文srt字幕下载图标的旁边,出现一个【中】字链接,点击即可下载该视频对应的中文字幕。如下图↓不管是免插件下载还是使用插件下载的中文字幕,在播放时大多会遇到乱码的情况,具体解决方法已在帖子中给出,往下翻,或者使用Ctrl+F搜索【中文字幕乱码】。Ⅲ、FutureLearn***完成后,在有字幕的视频页面下方的下载区域中,会出现字幕链接,如下↓点击后跳转到一个文本页面,全选复制并粘贴到记事本中,保存。在播放器中手动加载txt格式字幕即可。 归档---------------------【释出 Version 0.1】-----------------------支持edX字幕抓取---------------------【更新 Version 0.2】-----------------------新版本对没有CC选项的视频页面做了优化,对抓取到的空文件,点击下载时会弹出无字幕警告,同时支持学堂在线字幕抓取---------------------【更新 Version 0.3】-----------------------新版本修复学堂在线抓取不完全的bug。并在Chrome Webstore上线---------------------【更新 Version 0.4】-----------------------新版本修复字幕前后时间点一致的BUG---------------------【更新 Version 0.5】-----------------------新版本增加Coursera字幕抓取---------------------【更新 Version 0.5】-----------------------新版本支持FutureLearn字幕抓取 ----------------------------【中文字幕乱码】------------------------------关于中文字幕如果碰上乱码 (一般在Windows系统中常见) ,目前有两种解决方式:Ⅰ)请使用支持UTF-8字幕格式的播放器播放测试可行的播放器如下↓① MPC下载地址:、备注:② MPlayer下载地址:、③ VLC Media Player下载地址:、、、、备注:选项中设置字幕编码格式为UTF-8并设置字体为非中文名称的中文字体(PMingLiU, DFKai-SB, Microsoft JhengHei, MingLiU_HKSCS)即可正常显示字体。Ⅱ)用记事本打开字幕另存成ANSI编码格式。再用播放器手动加载txt格式字幕。如下图↓ ------------------------------【源码公开】--------------------------------源码公开托管在Github,
引用 的话:我想问这个,但是找不到下载字幕的地方....麻烦帮我看下 你是想要下法语的字幕么? coursera 其实只是做了中文的字幕下载,其它语言的检测还没有加上,而这个课程我看了下,暂时没有中文字幕的。不过这个课程也是挺好玩的,居然一个字幕的下载链接都没给…你可以按照
这里给出的方法把语言后缀改成 fr 即可下载你需要的字幕了。例如: 这个字幕对应的就是
课程字幕了(对的,我就是想让你看到那个 39 对应课程的 ID ~)
亲,我在下载时出现Chrome网上应用店暂时无法加载该应用,我下不了也进不去,能给支招吗,麻烦了
引用 的话: 你是想要下法语的字幕么? coursera 其实只是做了中文的字幕下载,其它语言的检测还没有加上,而这个课程我看了下,暂时没有中文字幕的。不过这个课程也是挺好玩的,居然一个字幕的下载链接都没给…你可...谢谢我试试~
引用 的话:亲,我在下载时出现Chrome网上应用店暂时无法加载该应用,我下不了也进不去,能给支招吗,麻烦了你再试试能不能进吧。以前可以手动***的,后来chrome禁了。
引用 的话:不需要用下载工具的哈。直接把链接复制粘贴到浏览器地址栏,然后把en改为zh,之后回车,浏览器就开始下载了~你可以试试这两个链接,我试了可以用的。实在不行的话,我去问问能不能把这个功能加到插件里头~ht...就是改也很麻烦啊。。。这视频这么多
引用 的话: 你是想要下法语的字幕么? coursera 其实只是做了中文的字幕下载,其它语言的检测还没有加上,而这个课程我看了下,暂时没有中文字幕的。不过这个课程也是挺好玩的,居然一个字幕的下载链接都没给…你可...谢谢~
引用 的话:就是改也很麻烦啊。。。这视频这么多中英字幕插件可以下,其他语言的需要手动改链接。
引用 的话:你再试试能不能进吧。以前可以手动***的,后来chrome禁了。ok,谢谢
那个插件无法在线***,如何破
引用 的话:那个插件无法在线***,如何破多刷几次吧,chrome store比较抽。但是现在也没办法手动装,只能在线装~
一直没有装上去,刚才又找到一个办法,在chrome装一个插件下载,就是有点不方便,嘻嘻
引用 的话:一直没有装上去,刚才又找到一个办法,在chrome装一个插件下载,就是有点不方便,嘻嘻怎么操作的~~~给其他人做个参考
引用 的话:学堂君才不会告诉你 上的字幕可以直接复制呢!就是右侧那一坨~!请问是怎样复制的呀,
请问下字幕下载后在记事本的格式,有没方法可以去掉中间的数字只留下文字呢?
引用 的话:请问下字幕下载后在记事本的格式,有没方法可以去掉中间的数字只留下文字呢?你说的是时间轴吧。那个没办法的,手动删一下吧~
引用 的话:你说的是时间轴吧。那个没办法的,手动删一下吧~ 好的,谢谢啦!
这个太棒了!楼主造福社会!
学堂在线改版后字幕无法下载了,求更新,另外能不能把火狐也适配了(opera也行),毕竟国内访问google商店还是很困难的
引用 的话:学堂在线改版后字幕无法下载了,求更新,另外能不能把火狐也适配了(opera也行),毕竟国内访问google商店还是很困难的顺便把中国大学MOOC也给适配了吧,尽管这个网站大都没有字幕,但有的课是英文的,有字幕,所以求把中国大学MOOC也适配了
进不去商店啊!怎么办
紧急。。紧急
学堂在线的字幕插件0.6.1已经无法下载,提示:请求更新
引用 的话:学堂在线的字幕插件0.6.1已经无法下载,提示:请求更新同求
感谢,十分有用的插件
露珠好用心。如果能抓取中国大学MOOC的字幕就好了
邮箱接收不到更改密码连接trackbacks-0
这篇是简单插件开发,下篇聊天记录插件。
开发环境:
System:Windows
WebBrowser:IE6+、Firefox3+
JavaEE Server:tomcat5.0.2.8、tomcat6
IDE:eclipse、MyEclipse 8
开发依赖库:
Jdk1.6、jasper-compiler.jar、jasper-runtime.jar、openfire.jar、servlet.jar
Email:hoojo_&#
在开始之前,如果你不知道怎么使用openfire,***openfire服务器,建议你看这篇文章:
一、准备工作
1、 下载相关jar包和openfire源码
Openfire源码下载:
其他的jar包你可以去tomcat中的lib目录找到或者其他的地方也有(在下面的步骤会提到),这里就赘述了。
2、 新建一个自己的java project工程,添加的jar包如下:
将jasper-compiler.jar、jasper-runtime.jar、servlet.jar添加到新建的工程中。如果没有jar先不要急,看下面的步骤:
下载后的openfire源码目录是这样的
如果你有ant工具可以用dos命令行的方式,直接运行build目录中的ant脚本,运行脚本后,你会发现有一个target的目录。该目录如下:
在lib目录中可以找到我们需要的jar文件了,将openfire.jar也添加到你的工程中。
如果你没有***ant你可以用MyEclipse,将openfire源码中的build、documentation、resources目录复制到一个Java Project中,然后在MyEclipse中运行src中的build.xml ant脚本就会出现和上面一样的文件目录。
建议将你的MyEclipse中的openfire源码工程目录设置成这样的
其中,src/plugins/tree是我自己写的插件,现在暂时可以无视。而target就是我们需要的,里面存放了openfire的配置和需要的jar包。Work是工作目录,是一个完整的openfire服务器。如果你还没有下载openfire服务器的话,可以用这个服务器。
3、 了解openfire源码中的插件
我们找一个插件目录看看,主要看看里面的结构,目录结构很重要。因为我们将写好的插件打成jar包后,打包的jar的目录有一定规范结构,不能随便建立其他目录。
这是一个userservice的插件,在src/java中是我们的插件源代码;web目录中则是前端的页面,其中web-custom.xml是配置当前插件UserServiceServlet配置;changelog.html是修改日志;logo_small.gif是插件图标;plugin.xml是我们配置插件的文件,这个很重要(在这里先提示下); 二、开发简单插件
工程现在的目录机构如下
1、 建立自己的插件类,SamplePlugin.java,里面简单的写点内容。
package com.hoo.server.&import java.io.Fimport org.jivesoftware.openfire.XMPPSimport org.jivesoftware.openfire.container.Pimport org.jivesoftware.openfire.container.PluginM&/** * &b&function:&/b& openfire server plugin sample * @author hoojo * @createDate
下午05:48:22 * @file SamplePlugin.java * @package com.hoo.server.plugin * @project OpenfirePlugin * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_&# * @version 1.0 */public class SamplePlugin implements Plugin {&
private XMPPS
@Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
server = XMPPServer.getInstance();
System.out.println("初始化…… ***插件!");
System.out.println(server.getServerInfo());
@Override
public void destroyPlugin() {
System.out.println("服务器停止,销毁插件!");
比较简单,如果你将插件***在openfire服务器上的时候,启动服务器一个可以看到初始化的内容,关闭服务器可以看到销毁的内容。
2、 配置插件
&?xml version="1.0" encoding="UTF-8"?&&plugin&&!-- Main plugin class
这里是最重要滴,就是你的插件的全路径--&&class&com.hoo.server.plugin.SamplePlugin&/class&&&!-- Plugin meta-data --&&name&SimplePlugin&/name&&description&This is the my sample plugin.&/description&&author&hoojo&/author&&&version&1.0&/version&&date&28/02/2013&/date&&url&http://localhost:9090/openfire/plugins.jsp&/url&&minServerVersion&3.4.1&/minServerVersion&&licenseType&gpl&/licenseType&&&adminconsole&
&/adminconsole&&/plugin&
注意上面的class的配置,那个配置是最为重要的,配置的是插件的全路径;name是插件的名称,***后的插件名称;author是插件作者;lincenseType是协议;adminconsole是配置插件关联的页面的;稍后再讲!
3、 可部署的插件包jar的目录结构
这个很重要,目录结构将决定你插件 发布的成败。
在编写命令之前,我们可以看看openfire服务器中已经***的插件的jar包的目录结构,到时候我们也要打包成那样的结构才行的。必须打包成这样的目录结构,否则哼哼……后果很严重的!声明!
在我机器中的openfire服务器中,插件目录在C:\Program Files\openfire\plugins,里面有一个search.jar插件。提示:当你将一个可以***的jar***在openfire后,会被openfire解压成目录结构。就向JavaEE中的war包发布的应用服务器中的效果一样的。
打成可部署的插件jar包(相当于发布的应用服务器的目录结构)的search.jar目录结构如下:
首先看看文件命名,search.jar就是我们打包的插件的名称,而国际化的配置文件就是以插件名称开头_118n.properties或插件名称开头_118n_language.properties;而lib目录中的是插件的src目录的class打成的jar包;带有*-jspc.jar是web目录下的jsp编译成servlet后的class打成的包文件,都是以插件名称开头;WEB-INF/web.xml配置的是*-jspc.jar中的class文件;web/images是图片文件,需要用到的图片都放置在这个目录即可;plugin.xml文件名固定的,里面是配置插件的xml内容。
其中,118n国际化文件,它主要是我们在插件中的jsp和Java程序中的国际化配置。Web目录存放jsp、图片、web.xml内容;lib目录是存放插件的src目录的java代码编译后打包的jar,以及jsp编译成servlet的class打包后的jar;其他的文件都是根目录的;
对照上面插件包的jar,我们看看实际开发中的目录结构:
稍提醒下,如果你的插件中包含servlet,那你需要将它配置在web目录下的WEB-INF/web-custom.xml目录中;这个在以后会经常用到的,比如你提供一个接口给外部程序调用的情况下。目录结构参考:
UserServiceServlet配置在web-custom.xml目录中。
4、 编写ant命令,打可部署jar包。如果你不懂ant命令也没关系,你总知道java的基本常用的dos命令。只不过ant就是将dos转换成一个可重复多次调用的命令行。
在工程的根目录中新建一个build目录,新建
&project name="Webapp Precompilation" default="openfire-plugins" basedir="."&
&property file="build.properties" /&
&!-- java servlet相关文件编译jar存放位置 --&
&property name="java.jar.dir" value="${webapp.path}/java-dist"/&
&!-- jsp servlet编译后jar存放位置 --&
&property name="jsp.jar.dir" value="${webapp.path}/jsp-dist/lib"/&
&!-- 定义java servlet和jsp servlet的jar包名称 --&
&property name="java.jar" value="${java.jar.dir}/plugin-${plugin.name}.jar"/&
&property name="jsp.jar" value="${jsp.jar.dir}/plugin-${plugin.name}-jsp.jar"/&
&!-- jsp servlet配置到web.xml中 --&
&property name="plugin.web.xml" value="${webapp.path}/jsp-dist/web.xml"/&
&!-- 编译jsp 并生成相关jar、xml文件 --&
&target name="jspc"&
&taskdef classname="org.apache.jasper.JspC" name="jasper2"&
&classpath id="jspc.classpath"&
&pathelement location="${java.home}/../lib/tools.jar" /&
&fileset dir="${tomcat.home}/bin"&
&include name="*.jar" /&
&/fileset&
&fileset dir="${tomcat.home}/server/lib"&
&include name="*.jar" /&
&/fileset&
&fileset dir="${tomcat.home}/common/lib"&
&include name="*.jar" /&
&/fileset&
&fileset dir="D:/Workspace/openfire/build/lib"&
&include name="**/*.jar" /&
&/fileset--&
&/classpath&
&/taskdef&
&!-- 编译jsp-&servlet class --&
&jasper2 javaEncoding="UTF-8" validateXml="false"
uriroot="${plugin.path}/web"
outputDir="${webapp.path}/jsp-dist/src"
package="com.hoo.openfire.plugin.${plugin.name}" /&
&!-- 编译后的servlet class 配置到web.xml文件中 --&
validateXml="false"
uriroot="${plugin.path}/web"
outputDir="${webapp.path}/jsp-dist/src"
package="com.hoo.openfire.plugin.${plugin.name}"
webXml="${plugin.web.xml}"/&
&!-- 编译jsp 并将其打jar包 --&
&target name="compile"&&
&mkdir dir="${webapp.path}/jsp-dist/classes" /&
&mkdir dir="${webapp.path}/jsp-dist/lib" /&
&mkdir dir="${webapp.path}/jsp-dist/src" /&
&javac destdir="${webapp.path}/jsp-dist/classes" optimize="off"
encoding="UTF-8" debug="on" failonerror="false"
srcdir="${webapp.path}/jsp-dist/src" excludes="**/*.smap"&
&classpath&
&pathelement location="${webapp.path}/jsp-dist/classes" /&
&fileset dir="${webapp.path}/jsp-dist/lib"&
&include name="*.jar" /&
&/fileset&
&pathelement location="${tomcat.home}/common/classes" /&
&fileset dir="${tomcat.home}/common/lib"&
&include name="*.jar" /&
&/fileset&
&pathelement location="${tomcat.home}/shared/classes" /&
&fileset dir="${tomcat.home}/shared/lib"&
&include name="*.jar" /&
&/fileset&
&fileset dir="${tomcat.home}/bin"&
&include name="*.jar" /&
&/fileset&
&/classpath&
&include name="**" /&
&exclude name="tags/**" /&
&jar jarfile="${jsp.jar}" basedir="${webapp.path}/jsp-dist/classes" /&
&/target&&
&!-- 将java servlet打包成jar --&
&target name="java-jar"&
&mkdir dir="${java.jar.dir}"/&
&jar jarfile="${java.jar}"&
&fileset dir="${webapp.path}/bin" includes="**/*.class"/&
&!-- 生成可部署的插件包 --&
&target name="plug-jar"&
&!-- 插件插件包相关lib、 web目录 --&
&mkdir dir="${webapp.path}/${plugin.name}/lib"/&
&mkdir dir="${webapp.path}/${plugin.name}/web/WEB-INF"/&&
&!-- 复制jsp servlet的jar和java servlet的相关jar包到插件包的lib目录下 --&
© file="${java.jar}" todir="${webapp.path}/${plugin.name}/lib"/&
© file="${jsp.jar}" todir="${webapp.path}/${plugin.name}/lib"/&&
&!-- 将相关的图片、帮助文档、修改日志等文件复制到插件目录下 --&
© todir="${webapp.path}/${plugin.name}"&
&fileset dir="${plugin.path}" includes="*.*"/&
© todir="${webapp.path}/${plugin.name}/web"&
&fileset dir="${plugin.path}/web"&
&include name="*"/&
&include name="**/*.*"/&
&exclude name="**/*.xml"/&
&exclude name="**/*.jsp"/&
&/fileset&
&!-- jsp servlet的web复制到插件目录下 --&
© file="${plugin.web.xml}" todir="${webapp.path}/${plugin.name}/web/WEB-INF"/&
© todir="${webapp.path}/${plugin.name}/web"&
&fileset dir="${plugin.path}/web" includes="**/*.xml"/&
&!-- 将国际化相关资源文件复制到插件目录下
© file="${webapp.path}/bin/i18n" todir="${webapp.path}/${plugin.name}"/&
&!-- 产生可部署插件包 --&
&jar jarfile="${webapp.path}/${plugin.name}.jar"&
&fileset dir="${webapp.path}/${plugin.name}" includes="**/**"/&
&!-- 生成没有Web资源的可部署插件包 --&
&target name="java-plug-jar"&
&!-- 插件插件包相关lib、 web目录 --&
&mkdir dir="${webapp.path}/${plugin.name}/lib"/&&
&!-- 复制java servlet的相关jar包到插件包的lib目录下 --&
© file="${java.jar}" todir="${webapp.path}/${plugin.name}/lib"/&&
&!-- 将相关的图片、帮助文档、修改日志等文件复制到插件目录下 --&
© todir="${webapp.path}/${plugin.name}"&
&fileset dir="${plugin.path}" includes="*.*"/&
&!-- 产生可部署插件包 --&
&jar jarfile="${webapp.path}/${plugin.name}.jar"&
&fileset dir="${webapp.path}/${plugin.name}" includes="**/**"/&
&!-- 清理生成的文件 --&
&target name="clean"&
&delete file="${webapp.path}/${plugin.name}.jar"/&
&delete dir="${webapp.path}/${plugin.name}"/&
&delete dir="${webapp.path}/jsp-dist"/&
&delete dir="${webapp.path}/java-dist"/&
&target name="all" depends="clean,jspc,compile"/&&
&target name="openfire-plugin" depends="jspc,java-jar"/&&
&target name="openfire-plugins" depends="all,java-jar,plug-jar"/&
&target name="openfire-plugin-java" depends="clean,java-jar,java-plug-jar"/&&/project&
build.properties文件内容
#tomcat hometomcat.home=D:/tomcat-5.0.28/tomcat-5.0.28webapp.path=D:/Workspace/OpenfirePlugin&plugin.name=sampleplugin.path=D\:/Workspace/OpenfirePlugin/src/plugins/sample
注意:这里我没有编写编译java代码到class的步骤,我是直接使用MyEclipse自动编译的bin/class的。如果你没有用MyEclipse或Eclipse,那么你需要将src中的Java代码编译class。
这里需要配置tomcat的目录,我这里是5.0.28的版本。我用tomcat6有些问题,这里主要是用tomcat中的lib库,帮助我们编译jsp。还需要配置你当前工程的所在目录,也就是工程在Eclipse中的目录位置。最后你需要配置插件的名称和插件在工程中的所在目录,这个是在打包的时候,需要将其他的html、image、xml等资源导入的jar内。
因为这里的插件是不带jsp的,所以我们执行clean、java-jar、java-plugin-jar。也就是openfire-plugin-java这个命令即可。执行命令后,你可以看到工作空间的工程目录下多了目录和文件。见图:
java-dist目录里面的就是src/plugin/sample目录中的java代码打成的jar包。具体你可以用zip打开看看。
sample就是我们的插件目录,和sample.jar中的内容是一模一样的。
sample.jar就是将sample目录打成jar包。
5、 发布插件
发布插件有2种方式
第一种:直接将插件放置在openfire服务器的plugins目录下。我的是在:C:\Program Files\openfire\plugins目录。重起openfire后你可以看到控制台输出我们插件中输出的内容,并且在C:\Program Files\openfire\plugins目录中可以看到该目录下多了一个sample的目录(openfire可以自动解压jar包)。
当你在关闭服务器的瞬间,也会打印销毁插件的消息。
第二种:在openfire启动的情况下,访问页面,点击页面下方的upload plugin完成插件上传操作。
插件按照成功后,访问页面你就可以看到***好的插件了。
至此,不带jsp页面的简单插件就编写部署成功了。
三、开发带jsp、PluginServlet的插件
有些插件是单纯的继承Plugin或Handler什么的,但有些是需要jsp页面和Servlet的。下面我们就来开发带jsp和servlet的插件。
在之前的目录下添加文件,目录结构如下:
1、 首先建立一个SampleServlet的文件,内容如下
package com.hoo.server.&import java.io.IOEimport java.io.PrintWimport javax.servlet.ServletEimport javax.servlet.http.HttpSimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpServletR&/** * &b&function:&/b& sample servlet * @author hoojo * @createDate
下午04:15:20 * @file SampleServlet.java * @package com.hoo.server.plugin * @project OpenfirePlugin * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_&# * @version 1.0 */public class SampleServlet extends HttpServlet {
private static final long serialVersionUID = -6926869L;&
@Override
public void init() throws ServletException {
super.init();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.doGet(request, response);
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
System.out.println("请求SampleServlet GET Method");
out.print("请求SampleServlet GET Method");
out.flush();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.doPost(request, response);
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
System.out.println("请求SampleServlet GET Method");
out.print("请求SampleServlet POST Method");
out.flush();
@Override
public void destroy() {
super.destroy();
2、 在当前插件根目录添加web目录,在目录下建立WEB-INF目录,添加web-custom.xml文件(文件名应该是固定的)。在里面配置我们的servlet。
&?xml version="1.0" encoding="ISO-8859-1"?&&!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"&&web-app&
&servlet-class&com.hoo.server.plugin.SampleServlet&/servlet-class&
&servlet-name&SampleServlet&/servlet-name&
&/servlet&
&servlet-mapping&
&servlet-name&SampleServlet&/servlet-name&
&url-pattern&/servlet&/url-pattern&
&/servlet-mapping&&/web-app&
当插件发布后你可以通过用: 就可以访问到这个servlet了。但我发现我们只需用配置。
注意:这里的是固定的,至少plugins是固定的。所有的插件都在plugins目录下访问的。如果你想知道为什么,你可以看看openfire源码下的web.xml,具体目录路径在/openfire/src/web/WEB-INF/web.xml。里面有一个PluginServlet是过来plugin的配置的。
3、 在web目录下添加jsp文件,文件名是插件名称-自定义名称.jsp(建议规范命名)
&%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&&html&
&title&hello world: 你好openfire&/title&
&meta http-equiv="Content-Type" content="text/ charset=UTF-8"&
&meta name="pageID" content="sample-service"/&
&h3&hello world jsp!! &a href="/plugins/sample/servlet"&SampleServlet&/a&&/h3&
&div class="jive-contentBoxHeader"&jive-contentBoxHeader&/div&
&div class="jive-contentBox"&jive-contentBox&/div&
&div class="jive-table"&
&table cellpadding="0" cellspacing="0" border="0" width="100%"&
&th&&sss&/th&
&th nowrap&a&/th&
&th nowrap&b&/th&
&td align="center"&asdf&/td&
&td align="center"&asdf&/td&
&td align="center"&asdf&/td&
&tr class="jive-even"&
&td align="center"&asdf&/td&
&td align="center"&asdf&/td&
&td align="center"&asdf&/td&
&tr class="jive-odd"&
&td align="center"&asdf&/td&
&td align="center"&asdf&/td&
&td align="center"&asdf&/td&
&/body&&/html&
其中最重要的一点就是:&meta name="pageID" content="sample-service"/&这个pageID。这里的是固定的,后面的content对应我们plugin.xml的内容(等下看看plguin.xml的配置)。然后可以适当的看下里面table的 属性和样式,因为很多时候会在jsp中显示内容,且用table布局的。
4、 改下之前的plugin.xml的配置,配置组件在openfire 管理员控制台的哪个地方显示,以及显示的页面。
&?xml version="1.0" encoding="UTF-8"?&&plugin&
&!-- Main plugin class
这里是最重要滴,就是你的插件的全路径--&
&class&com.hoo.server.plugin.SamplePlugin&/class&&
&!-- Plugin meta-data --&
&name&SimplePlugin&/name&
&description&This is the my sample plugin.&/description&
&author&hoojo&/author&&
&version&1.0&/version&
&date&28/02/2013&/date&
&url&http://localhost:9090/openfire/plugins.jsp&/url&
&minServerVersion&3.4.1&/minServerVersion&
&licenseType&gpl&/licenseType&&
&adminconsole&
&tab id="tab-server"&
&sidebar id="sidebar-server-settings"&
&item id="sample-service" name="Sample Service" url="sample-service.jsp"
description="Click is trigger sample plugin" /&
&/sidebar&
&/adminconsole&&/plugin&
这里主要就是adminconsole这里面的配置。首先tab-server应该是在管理员控制台页面的服务器菜单中显示;sidebar中的的id配置固定这样写即可;item中的id(sample-service)对应的就是上面的sample-service.jsp的&meta name="pageID" content="sample-service"/&的content内容;item的url对应的是我们写的jsp页面;name是插件的菜单名称。也就是说在管理员控制台页面中的服务器菜单下增加一个sample service的菜单,打开的页面是sample-service.jsp页面。
5、 运行ant脚本,打包发布插件。在上一章节有完整ant脚本的,运行build.xml中的这个openfire-plugins命令即可打包。然后将打好包的sample.jar发布到openfire的plugins目录下即可。
打包后的jar插件目录结构如下:
启动openfire后,在openfire管理员控制台页面的服务器-&服务器设置中就可以看到Sample Service插件了。
点击Sample Servlet就可以看到openfire控制台打印请求的文字信息。
& ok,至此开发自己的openfire插件基本上就是这样的,网上这方面的资料很少,我也是官方的插件源码和网上提供的小部分资料才整出来的。本来在去年(2012)就应该发布这篇文章的,不料那个时候每天都很忙。加班、上线什么的,所以这篇文章才在今日发表。
下篇文章就是开发openfire的聊天记录插件,到时欢迎大家阅读。请随时关注我的动态哦!
如果你觉得本文不错,请点一下浏览器右下角的“顶”。谢谢!^_^
阅读(9003)
&re: 跟我一步一步开发自己的Openfire插件[未登录]
JXADF插件化开源开发平台,相当不错,可以参考,&&&&&&
hoojo 所有文章遵循,要求署名、非商业、保持一致。在满足的基础上可以转载,但请以超链接形式注明出处。
242526272812345689101112131415161718192021222324252627283031123456
随笔分类(210)
随笔档案(60)
积分与排名
阅读排行榜
评论排行榜

参考资料

 

随机推荐