<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; 插件</title>
	<atom:link href="https://zohead.com/archives/tag/plugin/feed" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>WordPress 3.8开启Google AMP的问题</title>
		<link>https://zohead.com/archives/wordpress-3-amp/</link>
		<comments>https://zohead.com/archives/wordpress-3-amp/#comments</comments>
		<pubDate>Tue, 01 Aug 2017 17:37:56 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[AMP]]></category>
		<category><![CDATA[AMP for WP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[qTranslate]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1487</guid>
		<description><![CDATA[关于 AMP Accelerated Mobile Pages（简称 AMP）是 Google 带领开发的开源项目，主要为了提升移动设备对网站的访问速度，大概包括 AMP HTML、AMP JS 和 AMP Cache 三部分，非常适合博客及新闻展示类的静态网站。 有关 AMP 的详细介绍可以参考其官方网站： https://www.ampproject.org/zh_cn/ AMP 网页只能使用 AMP HTML 中允许的有限的标签，不允许使用 AMP Runtime、AMP Components 之外的 JS，而且 AMP Runtime、Components 都必须从 cdn.amppr [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2 id="about-amp">关于 AMP</h2>
<p><a href="https://en.wikipedia.org/wiki/Accelerated_Mobile_Pages" target="_blank">Accelerated Mobile Pages</a>（简称 AMP）是 Google 带领开发的开源项目，主要为了提升移动设备对网站的访问速度，大概包括 <strong>AMP HTML</strong>、<strong>AMP JS</strong> 和 <strong>AMP Cache</strong> 三部分，非常适合博客及新闻展示类的静态网站。</p>
<p>有关 AMP 的详细介绍可以参考其官方网站：</p>
<p><a href="https://www.ampproject.org/zh_cn/" target="_blank">https://www.ampproject.org/zh_cn/</a></p>
<p>AMP 网页只能使用 AMP HTML 中允许的有限的标签，不允许使用 AMP Runtime、AMP Components 之外的 JS，而且 AMP Runtime、Components 都必须从 <code>cdn.ampproject.org</code> 加载，因此目前 AMP 网页都必须在翻墙状态下才能正常浏览。</p>
<p>AMP Cache 是负责缓存并传输 AMP 页面的 CDN 服务器，用户在 Google 移动端中点击 AMP 网站时，实际访问的是缓存过的页面。</p>
<h2 id="wordpress-amp-problem">WordPress 启用 AMP 的问题</h2>
<p>WordPress 官方提供了 <a href="https://wordpress.org/plugins/amp/" target="_blank">AMP</a> 插件以支持直接为博客开启 AMP 加速，只是官方插件要求 WordPress 最低为 4.4 版本。</p>
<p>由于我的博客安装了 <a href="http://www.qianqin.de/qtranslate/" target="_blank">qTranslate</a> 这款多语言插件，而该插件却只支持到 WordPress 3.8.1 版本，如果升级 WordPress 到最新版本，qTranslate 插件就会自动禁用。然而 qTranslate 插件是对 WordPress 数据库直接进行修改的，禁用之后博客文章就可能会同时显示多种语言的内容，这样显然是不可接受的。</p>
<p>虽然网上已经有人继承 qTranslate 原作发布了例如 qTranslate X 之类的支持新版本 WordPress 的插件，但为了数据安全（其实是懒）考虑我暂时还是不打算直接升级 WordPress 了。</p>
<p>不过还好我在 WordPress 插件库里找到一款看起来支持 WordPress 3.8 的 AMP 插件：<a href="https://wordpress.org/plugins/accelerated-mobile-pages/" target="_blank">AMP for WP</a>，毕竟看此插件的介绍和评分都比官方的 AMP 插件要强哦，而且最低只要求 WordPress 3.0 版本。</p>
<p>AMP for WP 安装起来还是非常顺利的，插件选项里目前基本只提供了 Google Analytics UID 的设置选项，启用之后访问 AMP 版网站的方法是在地址后面加上 <code>?wpamp</code> 后缀。</p>
<p>不过我刚开始测试访问 AMP 首页和文章就碰到问题了，直接没有任何显示了，看网页源代码输出信息不全，显然是 AMP for WP 插件对老版本 WordPress 兼容性还是有点问题。</p>
<h2 id="mod-amp-for-wp">修改 AMP for WP</h2>
<p>首先修改 AMP for WP 插件的 <code>wp-amp-ninja/admin/common.php</code> 文件，打开 PHP 报错开关：</p>
<pre class="brush: php; title: wp-amp-ninja/admin/common.php; notranslate">
error_reporting(1);
</pre>
<p>这下访问博客首页和文章页面就能看到详细报错了：</p>
<pre class="brush: plain; title: ; notranslate">
Fatal error: Call to undefined function get_the_permalink() in /www/zohead.com/wp-content/plugins/wp-amp-ninja/includes/wpamp-front.php on line 24

Fatal error: Call to undefined function the_posts_pagination() in /www/zohead.com/wp-content/plugins/wp-amp-ninja/template/wpamp-content.php on line 53


Fatal error: Call to undefined function the_archive_title() in /www/zohead.com/wp-content/plugins/wp-amp-ninja/includes/wpamp-functions.php on line 600

Fatal error: Call to undefined function the_archive_description() in /www/zohead.com/wp-content/plugins/wp-amp-ninja/includes/wpamp-functions.php on line 601
</pre>
<p>经过查阅 WordPress 官方文档发现：</p>
<ol>
<li><a href="https://developer.wordpress.org/reference/functions/get_the_permalink/" target="_blank">get_the_permalink</a> 函数在 WordPress 3.9.0 版本开始引入，其实就是 1.0.0 版本就已经有的 <a href="https://developer.wordpress.org/reference/functions/get_permalink/" target="_blank">get_permalink</a> 函数；</li>
<li><a href="https://developer.wordpress.org/reference/functions/the_posts_pagination/" target="_blank">the_posts_pagination</a> 函数在 WordPress 4.1.0 版本开始引入，一同引入的还有 <code>the_posts_navigation</code> 函数，与 <code>get_the_permalink</code> 函数一样都位于 WordPress 代码库的 <code>wp-includes/link-template.php</code> 文件；</li>
<li>至于 <a href="https://developer.wordpress.org/reference/functions/the_archive_title/" target="_blank">the_archive_title</a> 和 <a href="https://developer.wordpress.org/reference/functions/the_archive_description" target="_blank">the_archive_description</a> 函数的功能比较类似，支持显示文章的标题和描述并在前后插入自定义代码，同样也在 WordPress 4.1.0 版本开始引入，位于 WordPress 代码库的 <code>wp-includes/general-template.php</code> 文件。</li>
</ol>
<p>由此可见，AMP for WP 实际上应该至少要求 WordPress 4.1.0 版本，只是作者并没有测试过是否兼容较低版本的 WordPress。</p>
<p>不过还好我看了下 WordPress 最新 4.8 版本的代码，上面缺少的几个 WordPress 内置函数都是功能比较独立的。</p>
<p>因此我稍微修改了一下博客目录下的 <code>link-template.php</code> 和 <code>general-template.php</code> 文件，将最新版本的 <code>get_the_permalink</code>、<code>the_posts_pagination</code>、<code>the_posts_navigation</code>、<code>the_archive_title</code>、<code>the_archive_description</code> 函数实现分别 Backport 到 WordPress 3.8 版本。Backport 完成之后再访问博客首页和文章，就没有 PHP 报错了。</p>
<p>不过初步试用下来，我还是发现 AMP for WP 插件的一些小问题：</p>
<ol>
<li>如果通过 qTranslate 插件访问博客的英文版本（通过增加 <code>?lang=en</code> 地址后缀），对应的 AMP 版页面地址会不正确，AMP for WP 插件在转换地址时并没有考虑地址中会带有其它后缀的情况；</li>
<li>AMP for WP 对于带有多种语言标题的文章直接显示数据库中多种语言合并在一起的标题效果，而并不是 qTranslate 插件根据客户端语言自动处理后的效果，这个问题在我使用的几个 WordPress 主题中都不会出现；</li>
<li>文章中插入的多行代码被合并成一行显示了，这是明显不能接受的；</li>
<li>文章的中文发表时间无法正确显示，统一显示为当前日期。</li>
</ol>
<p>第一个问题需要修改 AMP for WP 插件的 <code>wpamp-front.php</code>、<code>wpamp-functions.php</code>、<code>wpamp-header.php</code> 这几个文件中转换地址的代码，例如 <code>wpamp-front.php</code> 文件的修改：</p>
<pre class="brush: diff; title: wpamp-front.php; notranslate">
 		$the_permalink = get_the_permalink( $post-&gt;ID );
 	}
 	
-	$the_permalink = rtrim( $the_permalink, '/' ) . '/';
+	$the_permalink = rtrim( $the_permalink, '/' );
 	$perma = strpos( $the_permalink, &quot;?&quot; );
 	if ( $perma === false ) {
+		$the_permalink .= '/';
 		$sConnector = &quot;?&quot;;
 	} else {
 		$sConnector = &quot;&amp;&quot;;
</pre>
<p>第二个问题需要修改 <code>wpamp-content.php</code> 文件，文章标题要做 <code>apply_filters</code> 处理：</p>
<pre class="brush: diff; title: wpamp-content.php; notranslate">
                 &lt;div id=&quot;amp-pagination&quot;&gt;
                 	&lt;?php $prev_post = get_previous_post(); if (!empty( $prev_post )): ?&gt;
-                    	&lt;div class=&quot;prev&quot;&gt;&lt;a href=&quot;&lt;?php echo wp_amp_permalink($prev_post-&gt;ID, AMP_CONSTANT); ?&gt;&quot;&gt; &amp;laquo; &lt;?php echo $prev_post-&gt;post_title ?&gt;&lt;/a&gt;&lt;/div&gt;
+                    	&lt;div class=&quot;prev&quot;&gt;&lt;a href=&quot;&lt;?php echo wp_amp_permalink($prev_post-&gt;ID, AMP_CONSTANT); ?&gt;&quot;&gt; &amp;laquo; &lt;?php echo apply_filters( 'the_title', $prev_post-&gt;post_title, $prev_post-&gt;ID ); ?&gt;&lt;/a&gt;&lt;/div&gt;
 					&lt;?php endif ?&gt;
 					&lt;?php  $next_post = get_next_post(); if (!empty( $next_post )): ?&gt;
-                        &lt;div class=&quot;next&quot;&gt;&lt;a href=&quot;&lt;?php echo wp_amp_permalink($next_post-&gt;ID, AMP_CONSTANT); ?&gt;&quot;&gt;&lt;?php echo $next_post-&gt;post_title ?&gt; &amp;raquo; &lt;/a&gt;&lt;/div&gt;
+                        &lt;div class=&quot;next&quot;&gt;&lt;a href=&quot;&lt;?php echo wp_amp_permalink($next_post-&gt;ID, AMP_CONSTANT); ?&gt;&quot;&gt;&lt;?php echo apply_filters( 'the_title', $next_post-&gt;post_title, $next_post-&gt;ID ); ?&gt; &amp;raquo; &lt;/a&gt;&lt;/div&gt;
 					&lt;?php endif ?&gt;
                     &lt;div class=&quot;clearfix&quot;&gt;&lt;/div&gt;
                 &lt;/div&gt;
</pre>
<p>第三个问题就比较简单了，将 <code>simple_html_dom.php</code> 文件中替换回车和换行符的处理去掉就可以了。</p>
<p>第四个文章发表时间的问题也可以修改 <code>wpamp-content.php</code> 文件简化处理：</p>
<pre class="brush: diff; title: wpamp-content.php; notranslate">
                     &lt;?php endif; ?&gt;
                     By &lt;span class=&quot;amp-wp-author&quot;&gt;&lt;a href=&quot;&lt;?php echo wp_amp_permalink( NULL, AMP_CONSTANT, get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?&gt;&quot;&gt;&lt;?php echo esc_html( get_the_author() ); ?&gt;&lt;/a&gt;&lt;/span&gt;
-                    &lt;?php $the_time = date_i18n( get_option( 'date_format' ), strtotime( get_the_time('F jS, Y') ) ); ?&gt;
-                    on &lt;time datetime=&quot;&lt;?php echo $the_time; ?&gt;&quot;&gt;&lt;?php echo $the_time; ?&gt;&lt;/time&gt;
+                    on &lt;time datetime=&quot;&lt;?php echo get_the_date('c'); ?&gt;&quot;&gt;&lt;?php echo get_the_date('c'); ?&gt;&lt;/time&gt;
                 &lt;/li&gt;
</pre>
<p>另外我还对 AMP for WP 插件的页脚处理做了点小修改，将页脚上切换到博客首页桌面版本的链接改为切换到当前文章的桌面版本，方便访问者使用。</p>
<h2 id="summary">总结</h2>
<p>对 AMP for WP 插件修改完成之后就可以访问博客的 AMP 版进行验证了，例如我的博客的 AMP 版首页地址就是：</p>
<p><a href="https://zohead.com/?wpamp" target="_blank">https://zohead.com/?wpamp</a></p>
<p>普通用户可以通过安装 Google 推出的 <a href="https://chrome.google.com/webstore/detail/amp-validator/nmoffdblmcmgeicmolmhobpoocbbmknc" target="_blank">AMP Validator</a> 官方 Chrome 扩展检测所访问的 AMP 站点是否配置正确。</p>
<p>网站所有者可以用 Google 搜索的 AMP 在线测试工具进行检测：</p>
<p><a href="https://search.google.com/test/amp" target="_blank">https://search.google.com/test/amp</a></p>
<p>输入要测试的 AMP 版网址就可以开始检测，另外这个测试工具的另一个好处就是检测通过之后可以直接把你的 AMP 站点提交给 Google，让 Google 搜索蜘蛛尽快收录并进行 CDN 缓存。</p>
<p>现在通过 Google 移动端（例如 Android Chrome 浏览器）搜索我的博客，应该就能在搜索结果里看到下面的 AMP 闪电标志了：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371102/google-search-amp.jpg" alt="Google 搜索结果 AMP 标志" title="Google 搜索结果 AMP 标志"></p>
<p>点击搜索结果，你会发现访问的其实是 Google 缓存过的 AMP 地址，下面地址只有移动端浏览器才会显示 AMP 网页：</p>
<p><a href="https://www.google.com/amp/s/zohead.com/%3fwpamp" target="_blank">https://www.google.com/amp/s/zohead.com/%3fwpamp</a></p>
<p>初步启用 AMP 的大体感受就是如果你的梯子还可以，那访问 Google 缓存过的 AMP 网站速度还是非常快的，我这里估计访问 AMP 版网站所需要的流量大概为桌面版本的 1/3。</p>
<p>后面有时间的话还是希望能对 AMP for WP 插件继续改进，例如支持其它的 AMP 后缀或者使用专门的 AMP 子域名方便自己的服务器进行缓存之类的，最后祝大家玩的开心。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/wordpress-3-amp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PPTV XBMC视频插件更新-v1.2.8</title>
		<link>https://zohead.com/archives/pptv-xbmc-v1-2-8/</link>
		<comments>https://zohead.com/archives/pptv-xbmc-v1-2-8/#comments</comments>
		<pubDate>Sat, 13 Dec 2014 16:20:56 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[XBMC]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[PPTV]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[xbmc-addons-chinese]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=830</guid>
		<description><![CDATA[最近有网友反映之前更新的 1.2.6 版本 PPTV XBMC 插件存在问题，无法正常使用了，因此这两天花了点时间修改把插件更新到 1.2.8 版本了，主要更新记录如下： 解决直播视频地址不正确导致电视台直播节目无法正常问题的问题； 解决由于 PPTV 网站变动导致无法获取视频类别列表的问题； 解决由于 PPTV 网站变动导致无法获取视频节目列表的问题； 使用新的方法获取视频列表页码信息； 解决无法获取 m3u8 视频播放地址的问题； 解决 flvcd 网站接口变化导致无法获取 flash 视频地址的问题。 新版本已经更新到我的 GitHub 项目主页： https://github.com/ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>最近有网友反映之前更新的 1.2.6 版本 PPTV XBMC 插件存在问题，无法正常使用了，因此这两天花了点时间修改把插件更新到 1.2.8 版本了，主要更新记录如下：</p>
<ul>
<li>
<div>解决直播视频地址不正确导致电视台直播节目无法正常问题的问题；</div>
</li>
<li>解决由于 PPTV 网站变动导致无法获取视频类别列表的问题；</li>
<li>解决由于 PPTV 网站变动导致无法获取视频节目列表的问题；</li>
<li>使用新的方法获取视频列表页码信息；</li>
<li>解决无法获取 m3u8 视频播放地址的问题；</li>
<li>解决 flvcd 网站接口变化导致无法获取 flash 视频地址的问题。</li>
</ul>
<p>新版本已经更新到我的 GitHub 项目主页：</p>
<p><a href="https://github.com/zohead/pptv4xbmc" target="_blank">https://github.com/zohead/pptv4xbmc</a></p>
<p>建议直接使用 XBMC 中文插件库的方式安装，这样可以支持直接在线更新插件。xbmc-addons-chinese 项目中的代码也已经同步更新，XBMC 中文插件库可以从 [<a href="https://github.com/taxigps/xbmc-addons-chinese/raw/master/repo/repository.xbmc-addons-chinese/repository.xbmc-addons-chinese-1.2.0.zip" target="_blank">这里</a>] 下载安装。</p>
<p>由于 PPTV 网站经常变动，插件更新有时候可能跟不上进度，插件实际使用中有任何问题欢迎与我联系，玩的开心 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/pptv-xbmc-v1-2-8/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Raspberry Pi上观看Sopcast视频</title>
		<link>https://zohead.com/archives/raspberry-pi-sopcast/</link>
		<comments>https://zohead.com/archives/raspberry-pi-sopcast/#comments</comments>
		<pubDate>Thu, 02 Jan 2014 07:58:03 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[XBMC]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[树莓派]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[Sopcast]]></category>
		<category><![CDATA[sp-sc-auth]]></category>
		<category><![CDATA[XSopcast]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[虚拟机]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=652</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/raspberry-pi-sopcast/ Sopcast 是一种国外比较受欢迎的 P2P 流媒体直播软件，可以运行在 Windows、Linux、Android 等平台，近日想在 Raspberry Pi 树莓派板子上看 Sopcast 直播视频看球赛，经过搜索之后终于找到一种曲线解决的办法。 目前树莓派上的 Android 还基本处于不能用的阶段，Raspberry Pi 由于是 ARM 架构的嵌入式板子，也无法运行 x86 版本的 Sopcast Linux 客户端程序，因此只能另想办法。 这里就要 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/raspberry-pi-sopcast/" target="_blank">https://zohead.com/archives/raspberry-pi-sopcast/</a></p>
<p>Sopcast 是一种国外比较受欢迎的 P2P 流媒体直播软件，可以运行在 Windows、Linux、Android 等平台，近日想在 Raspberry Pi 树莓派板子上看 Sopcast 直播视频看球赛，经过搜索之后终于找到一种曲线解决的办法。</p>
<p>目前树莓派上的 Android 还基本处于不能用的阶段，Raspberry Pi 由于是 ARM 架构的嵌入式板子，也无法运行 x86 版本的 Sopcast Linux 客户端程序，因此只能另想办法。</p>
<p>这里就要用到 QEMU 这个著名的虚拟机的 user mode 用户模式了，而通常使用的虚拟机都是 system mode 系统模式。通过使用 QEMU 的用户模式，可以在当前的系统环境下直接模拟运行其它架构下的程序，因此想到在 Raspberry Pi 当前的 armhf 环境下使用 qemu-i386 在用户模式下运行 x86 架构下的 Sopcast Linux 客户端程序。</p>
<p>有关 QEMU 用户模式的介绍请参考这里：</p>
<p><a href="http://wiki.debian.org/QemuUserEmulation" target="_blank">http://wiki.debian.org/QemuUserEmulation</a></p>
<p>你如果有兴趣的话可以自己下载 QEMU 的源代码并在 Raspberry Pi 下编译，这里为了省事我就直接用网上已经编译好的了，可以从我共享的微云网盘里下载：</p>
<p><a href="http://share.weiyun.com/cfeea0d9b415d625309d1bb420a4150b" target="_blank">http://share.weiyun.com/cfeea0d9b415d625309d1bb420a4150b</a></p>
<p>解压拷贝到 Raspberry Pi 系统中，假设为 <strong>/home/sopcast</strong> 目录中，其中有 sp-sc-auth 这个 x86 系统下的 Sopcast Linux 客户端程序，然后在 /usr/bin 目录下产生一个名为 sp-sc-auth 的脚本文件，内容如下（路径请自行修改）：</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/sh
cd /home/sopcast
exec ./qemu-i386 lib/ld-linux.so.2 --library-path lib ./sp-sc-auth $@
</pre>
<p>此脚本中使用 exec 的目的是方便后面的 Xsopcast XBMC 插件在停止播放节目时可以正常结束掉 sp-sc-auth 进程（保持进程 PID 不变这样 XBMC 系统可以跟踪）。</p>
<p>然后在 Raspberry Pi 系统中运行 sp-sc-auth 命令测试是否可以正常连接 Sopcast 服务器并打开节目，这里以 CCTV-13 频道地址为例：</p>
<p><strong>sp-sc-auth sop://124.232.150.188:3912/9767 9000 9001</strong></p>
<p>稍微片刻，如果连接正常的话就会不断产生数据输出。</p>
<p>下面就是使用的问题了，你如果想在 Raspberry Pi 的 X 界面下使用的话，可以安装 Linux 下的 Sopcast Player 软件来播放，这是一个 X 环境下的 Sopcast 的前端 GUI 界面：</p>
<p><a href="http://code.google.com/p/sopcast-player/" target="_blank">http://code.google.com/p/sopcast-player/</a></p>
<p>如果你是和我一样用的 XBian 之类的 XBMC 多媒体系统，那可以直接安装 XSopcast 这一 XBMC 插件，让这个插件自动来运行 sp-sc-auth 客户端程序，有关此插件的介绍请参考这里：</p>
<p><a href="http://forum.xbmc.org/showthread.php?tid=129996" target="_blank">http://forum.xbmc.org/showthread.php?tid=129996</a></p>
<p>安装好此插件之后，首先安装上面的步骤将 <strong>sp-sc-auth</strong> 脚本放到 /usr/bin 目录下，然后再进入 XBMC 系统的 视频 - 扩展插件 - XSopcast，就可以看到 SopCast 节目列表了，点击一个节目就可以观看了。如果没有做 sp-sc-auth 脚本操作，第一次启动 XSopCast 插件的时候，插件会自动从网络下载 sp-sc-auth 程序，但下载的 Linux 客户端程序是 x86 版本不能运行的。</p>
<p>细心的朋友如果在播放的时候在 Raspberry Pi Linux 后台运行 ps ax 命令就可以看到 qemu-i386 启动的 sp-sc-auth 进程了，停止播放直播视频时此进程就会自动被结束掉。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/raspberry-pi-sopcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决WordPress Batcache插件无法工作的问题</title>
		<link>https://zohead.com/archives/fix-wordpress-batcache/</link>
		<comments>https://zohead.com/archives/fix-wordpress-batcache/#comments</comments>
		<pubDate>Sat, 16 Nov 2013 16:26:26 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[BAE]]></category>
		<category><![CDATA[Batcache]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=631</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/fix-wordpress-batcache/ 前几天看到 AlexYang 同学写的一篇非常好的关于在百度 BAE 云平台上启用 WordPress 博客缓存全页面加速的文章，由于 BAE 云平台不支持本地文件读写，WP Super Cache 之类的 WordPress 本地缓存插件无法正常工作（也不支持 NFS 目录作为缓存目录哦），文章中使用基于 BAE cache 空间的 memcache 接口，并通过 Batcache 这个 WordPress 插件实现全页面加速，据说缓存加速效果非常明显。  [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/fix-wordpress-batcache/" target="_blank">https://zohead.com/archives/fix-wordpress-batcache/</a></p>
<p>前几天看到 AlexYang 同学写的一篇非常好的关于在百度 BAE 云平台上启用 WordPress 博客缓存全页面加速的文章，由于 BAE 云平台不支持本地文件读写，WP Super Cache 之类的 WordPress 本地缓存插件无法正常工作（也不支持 NFS 目录作为缓存目录哦），文章中使用基于 BAE cache 空间的 memcache 接口，并通过 Batcache 这个 WordPress 插件实现全页面加速，据说缓存加速效果非常明显。</p>
<p>介绍缓存加速的文章请参考 [<a href="http://www.alexyang.me/2013/07/08/%E5%88%A9%E7%94%A8%E7%99%BE%E5%BA%A6%E4%BA%91%E7%BC%93%E5%AD%98%E5%8A%A0%E9%80%9Fbae-wordpress%E4%B9%8B%E7%BB%88%E6%9E%81%E5%8A%A0%E9%80%9F.html" target="_blank">这里</a>]，Batcache WordPress 插件可以点击 [<a href="http://wordpress.org/plugins/batcache/" target="_blank">这里</a>] 下载。</p>
<p>我按照上面文章中的介绍在 wp-content 目录中增加了 BAE 版本的 object-cache.php 文件和 Batcache 插件的 advanced-cache.php 文件，但在测试中发现始终没有看到作者所介绍的效果：首次访问站点之后缓存到内存，后续访问都会从缓存中读取，无需多余的数据库请求，网页 head 信息中始终没有 cache 的调试输出。</p>
<p>在参考 AlexYang 的文章做了多遍的检查之后，觉得一切条件都符合的，还无法正常缓存，只能看看 Batcache 的代码了。在 Batcache 代码中增加一堆调试信息，经过坑爹的调试过程（BAE 的应用日志查询功能简直是弱的让人无力吐槽的），终于发现真正原因：</p>
<p>Batcache 在判断页面请求时会检查当前请求所使用的 cookie，插件觉得某些情况下页面必须刷新，就忽略当前缓存的内容，例如：用户在文章下发表评论，这种情况下必须忽略之前的缓存，否则用户评论之后将无法看到自己评论的内容；还有一种情况就是管理员登录到后台了，这种情况下也必须禁用缓存，否则管理员对博客做的修改操作也将无法正常看到。</p>
<p>正是考虑到类似上面的情况，Batcache 在检测到一些 cookie 值时会禁用缓存，advanced-cache.php 中的判断代码如下：</p>
<p><pre class="brush: php; title: ; notranslate">
// Never batcache when cookies indicate a cache-exempt visitor.
if ( is_array( $_COOKIE) &amp;&amp; ! empty( $_COOKIE ) )
	foreach ( array_keys( $_COOKIE ) as $batcache-&gt;cookie )
		if ( $batcache-&gt;cookie != 'wordpress_test_cookie' &amp;&amp; 
			( substr( $batcache-&gt;cookie, 0, 2 ) == 'wp' || substr( $batcache-&gt;cookie, 0, 9 ) == 'wordpress' || substr( $batcache-&gt;cookie, 0, 14 ) == 'comment_author' ) )
			return;
</pre>
</p>
<p>这就表示 Batcache 发现如果请求中的 cookie 是以 wp、wordpress 或者 comment_author 开头时就禁用缓存，这样后台管理、用户评论等功能才能正常工作。</p>
<p>而通过对我访问博客时的数据进行抓包显示，由于我安装了 WordPress Mobile Pack 这个插件，访问博客时会向浏览器发送切换浏览类型的 wpmp_switcher cookie，这就刚好在 Batcache 插件的过滤范围内，当然就导致 Batcache 全页面缓存始终无法起作用。知道原因了就好办，将 wp-content 目录下的 advanced-cache.php 的判断 cookie 处改为：</p>
<p><pre class="brush: php; title: ; notranslate">
// Never batcache when cookies indicate a cache-exempt visitor.
if ( is_array( $_COOKIE) &amp;&amp; ! empty( $_COOKIE ) )
	foreach ( array_keys( $_COOKIE ) as $batcache-&gt;cookie )
		if ( $batcache-&gt;cookie != 'wordpress_test_cookie' &amp;&amp; $batcache-&gt;cookie != 'wpmp_switcher' &amp;&amp; substr( $batcache-&gt;cookie, 0, 12 ) != 'wp-settings-' &amp;&amp; 
			( substr( $batcache-&gt;cookie, 0, 2 ) == 'wp' || substr( $batcache-&gt;cookie, 0, 9 ) == 'wordpress' || substr( $batcache-&gt;cookie, 0, 14 ) == 'comment_author' ) )
			return;
</pre>
</p>
<p>刷新页面就可以看到缓存起作用了，不得不说启用内存缓存之后，页面访问速度还是有不少提升了。</p>
<p>备注：上面的修改代码中另外还增加了 wp-settings- 开头的 cookie 项，因为测试时发现有时还会有这个 cookie 导致缓存不起作用。</p>
<p>网上有不少的网友说装了 Batcache 插件之后缓存没用，可以参考这个思路看看到底是什么 cookie 之类的条件不满足导致的。本文章为个人修改经验，如果有任何问题欢迎提出指正，玩的开心 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/fix-wordpress-batcache/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress博客增加Google Translate翻译功能</title>
		<link>https://zohead.com/archives/wordpress-google-translate/</link>
		<comments>https://zohead.com/archives/wordpress-google-translate/#comments</comments>
		<pubDate>Fri, 08 Nov 2013 18:23:46 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[qTranslate]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[多语言]]></category>
		<category><![CDATA[小工具]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=623</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/wordpress-google-translate/ 之前给 WordPress 博客上安装了 QTranslate 博客以支持多语言，目前本博客已支持中文和英文的了，实际使用时博客作者是需要分别针对中文和英文及其它所需要的语言分别进行翻译处理的，对于笔者这种比较懒的人，除非是老外会看的一些文章，一般也懒的翻译成英文，因此考虑在 WordPress 博客里加上直接使用 Google Translate 进行翻译的处理。 通过查看 Google Translate 提供的接口，我们可以在 WordPres [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/wordpress-google-translate/" target="_blank">https://zohead.com/archives/wordpress-google-translate/</a></p>
<p>之前给 WordPress 博客上安装了 QTranslate 博客以支持多语言，目前本博客已支持中文和英文的了，实际使用时博客作者是需要分别针对中文和英文及其它所需要的语言分别进行翻译处理的，对于笔者这种比较懒的人，除非是老外会看的一些文章，一般也懒的翻译成英文，因此考虑在 WordPress 博客里加上直接使用 Google Translate 进行翻译的处理。</p>
<p>通过查看 Google Translate 提供的接口，我们可以在 WordPress 的仪表盘中的 外观 - 小工具 设置界面中拖动一个 “文本” 类型的小工具到对应的小工具区域中去，小工具标题为 “翻译”，“文本” 类型的小工具可以实现在博客页面的小工具区域中添加自己需要的 HTML 代码，还是比较好用的。</p>
<p>增加的 HTML 代码如下：</p>
<p><pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;google_translate_element&quot;&gt;&lt;/div&gt;
&lt;script&gt;
function googleTranslateElementInit() {
  new google.translate.TranslateElement({
    pageLanguage: document.documentElement.lang
  }, 'google_translate_element');
}
&lt;/script&gt;
&lt;script src=&quot;http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit&quot;&gt;&lt;/script&gt;
</pre>
</p>
<p>注意上面代码中的 pageLanguage 表示 WordPress 博客当前的实际语言代码，之前网上看得代码都是写死的，这里我们使用 document.documentElement.lang 动态获取博客当前实际的语言（使用 QTranslate 切换语言时也能正常工作）。</p>
<p>修改保存之后访问主界面就可以看到小工具区域里多了一个 “翻译” 的区域，访客可以直接选择需要翻译到的语言，Google Translate 可以自动翻译当前页面内容为指定语言，实在是非常方便。</p>
<p>接着考虑到有些博主可能像我一样用到了 QTranslate 插件来实现博客多语言，这样就需要修改小工具的标题在不同语言下的显示问题，这时只要把标题改为下面的形式就又可以支持多语言了：</p>
<p>
<pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#91;</span><span style="color: #339933;">:</span>zh<span style="color: #009900;">&#93;</span>翻译<span style="color: #009900;">&#91;</span><span style="color: #339933;">:</span>en<span style="color: #009900;">&#93;</span>Translate</pre>
</p>
<p>上面的形式中将中文和英文字符串写在一起，这样 WordPress 页面在显示时会自动根据当前语言选择应该用的字符串。</p>
<p>另外 Google Translate 界面的样式也是可以定制的，详细请参考 Google Translate 网站翻译页面：</p>
<p><a href="http://translate.google.com/manager/website/" target="_blank">http://translate.google.com/manager/website/</a></p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/wordpress-google-translate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PPTV XBMC视频插件更新-v1.2.0</title>
		<link>https://zohead.com/archives/pptv-xbmc-plugin-v1-2-0/</link>
		<comments>https://zohead.com/archives/pptv-xbmc-plugin-v1-2-0/#comments</comments>
		<pubDate>Sun, 03 Nov 2013 16:35:54 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[XBMC]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[PPTV]]></category>
		<category><![CDATA[xbmc-addons-chinese]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[点播]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=606</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/pptv-xbmc-plugin-v1-2-0/ 6月份更新 PPTV 的 XBMC 视频插件到 1.1.9 版本之后一直没有再更新，最近发现 PPTV 网站已经有了非常大的修改，造成 PPTV 的 XBMC 视频插件无法正常工作，包括获取视频类别列表、视频列表、视频播放在内的众多功能都运行错误。因此，这两天花了点时间更新了 PPTV 插件，现仍然支持 PPTV 上的点播和直播视频。 1.2.0 版本主要更新内容如下： 针对 PPTV 网站的主要改动解决插件无法正常工作的问题； 解决无法获取视频类别列表的 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/pptv-xbmc-plugin-v1-2-0/" target="_blank">https://zohead.com/archives/pptv-xbmc-plugin-v1-2-0/</a></p>
<p>6月份更新 PPTV 的 XBMC 视频插件到 1.1.9 版本之后一直没有再更新，最近发现 PPTV 网站已经有了非常大的修改，造成 PPTV 的 XBMC 视频插件无法正常工作，包括获取视频类别列表、视频列表、视频播放在内的众多功能都运行错误。因此，这两天花了点时间更新了 PPTV 插件，现仍然支持 PPTV 上的点播和直播视频。</p>
<p>1.2.0 版本主要更新内容如下：</p>
<ul>
<li>针对 PPTV 网站的主要改动解决插件无法正常工作的问题；</li>
<li>解决无法获取视频类别列表的问题；</li>
<li>解决无法获取视频列表的问题；</li>
<li>解决无法获取连续剧等剧集列表的问题；</li>
<li>解决无法正确获取 Flash 和 iPad m3u8 视频地址的问题；</li>
<li>视频类别列表中增加所有直播节目列表；</li>
<li>按照不同区域列表获取所有直播电视台节目列表；</li>
<li>使用 PPTV 新 API 获取体育直播、游戏直播、财经直播节目单；</li>
<li>正确获取体育直播、游戏直播、财经直播等特殊节目的视频地址。</li>
</ul>
<p>由于 PPTV 的直播电视台是按区域划分的，因此获取列表时需要重复多次请求，可能等待时间会稍微有点长，由于暂时没有直接获取整个列表的方法，就只能先这么办了。此插件使用时如果有任何问题，请提出指正。</p>
<p>与之前的版本类似，PPTV XBMC 视频插件默认使用 m3u8 格式播放直播和点播视频，这样视频显示出来只有一个小节，没有切换时的缓冲问题；如果您使用的 XBMC 系统播放 m3u8 视频存在问题请在选项中关闭 “使用iPad m3u8流媒体视频” 选项。</p>
<p>安装 PPTV XBMC 视频插件之前需先安装 xbmc-addons-chinese 中文扩展库支持：</p>
<p><a href="http://code.google.com/p/xbmc-addons-chinese/downloads/list" target="_blank">http://code.google.com/p/xbmc-addons-chinese/downloads/list</a></p>
<p>通过 XBMC 中文插件库安装的朋友可以直接在线更新升级到 1.2.0 版本，也可以通过下载下面的安装包进行安装：</p>
<p><a href="http://miseal.googlecode.com/files/plugin.video.pptv-v1.2.0.zip" target="_blank">http://miseal.googlecode.com/files/plugin.video.pptv-v1.2.0.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/pptv-xbmc-plugin-v1-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PPTV XBMC视频插件更新-v1.1.9</title>
		<link>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-9/</link>
		<comments>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-9/#comments</comments>
		<pubDate>Thu, 13 Jun 2013 15:48:06 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[XBMC]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[PPTV]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=434</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/pptv-xbmc-plugin-v1-1-9/ 上次更新了 PPTV XBMC 视频插件 1.1.8 版本之后，最近在 原动力社区 上看到有网友反映直播视频有问题（报告播放失败）。经过简单调试之后，发现 PPTV 的 m3u8 直播视频地址在原来的基于上增加了视频类型的后缀，修改代码测试通过后，已解决直播视频播放的问题。 另外还是需要继续说明的是：PPTV XBMC 视频插件默认使用 m3u8 格式播放直播和点播视频，这样视频显示出来只有一个小节，没有切换时的缓冲问题；如果 XBMC 系统播放 m3u8 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/pptv-xbmc-plugin-v1-1-9/" target="_blank">https://zohead.com/archives/pptv-xbmc-plugin-v1-1-9/</a></p>
<p>上次更新了 PPTV XBMC 视频插件 1.1.8 版本之后，最近在 <a href="http://bbs.htpc1.com/thread-259452-1-1.html" target="_blank">原动力社区</a> 上看到有网友反映直播视频有问题（报告播放失败）。经过简单调试之后，发现 PPTV 的 m3u8 直播视频地址在原来的基于上增加了视频类型的后缀，修改代码测试通过后，已解决直播视频播放的问题。</p>
<p>另外还是需要继续说明的是：PPTV XBMC 视频插件默认使用 m3u8 格式播放直播和点播视频，这样视频显示出来只有一个小节，没有切换时的缓冲问题；如果 XBMC 系统播放 m3u8 视频存在问题请在选项中关闭 “使用iPad m3u8流媒体视频” 选项。</p>
<p>通过 XBMC 中文插件库安装的朋友可以直接在线更新升级到 1.1.9 版本，也可以通过下载下面的安装包进行安装：</p>
<p><a href="http://miseal.googlecode.com/files/plugin.video.pptv-v1.1.9.zip" target="_blank">http://miseal.googlecode.com/files/plugin.video.pptv-v1.1.9.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PPTV XBMC视频插件更新-v1.1.8</title>
		<link>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-8/</link>
		<comments>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-8/#comments</comments>
		<pubDate>Thu, 09 May 2013 12:56:08 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[XBMC]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[m3u8]]></category>
		<category><![CDATA[PPTV]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=422</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/pptv-xbmc-plugin-v1-1-8/ 去年写了一个 XBMC 媒体中心系统上的 PPTV 视频插件（参考 [这里]），自从去年快 11 月份更新之后就再没有管过。今天无意到 htpc XBMC 论坛（参考 [这里]）逛了下，发现有不少网友跟帖反映插件已经无法正常播放视频，故考虑可能的话更新下 PPTV 视频插件。 比较意外的是我发现 XBMC 中文插件库中我所提交的 PPTV 视频插件的最后版本号为 1.1.3 版本，但有网友 cmeng 已经做了一些改动，将插件的版本更新为了 1.1.7 版 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/pptv-xbmc-plugin-v1-1-8/" target="_blank">https://zohead.com/archives/pptv-xbmc-plugin-v1-1-8/</a></p>
<p>去年写了一个 XBMC 媒体中心系统上的 PPTV 视频插件（参考 [<a href="https://zohead.com/archives/pptv-xbmc-plugin/" target="_blank">这里</a>]），自从去年快 11 月份更新之后就再没有管过。今天无意到 htpc XBMC 论坛（参考 [<a href="http://bbs.htpc1.com/thread-259452-1-1.html" target="_blank">这里</a>]）逛了下，发现有不少网友跟帖反映插件已经无法正常播放视频，故考虑可能的话更新下 PPTV 视频插件。</p>
<p>比较意外的是我发现 XBMC 中文插件库中我所提交的 PPTV 视频插件的最后版本号为 1.1.3 版本，但有网友 cmeng 已经做了一些改动，将插件的版本更新为了 1.1.7 版本，而且增加了 Windows 上才有的 PPAP 加速进程选项（更新的插件描述中也有错误，写成了 PPSAP）。由于我写这个免费 XBMC 视频插件是目的就是为了实现平台无关的 PPTV 视频播放，因此打算在新版本中去掉 PPAP 的选项，并且统一解决目前 1.1.3 版本中的问题。</p>
<p>由于 PPTV 网站内容更改，原先通过硕鼠得到视频地址的方法无法起作用，由于 PPTV 官方没有提供可用的 API 给我们调用，而且硕鼠现在提交 PPTV 视频播放页面地址后无法直接得到视频地址，必须通过硕鼠的客户端下载视频。在此情况下，经过研究硕鼠的获取视频和下载流程，终于通过多步的请求操作得到真实 PPTV 视频地址的方法。有兴趣的网友请参考代码库中的得到视频地址的 Python 代码。</p>
<p>由于 1.1.4 ~ 1.1.7 版本并不是我自己更新（网友 cmeng 所更新），因此新的版本考虑已经安装的网友自动更新的需要，只能将版本号直接改成 1.1.8 了。另外 PPTV 视频插件仍然会尽量保证平台无关性，以使本插件可在绝大多数 XBMC 系统中运行。</p>
<p>1.1.8 版本的主要更新记录为：</p>
<ul>
<li>移除 cmeng 提交的 1.1.4 ~ 1.1.7 版本中的平台相关的 PPSAP 加速选项；</li>
<li>解决搜索视频无法正常工作的问题；</li>
<li>解决搜索视频没有包含完整搜索结果的问题；</li>
<li>解决无法得到 PPTV 视频地址的问题；</li>
<li>解决无法得到 iPad m3u8 流媒体视频地址的问题；</li>
<li>为 iPad m3u8 流媒体视频单独增加设置开关，这样 iPad 视频也可以选择清晰度；</li>
<li>iPad m3u8 流媒体视频需要 XBMC 播放器能支持 m3u8 播放，选项默认开启，如果无法正常播放，可以在设置界面中关闭 iPad m3u8 流媒体视频选项；</li>
<li>在插件信息中增加源代码地址、论坛帖子地址、本人邮箱、本人博客等信息，方便出现问题时联系。</li>
</ul>
<p>有关单独增加的 iPad m3u8 流媒体视频选项，可以看下面的截图：</p>
<p><a href="http://zohead.com/wp-content/uploads/pptv-xbmc-m3u8-option.jpg"><img class="alignnone" title="PPTV XBMC插件 - iPad m3u8 视频选项" src="http://zohead.com/wp-content/uploads/pptv-xbmc-m3u8-option.jpg" alt="PPTV XBMC插件 - iPad m3u8 视频选项" width="640" height="360" /></a></p>
<p>不同于之前的版本，1.1.8 中可以单独设置是否使用 iPad m3u8 流媒体视频，默认为开启。如果 XBMC 播放器能够正常播放的话，也建议默认开启。</p>
<p>下面就是开启 iPad m3u8 流媒体视频的好处：</p>
<p><a href="http://zohead.com/wp-content/uploads/pptv-xbmc-m3u8-video.jpg"><img class="alignnone" title="PPTV XBMC插件 - iPad m3u8 视频" src="http://zohead.com/wp-content/uploads/pptv-xbmc-m3u8-video.jpg" alt="PPTV XBMC插件 - iPad m3u8 视频" width="640" height="360" /></a></p>
<p>从上面视频播放画面的截图可以看出，iPad m3u8 流媒体视频就是一个完整的视频（从上图中可以看出视频只有 1 节，而且右下角显示的时长为 1 个小时 41 分钟），这样播放时就不会出现切换视频时的缓冲情况，相当于真正的无缝播放整个影片。</p>
<p>而如果没有开启 iPad m3u8 流媒体视频，则整个影片很可能会按 3 - 10 分钟不等的小片段进行划分，这样播放时就需要隔几分钟缓存一次，有点影响观看体验。据我了解，目前 XBMC 中文插件库中的优酷等视频插件都存在这个问题，因此如果你的 XBMC 播放器能正常播放 iPad m3u8 流媒体视频的话，强烈建议不要关闭它。</p>
<p>最后是 1.1.8 版本 PPTV XBMC 视频插件的下载地址：</p>
<p><a href="http://miseal.googlecode.com/files/plugin.video.pptv-v1.1.8.zip" target="_blank">http://miseal.googlecode.com/files/plugin.video.pptv-v1.1.8.zip</a></p>
<p>如果您已经通过 XBMC 中文插件库安装了 PPTV 视频插件，可以直接通过 XBMC 系统进行在线更新。</p>
<p>对源代码有兴趣进行修改的网友请移步 GitHub 上的版本库：</p>
<p><a href="https://github.com/zohead/pptv4xbmc" target="_blank">https://github.com/zohead/pptv4xbmc</a></p>
<p>插件使用中有任何问题和建议，欢迎与我联系，玩的开心 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PPTV XBMC视频插件更新-v1.1.2</title>
		<link>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-2/</link>
		<comments>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-2/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 13:43:21 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[XBMC]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[m3u8]]></category>
		<category><![CDATA[PPTV]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=332</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/pptv-xbmc-plugin-v1-1-2/ 之前利用闲余时间写了个 PPTV 的 XBMC 多媒体中心系统的视频插件 v1.0 版本（请参考 [这里]），在 htpc XBMC 论坛上公布之外，经过几百个论坛网友下载使用之后，也发现一些问题，经过修正和增强之后更新了 1.1.2 版本的新 PPTV 视频插件。 更新内容如下： 由于 Python 2.5 以下版本不支持三目运算符，为兼容 Xbox XBMC 等老的 Python 环境，将 if else 三目运算符改换为普通的方式； 解决 PPTV  [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/pptv-xbmc-plugin-v1-1-2/" target="_blank">https://zohead.com/archives/pptv-xbmc-plugin-v1-1-2/</a></p>
<p>之前利用闲余时间写了个 PPTV 的 XBMC 多媒体中心系统的视频插件 v1.0 版本（请参考 [<a href="https://zohead.com/archives/pptv-xbmc-plugin/" target="_blank">这里</a>]），在 htpc XBMC 论坛上公布之外，经过几百个论坛网友下载使用之后，也发现一些问题，经过修正和增强之后更新了 1.1.2 版本的新 PPTV 视频插件。</p>
<p>更新内容如下：</p>
<ul>
<li>由于 Python 2.5 以下版本不支持三目运算符，为兼容 Xbox XBMC 等老的 Python 环境，将 if else 三目运算符改换为普通的方式；</li>
<li>解决 PPTV 直播电视节目单获取错误的问题；</li>
<li>如果某个 PPTV 直播节目没有节目单，不能直接得到播放页面地址，则尝试通过搜索的方式得到播放页面地址；</li>
<li>引入 XBMC Chinese Keyboard 插件，为本插件增加根据关键字搜索 PPTV 视频的功能；</li>
<li>如果搜索到的视频不是由 PPTV 提供（例如：优酷、土豆之类），则在播放时给出提示；</li>
<li>播放 PPTV VIP 视频时提示用户无法播放 VIP 视频；</li>
<li>解决某些连续剧集节目（例如某些动漫剧场版全集）无法得到视频列表的问题。</li>
</ul>
<p>针对某些网友提出的选择播放到开始缓冲间有点延时的问题，由于需要从 PPTV 未公开的 API 中获取真实视频地址，暂时没有什么好的办法解决。另外 PPTV 直播视频仍然使用的是 m3u8 格式的 HTTP live stream，需要 XBMC 系统能正常播放这种流媒体视频。</p>
<p>最后放出 1.1.2 版本 PPTV XBMC 视频插件下载地址：</p>
<p><a href="http://github.com/downloads/zohead/pptv4xbmc/plugin.video.pptv-v1.1.2.zip" target="_blank">http://github.com/downloads/zohead/pptv4xbmc/plugin.video.pptv-v1.1.2.zip</a></p>
<p>使用此插件过程中有任何问题欢迎指正哦 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/pptv-xbmc-plugin-v1-1-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>发布PPTV XBMC视频插件v1.0</title>
		<link>https://zohead.com/archives/pptv-xbmc-plugin/</link>
		<comments>https://zohead.com/archives/pptv-xbmc-plugin/#comments</comments>
		<pubDate>Tue, 23 Oct 2012 15:05:36 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[XBMC]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[树莓派]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Beautiful Soup]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[m3u]]></category>
		<category><![CDATA[m3u8]]></category>
		<category><![CDATA[Parsedom]]></category>
		<category><![CDATA[PPTV]]></category>
		<category><![CDATA[扩展]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[视频]]></category>
		<category><![CDATA[跨平台]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=325</guid>
		<description><![CDATA[本文同步自（最佳显示效果请点击）：https://zohead.com/archives/pptv-xbmc-plugin/ 最近认识一位朋友想要在 XBMC 多媒体中心软件（http://www.xbmc.org/）上观看 PPTV（http://www.pptv.com/） 视频网站上的视频，看到有 Windows 上的 XBMC PPTV 插件，但都没法在我的 Raspberry Pi 微型电脑板上（板子虽小也支持播放 1080p 高清视频哦）运行，于是想着自己写个能够跨平台的 PPTV 视频的 XBMC 插件，顺便也拿这个练练 Python，HOHO。 既然要跨平台，那首先考虑必须全部 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文同步自（最佳显示效果请点击）：<a href="https://zohead.com/archives/pptv-xbmc-plugin/" target="_blank">https://zohead.com/archives/pptv-xbmc-plugin/</a></p>
<p>最近认识一位朋友想要在 XBMC 多媒体中心软件（<a href="http://www.xbmc.org/" target="_blank">http://www.xbmc.org/</a>）上观看 PPTV（<a href="http://www.pptv.com/" target="_blank">http://www.pptv.com/</a>） 视频网站上的视频，看到有 Windows 上的 XBMC PPTV 插件，但都没法在我的 Raspberry Pi 微型电脑板上（板子虽小也支持播放 1080p 高清视频哦）运行，于是想着自己写个能够跨平台的 PPTV 视频的 XBMC 插件，顺便也拿这个练练 Python，HOHO。</p>
<p>既然要跨平台，那首先考虑必须全部用 XBMC 自带的 Python 脚本实现，不能调用 Windows 上 DLL 之类的鬼玩意，而且 Raspberry Pi 的 armhf 系统上也几乎不可能有 PPTV 的动态库可以用的。</p>
<p><strong>基本原理：</strong></p>
<p>通过 Python 插件发送 HTTP 请求时伪装成 iPad 客户端从 PPTV 网站上获取频道列表、视频列表、查询视频，并得到视频的实际 m3u 和 m3u8 地址。后来发现此方法得到的 m3u 和 m3u8 视频地址在 Raspberry Pi 系统中播放有问题，而且不太好直接解决。没办法，咱拿起 Wireshark 抓包神器，终于发现了 PPTV 未公开的 API 方法（其实 PPTV 一直从未公开，哈哈）得到网页 Flash 方式播放的视频地址。不过其中有个视频 key 的问题，没什么太好办法在 Python 中直接得到。最终想到通过 [<a href="http://www.flvcd.com/" target="_blank">硕鼠</a>] 网站解决，硕鼠网站得到的 PPTV 视频地址明显有问题，但有个可用之处就是他能通过 Flash 得到 PPTV 的视频 key，那就省点事从硕鼠得到视频 key，从 PPTV 未公开 API 构造视频链接和分段信息（用过 Python 自带的 json 库），最终得到真实的视频地址。</p>
<p>有关 XBMC 的插件编写详细请参考这些链接：</p>
<p><a href="http://wiki.xbmc.org/index.php?title=HOW-TO:Write_plugins_for_XBMC" target="_blank">http://wiki.xbmc.org/index.php?title=HOW-TO:Write_plugins_for_XBMC</a><br />
<a href="http://wiki.xbmc.org/index.php?title=Python_development" target="_blank">http://wiki.xbmc.org/index.php?title=Python_development</a><br />
<a href="http://wiki.xbmc.org/index.php?title=Add-on_development" target="_blank">http://wiki.xbmc.org/index.php?title=Add-on_development</a></p>
<p>其中遇到的一个问题就是 HTML 的解析问题，刚开始使用的是比较成熟好用的一个 Python 插件：<a href="http://www.crummy.com/software/BeautifulSoup/" target="_blank">Beautiful Soup</a>。这个插件的最大优势就是对不标准的 HTML 的容错性做的非常好，而且各种查找 HTML DOM 结构的函数也很强大。那就按照 Beautiful Soup 的要求解析 PPTV 的 HTML DOM，结果顺利取得，不久就发现一个问题，在 Raspberry Pi 这种比较弱的嵌入式板子上，下载 HTML 倒挺快，通过 Beautiful Soup 解析查找 HTML DOM 竟然要用去 15 秒左右的时间，这完全无法忍受，可以寻找替代品。</p>
<p>最终在 XBMC 的论坛里发现了比较好的 HTML parser 替代品：<a href="http://wiki.xbmc.org/index.php?title=Add-on:Parsedom_for_xbmc_plugins" target="_blank">Parsedom XBMC Add-on</a>。这是直接包含在 XBMC 库中的一个简单的 HTML DOM 解析扩展，import 之，下载 HTML 然后按照 class、按照 id 解析 HTML 的速度都在 1-2 秒之间，非常满意。后来使用中又发现 Parsedom 中存在的一些问题，查找原因并修正之后无伤大雅，想到干脆去掉 Parsedom 中一些我用不到的代码，直接集成到我的 py 文件中使用 ^_^。</p>
<p>略加奋战，终于在 XBMC 界面上能正常显示了，能显示频道列表了，也能进入频道显示视频列表，结果播放时发现悲剧了，iPad 的 m3u 被 XBMC 自己给分段解析然后尝试播放了，造成文件路径不对无法播放。后来使用手工修改路径的方式，尽管能播放，但造成的“效果”就是每 5-6 秒钟就需要切换一下视频，这对于 Raspberry Pi 这种暂时无法调用外部播放器的系统来说简直没法用。</p>
<p><strong>PPTV 视频 XBMC 插件 1.0 版本功能：</strong></p>
<ol>
<li>支持 www.pptv.com 上基本所有直播和点播视频；</li>
<li>支持在插件设置中选择视频质量（与实际 PPTV 视频片源对应），暂时支持：标清、高清、超清、蓝光、iPad 超清；</li>
<li>支持按影片类型、时间、更新时间、热度等条件选择过滤视频，并且所有过滤条件全部实时从 PPTV 网站获取，插件中不保存分类；</li>
<li>视频列表支持翻页处理（具体每个连续剧的集数列表没有翻页，默认全部列出来，主要感觉 1-40 集这种列表还弄分页没什么必要）；</li>
<li>不依赖任何 PPTV 的 Windows 程序和库，理论上可以在任何 XBMC 系统上使用</li>
</ol>
<p>由于 XBMC 不能原生支持中文输入等原因，暂时未支持视频搜索功能，后续将会改进。</p>
<p><strong>备注：</strong></p>
<p>本插件默认的视频质量为高清格式，需要超清或蓝光格式的在插件设置界面中进行修改即可。iPad 超清视频和直播视频分别是特殊的 m3u 和 m3u8 格式（指向 mp4 视频），需要XBMC 系统能正常播放 PPTV m3u 和 m3u8 视频（Windows 下的 XBMC 系统应该可以配置使用外部播放器来支持，不过偶懒得安装木有测试过）。</p>
<p><strong>声明：</strong></p>
<p>此插件只是从 PPTV 网站获取视频内容，所有视频版权均与此网站有关，本插件一概不负责。另外由于 PPTV 网站将来会有变化，我不保证能马上修复并解决可能出现的问题，因为说不定 PPTV 就完全把未公开的 API 给禁用了。</p>
<p>插件介绍的截图：</p>
<p><a href="http://zohead.com/wp-content/uploads/pptv-xbmc-intro.jpg" target="_blank"><img class="alignnone" title="PPTV视频XBMC插件-介绍" src="http://zohead.com/wp-content/uploads/pptv-xbmc-intro.jpg" alt="PPTV视频XBMC插件-介绍" width="683" height="384" /></a></p>
<p>插件设置界面：</p>
<p><a href="http://zohead.com/wp-content/uploads/pptv-xbmc-settings.jpg" target="_blank"><img class="alignnone" title="PPTV视频XBMC插件-设置" src="http://zohead.com/wp-content/uploads/pptv-xbmc-settings.jpg" alt="PPTV视频XBMC插件-设置" width="683" height="384" /></a></p>
<p>视频列表界面：</p>
<p><a href="http://zohead.com/wp-content/uploads/pptv-xbmc-video-list.jpg" target="_blank"><img class="alignnone" title="PPTV视频XBMC插件-视频列表" src="http://zohead.com/wp-content/uploads/pptv-xbmc-video-list.jpg" alt="PPTV视频XBMC插件-视频列表" width="683" height="384" /></a></p>
<p>具体视频播放界面（放的正是 《麦兜》 哈 ^_^）：</p>
<p><a href="http://zohead.com/wp-content/uploads/pptv-xbmc-video-play.jpg" target="_blank"><img class="alignnone" title="PPTV视频XBMC插件-播放界面" src="http://zohead.com/wp-content/uploads/pptv-xbmc-video-play.jpg" alt="PPTV视频XBMC插件-播放界面" width="683" height="384" /></a></p>
<p>本 XBMC 插件的 github 源代码库地址：</p>
<p><a href="https://github.com/zohead/pptv4xbmc" target="_blank">https://github.com/zohead/pptv4xbmc</a></p>
<p>下载 PPTV 视频 XBMC 插件：</p>
<p><a href="http://github.com/downloads/zohead/pptv4xbmc/plugin.video.pptv-v1.0.zip" target="_blank">http://github.com/downloads/zohead/pptv4xbmc/plugin.video.pptv-v1.0.zip</a></p>
<p>下载之后拷贝到 XBMC 系统，然后到 XBMC 系统设置中选择压缩包安装即可。我正在申请将此款插件加入 XBMC 的中文插件库，顺利的话安装此插件将会更加简单，并且在以后修改时可以直接在线更新。</p>
<p>各位在使用 PPTV 视频 XBMC 插件中如果发现任何问题，欢迎提出指正哦，另外有问题时最好能描述清楚，能附上看的是哪个视频或者哪个频道下面的话更好。 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/pptv-xbmc-plugin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
