PSPTube最新中文脚本下载和Script制作教程

Sep 14 2008   10,357 views

PSPTube的问世,给我们PSP上看FLV视频提供极大的便利,但是长期的缺陷就是只能收看Youtube等国外视频网站,对于网络速度爆快的国内视频网站却一直不支持。

今年2月底的PSPTube官方开始支持自定义Javascript支持其他站点,在国内zengge99的努力下,PSPTube支持了中文拼音搜索!现在看视频都能躺在床上了!哈哈哈~
zengge99最新的方案虽然能够避免各家视频网站的修改,直接去通过baidu和google的视频搜索,使用”site:”来限制条件,但最大缺点就是搜索到视频的数量,排序方式(既先显示视频的质量)的不足,以及被搜索引擎没有检索到的冷门视频无法找到。
于是,我就继续做了最新的土豆优酷六间房56的脚本,并且写出脚本制作过程给大家当作小教程,让大家做出自己需要的扩展~
如果你已经有2008/2/29发布的PSPTube,直接下载下面最新js脚本,解压到PSPtube目录:
如果你还没有安装PSPTube,下载下面包含最新脚本的完整压缩包,解压到PSP的GAME目录里:
点此下载: PSPTube_0914

PSPTube的JavaScript脚本制作教程

我们以制作一个优酷的脚本制作为例。
首先需要一个web调试工具能够方便工作,当然你看源代码慢慢找也可以。
IE用户可以安装Internet Explorer Developer Toolbar
FF用户推荐使用FirebugSafariChrome可以使用自带的查看元素。
首先打开PSPTubesystemsiteYouku.js,看最下面:
var YouKu = new Object();
YouKu.Name          = "Youku";
YouKu.Description   = "Youku";
YouKu.SearchDesc    = "Youku";
YouKu.SearchOSKMode = 2;
YouKu.CheckURL      = YouKu_CheckURL;
YouKu.GetURL        = YouKu_GetURL;
YouKu.Search        = YouKu_Search;
SiteList.push( YouKu );
这里申明了一个对象(Object)叫做Youku,左边的一侧可以自己改成任意名字,但是要一致。
从第2行开始,他们的值分别是,名字,描述,搜索时候的描述,搜索字符(1英文等拉丁语系文字,2是中日韩文这样双字节文字),检查URL正确性的函数名,获得FLV实际URL的函数名,搜索的函数名。下面我们一个个来看。

function YouKu_CheckURL( url, option )
if(url.match( /youku/ )) {
return 1;
} else {
return 0;
}
}
这里就是搜索后检查URL是否是包含指定的字符,如果你觉得麻烦,直接”return 1;”就可以了。
function YouKu_GetURL( url, option )
{
var surl="http://www.flvxz.com/getFlv.php?url=" + url;
var contents = GetContents( surl );
if(contents.match(/("|')(http.*?)("|')/))
{
return RegExp.$2;
}
else
{
return null;
}
}
这是通过搜索到的URL来分析出FLV地址的,通常这个过程比较复杂的话,就交给专门的网站来干,这里是使用flvxz.com搜索,然后通过分析搜索结果的页面的字符串,取得实际FLV视频地址。

大头戏就在YouKu_Search这个函数里面了!每次网站修改,我们其实只用跟着动这里的代码就行了~
var pattern = /<ulsclass="video">((.|r|n)*?)</ul>/g;
这里是指定网站搜索结果页面包含视频的容器。它是怎么来的呢?看下图:
youtube html 首先忽略最上面的专辑搜索结果,当我把鼠标移动到<ul class=”video”>上面的的时候, 网页上视频的容器突显出来,那么这个ul就是我们要找的优酷搜索结果页面视频的容器 下面要获得的所有信息,标题,缩略图,链接等等都包含在这个容器里面。对了~我们接下来定义的是搜索的路径,看下面的
var url_base = "http://so.youku.com/search_video/q_";
url_base = url_base + PSPTube.encodeURI( keyword )+"_orderby_1_page_";
当我在优酷搜索wow的结果,地址栏显示的是:http://so.youku.com/search_video/q_wow 我搜mm,地址栏显示的是:http://so.youku.com/search_video/q_mm那么这里的url_base理所当然就是:http://so.youku.com/search_video/q_ 然后再点击第二页,地址栏显示的是:http://so.youku.com/search_video/q_wow_orderby_1_page_2.html所以我们看出, 优酷的搜索地址就是:http://so.youku.com/search_video/q_搜索的关键字_orderby_1_page_页面数.html 于是我们在后面获取的url值后面还加了一个”.html”:
var url = url_base + String( nPage )+".html";

一般来说这里是不用加的。

下面也只剩下几个地方要修改了,我们来看看最上面的搜索结果的HTML:

共找到 <span class="num">5797</span> 个视频:
于是修改对应的代码:

if(contents.match( /共找到s<spansclass="num">(d*?)</span>/ )) {
result.total = RegExp.$1 – 0;
}

空格或者换号这样的空字符都用s代替,所有的= ” /等符号前面要加上反斜杠来避免程序去解释。这样我们就取得了搜索结果的数目。

下面其他获取值的也方法也全部一样,在HTML里找到代码,然后赋值给PSPTube。
对于支持中文搜索的网站,我们都在搜索函数定义keyword的时候多加了一句keyword = PYtoGBK(keyword);这样就能支持拼音搜索了,对于中文网站有一点需要注意,你在优酷的网页上查看编码是unicode(uft-8)的,然而土豆等是gb2312(GBK)的,所以优酷这样UTF-8字符集的网站在定义完eyword = PYtoGBK(keyword);后面还要加上keyword = GBKtoUTF8(keyword);
这样让提交搜索的字符串能够正确转换为UTF-8的编码。但是土豆这样的网站在搜索返回的结果需要多做一个处理,如优酷获取标题只需info.Title = RegExp.$1;,然而使用GBK字符集的需要info.Title = GBKtoUTF8(RegExp.$1);让返回的结果转换成UTF-8以便PSPTube识别。
可以参考上文几个脚本里的例子,基本上各种方法都有用过。
下面列出PSPTube搜索函数里支持的所有属性:
Video search
keyword     : keyword to search 关键字
start_index : starting index (based on 1) 开始索引
length      : number of videos to search for 返回的结果数
option      : The current search criteria, defaults to 0 (?) 可选
Return info  返回给程序的信息
.keyword                            : search string  搜索的关键字
.total                              : total number of results 总搜索结果
-1 : error -1是错误
0 : no results 0是无结果
>0: total results 大于0显示数量
.start                              : starting number (based on 1) 从第几个视频开始
.end                                : ending number (based on 1) 至第几个视频结束
.VideoInfo                          : video sequence information 视频信息
.VideoInfo[n].Author                : Author (string) 作者 字符串值
.VideoInfo[n].Title                 : Title (string) 标题 字符串值
.VideoInfo[n].LengthSeconds         : LengthSeconds: total video playback time (in seconds) (integer) 时间长度,单位是秒,整数
.VideoInfo[n].RatingAvg             : RatingAvg: rating (float) 评价得分 浮点数
.VideoInfo[n].RatingCount           : RatingCount: number of votes (integer) 打分次数 整数
.VideoInfo[n].Description           : Description (string) 视频描述 字符串
.VideoInfo[n].ViewCount             : ViewCount (integer) 观看次数 整数
.VideoInfo[n].UploadTime            : UploadTime: Video upload time (UNIX style) 上传时间戳
.VideoInfo[n].CommentCount          : CommentCount (integer) 评论数 整数
.VideoInfo[n].MylistCount           : MylistCount: ? (integer) 我的播放列表数 整数
.VideoInfo[n].Tags                  : Tags: Space-delimited string of tags, e.g. “tag1 tag2 tag3″ 空格分开的标签 字符串 例如”标签1 标签2 标签3″
.VideoInfo[n].URL                   : URL: Link to viewing page (string) 视频页面地址 字符串
.VideoInfo[n].ThumbnailURL          : ThumbnailURL: URL to thumbnail (string) 缩略图地址 字符串
.VideoInfo[n].SaveFilename          : SaveFilename (string) 保存时的文件名 字符串
“Movie deprecated set unique ID please.”
.VideoInfo [n]. Attr: Integer OR video attribute set to the following value 附加属性
1: read-only (not delete) 只读
2: download 下载
4: Play is a need to connect to the network 播放需要链接到网络
Usually, 1 +2 +4, 7
MS is a directory, so one can not be removed MS是目录,不能被删除
MS files, 0
.VideoInfo[n].child : children  下级
.VideoInfo[n].parent : parents  父级
差不多就这样~有什么问题可以联系我。

16 responses so far

  1. 请问看视频的时候出现 “content is null” 是怎么回事?谢谢!

  2. 请问看视频的时候出现“content is null”是怎么回事?

  3. 来自baidu或者google的吧 因为调用的负责解析视频地址的程序,没有获取到实际地址。 要么调用的程序不支持该网站,要么获得该网站视频地址的算法有变,程序没有更新.

  4. 非常有用!!!谢谢!!可我尝试弄新浪和sohu的播客视频脚本不成功,请帮忙!

  5. 喔喔?不客气,你怎么不成功请详细说说~

  6. 你好,我把自己弄的不成功的新浪视频脚本删了,我照着你的步骤弄了一下,psptube还是播放不了新浪播客的视频,你可以帮忙弄一个QQ,或新浪,或sohu的视频脚本出来吗?我觉得这三个网站的视频有时候有更多资源,速度也更快点,谢谢

  7. 是搜索不到结果还是无法播放,如果只是不能播放估计是解析视频URL的网站不支持以上某一个网站,需要换解析视频地址的网站。如果是无所搜索就是你写的地方有问题。我压缩包里的使用google或者baidu是可以搜索到sina的视频的。

  8. 我想做个看www.luren.cc的视频的js,修改了半天一直不成功,能不能帮忙做个。。。我编程太弱了

  9. zengge99好像在最新的更新中修改了config.js把简体换成了繁体 貌似所有的字都能显示出来 但是他的config加你的脚本还是不行 希望你能修改一下config具体的好像不是很难

  10. 嗯,有空的时候会更新一下

  11. 你好,从09年4月11日一早,我现在用的是psptube1.7youku就只能搜索,播放时显示null。土豆正常,我想是youku又改变了,应该是需要新的脚本了。拜读了您上面的文章感觉一个头有两个大,希望您会者不难,放出新的youku脚本,不胜感激。 个人喜欢youku可以七分钟一段,就算psptube不能书签也不用全集快进,另外比土豆速度也快,期待中。。。。。

  12. 我的记忆棒坏了,一直没用PSP…

  13. 请问 这两个属性是做什么的 .VideoInfo[n].child : children 下级 .VideoInfo[n].parent : parents 父级

  14. @ goodsand 是HTML元素的子节点和父节点. 比如页面里面中的,前者是父节点(parents),后者就是子节点(children).

  15. to 黑眼圈 还是不太明白,这两个属性具体有什么作用,是什么数据类型,能干什么呢? 另外一个问题是能在_GetURL与_Search函数中公用的全局变量有什么;

  16. 不好意思..这篇文章写了快一年,我也不记得这2个属性具体用途了, Search函数是通过搜索结果的页面去分析每个视频页面的URL,缩略图,时间,人气或者类似列出的信息,然后GetURL通过上一个函数获得的视频网页URL去分析视频实际的FLV的URL地址,这个例子里,解析过程是通过第三方网站来完成的,因为没有研究过youku视频地址也页面地址的关系.

Leave a Reply