一般是javascript的内容
也许由于各种原因,你可能想清理自己的微博内容,内容太多了,没法一条一条删除,那就可以这样来清理门户:
1 先安装firefox,安装插件greasemonkey
2 到“我的微博”页面,选择greasemonkey,new user script
3 会出现新脚本对话框(第一次打开会问你用什么编辑器):
4 起名什么的就不用说了

5 选择ok后,添加如下代码:
6 然后,刷新页面就会自动开始删除了,自动刷新页面删除,直到全部删除完
7 然后取消此脚本即可,否则以后访问此页面继续会执行此脚本
附上delete_all_status.js的代码:
//code from www.aslibra.com
//by hqlulu@gmail.com
var total = 0;
var done = 0;
function delete_id( mid ){
$.ajax({
type: "POST",
url: "http://"+window.location.hostname+"/mblog/delete.php?rnd="+Math.random(),
dataType:"text",
data:{mid:mid},
success: function(obj){
done ++;
if( done == total){
window.location.reload();
}
}
});
}
function delete_start(){
if(typeof( $ ) != "undefined" ){
total = $("#feed_list li").length;
if(total){
$("#feed_list li").each(function(e){
delete_id($(this).attr("id").substr(4));
//return false;
});
}
}else{
//alert("wait for jquery");
setTimeout(delete_start, 500);
}
}
delete_start();
1 先安装firefox,安装插件greasemonkey
2 到“我的微博”页面,选择greasemonkey,new user script
3 会出现新脚本对话框(第一次打开会问你用什么编辑器):
4 起名什么的就不用说了
5 选择ok后,添加如下代码:
// ==UserScript==
// @name clearMe
// @namespace delete all status
// @include http://weibo.com/1967156965/profile
// ==/UserScript==
//注意,前面的注释别复制,复制后面的到你的编辑器注释后
var rnd = Math.random();
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.weibodi.com/static/js/jquery.min.js?v='+rnd;
head.appendChild(script);
var script2= document.createElement('script');
script2.type= 'text/javascript';
script2.src= 'http://www.weibodi.com/static/js/del_all_status.js?v='+rnd;
head.appendChild(script2);
// @name clearMe
// @namespace delete all status
// @include http://weibo.com/1967156965/profile
// ==/UserScript==
//注意,前面的注释别复制,复制后面的到你的编辑器注释后
var rnd = Math.random();
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.weibodi.com/static/js/jquery.min.js?v='+rnd;
head.appendChild(script);
var script2= document.createElement('script');
script2.type= 'text/javascript';
script2.src= 'http://www.weibodi.com/static/js/del_all_status.js?v='+rnd;
head.appendChild(script2);
6 然后,刷新页面就会自动开始删除了,自动刷新页面删除,直到全部删除完
7 然后取消此脚本即可,否则以后访问此页面继续会执行此脚本
附上delete_all_status.js的代码:
//code from www.aslibra.com
//by hqlulu@gmail.com
var total = 0;
var done = 0;
function delete_id( mid ){
$.ajax({
type: "POST",
url: "http://"+window.location.hostname+"/mblog/delete.php?rnd="+Math.random(),
dataType:"text",
data:{mid:mid},
success: function(obj){
done ++;
if( done == total){
window.location.reload();
}
}
});
}
function delete_start(){
if(typeof( $ ) != "undefined" ){
total = $("#feed_list li").length;
if(total){
$("#feed_list li").each(function(e){
delete_id($(this).attr("id").substr(4));
//return false;
});
}
}else{
//alert("wait for jquery");
setTimeout(delete_start, 500);
}
}
delete_start();
先看看服务器的文件:
upload.php 最简单的文件处理:
在adobeAir里面,建立一个上传的流程:
注:pictureFile是一个文件对象
upload.php 最简单的文件处理:
<?php
$tempFile = $_FILES['pic']['tmp_name'];
$fileName = $_FILES['pic']['name'];
$fileSize = $_FILES['pic']['size'];
move_uploaded_file($tempFile, $fileName);
echo "Uploaded $fileName";
$tempFile = $_FILES['pic']['tmp_name'];
$fileName = $_FILES['pic']['name'];
$fileSize = $_FILES['pic']['size'];
move_uploaded_file($tempFile, $fileName);
echo "Uploaded $fileName";
在adobeAir里面,建立一个上传的流程:
//文件上传
function callback_for_upload_progress(event) {
var loaded = event.bytesLoaded;
var total = event.bytesTotal;
var pct = Math.ceil( ( loaded / total ) * 100 );
air.trace('Uploaded ' + pct.toString() + '%');
}
function callback_for_upload_finish(event) {
air.trace(event.data); // output of server response to AIR dev console
}
function upload_file( pictureFile ){
var url = "http://www.aslibra.com/tmp/php/weibo/upload.php";
var variables = new air.URLVariables();
variables.op = 'upload';
// set params for http request
var tmpRequest = new air.URLRequest(url);
tmpRequest.method = air.URLRequestMethod.POST;
tmpRequest.contentType = 'multipart/form-data';
// assigning variables to request
tmpRequest.data = variables;
air.sendToURL(tmpRequest);
// attach events for displaying progress bar and upload complete
pictureFile.addEventListener(air.ProgressEvent.PROGRESS, callback_for_upload_progress);
pictureFile.addEventListener(air.DataEvent.UPLOAD_COMPLETE_DATA, callback_for_upload_finish);
// doing upload request to server
pictureFile.upload(tmpRequest, 'pic', false);
}
function callback_for_upload_progress(event) {
var loaded = event.bytesLoaded;
var total = event.bytesTotal;
var pct = Math.ceil( ( loaded / total ) * 100 );
air.trace('Uploaded ' + pct.toString() + '%');
}
function callback_for_upload_finish(event) {
air.trace(event.data); // output of server response to AIR dev console
}
function upload_file( pictureFile ){
var url = "http://www.aslibra.com/tmp/php/weibo/upload.php";
var variables = new air.URLVariables();
variables.op = 'upload';
// set params for http request
var tmpRequest = new air.URLRequest(url);
tmpRequest.method = air.URLRequestMethod.POST;
tmpRequest.contentType = 'multipart/form-data';
// assigning variables to request
tmpRequest.data = variables;
air.sendToURL(tmpRequest);
// attach events for displaying progress bar and upload complete
pictureFile.addEventListener(air.ProgressEvent.PROGRESS, callback_for_upload_progress);
pictureFile.addEventListener(air.DataEvent.UPLOAD_COMPLETE_DATA, callback_for_upload_finish);
// doing upload request to server
pictureFile.upload(tmpRequest, 'pic', false);
}
注:pictureFile是一个文件对象
一个小问题:如何把一个人的所有微博下载回来?
有几个方式是容易想到的:
1 一个一个链接另存为,用迅雷不行,没有身份验证信息
2 用php的curl写一个登录程序,自动登录,自动访问抓取,如果不能自动登录,则白费
3 建立一个代理服务器,按规则保留访问过的内容,自动打开要采集的一系列网页,稍微复杂了些
4 给页面添加脚本,执行脚本抓取,ajax功能很好用,jquery还顺便分析了内容,比php分析要简单
5 通过api访问
拿新浪微博为例,所有的方式都可行:
第一个是简单些,有人力又不嫌麻烦那就挺好。
第二个规则变化比较多,登录过程跳来跳去,跟着做也是没有问题的,况且登录流程没有验证,倒是可行的。
第三个要比较熟悉服务器规则才行,不太好实施。
第四个如果熟悉脚本,那不妨试试了,有跨域的问题,数据提交比较麻烦些。
第五个受api限制,比如只能读取200条。
阿权想说的是第四个,这个方式很有趣:
1 往页面添加脚本,改变页面的行为,也就是说你可以做任何一个事情,比如你在网页里面发出一个ajax请求下载同域名下的数据,这个很容易理解。
2 下载完成后,分析页面数据,jquery很方便
3 get方式传递出去你要的信息,这个不需要ajax也可以,比如放一个img什么的
这个最好的方式是 firefox加上Greasemonkey了,对页面新建一个脚本,然后就基本随便你操作了,比如:
my.js里面就是看你想做什么了,那可就是在当前域名下的操作了
有几个方式是容易想到的:
1 一个一个链接另存为,用迅雷不行,没有身份验证信息
2 用php的curl写一个登录程序,自动登录,自动访问抓取,如果不能自动登录,则白费
3 建立一个代理服务器,按规则保留访问过的内容,自动打开要采集的一系列网页,稍微复杂了些
4 给页面添加脚本,执行脚本抓取,ajax功能很好用,jquery还顺便分析了内容,比php分析要简单
5 通过api访问
拿新浪微博为例,所有的方式都可行:
第一个是简单些,有人力又不嫌麻烦那就挺好。
第二个规则变化比较多,登录过程跳来跳去,跟着做也是没有问题的,况且登录流程没有验证,倒是可行的。
第三个要比较熟悉服务器规则才行,不太好实施。
第四个如果熟悉脚本,那不妨试试了,有跨域的问题,数据提交比较麻烦些。
第五个受api限制,比如只能读取200条。
阿权想说的是第四个,这个方式很有趣:
1 往页面添加脚本,改变页面的行为,也就是说你可以做任何一个事情,比如你在网页里面发出一个ajax请求下载同域名下的数据,这个很容易理解。
2 下载完成后,分析页面数据,jquery很方便
3 get方式传递出去你要的信息,这个不需要ajax也可以,比如放一个img什么的
这个最好的方式是 firefox加上Greasemonkey了,对页面新建一个脚本,然后就基本随便你操作了,比如:
var rnd = Math.random();
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.aslibra.com/path/to/jquery.js?v='+rnd;
head.appendChild(script);
var script2= document.createElement('script');
script2.type= 'text/javascript';
script2.src= 'http://www.aslibra.com/path/to/my.js?v='+rnd;
head.appendChild(script2);
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.aslibra.com/path/to/jquery.js?v='+rnd;
head.appendChild(script);
var script2= document.createElement('script');
script2.type= 'text/javascript';
script2.src= 'http://www.aslibra.com/path/to/my.js?v='+rnd;
head.appendChild(script2);
my.js里面就是看你想做什么了,那可就是在当前域名下的操作了
lightbox适合在网页展示图片使用,使用起来很方便,可以参考官网:
http://leandrovieira.com/projects/jquery/lightbox/
也有protype的lightbox版本,不讨论此版本
使用方法官网有介绍,这里不介绍。
此次改造的目的:
有上千个图片需要展示,但是显然不能放在一页解决,那就考虑分页处理,但默认情况lightbox不会自动翻页,我们需要的就是改良此种状况,已经完成的展示 必应Bing背景图片欣赏,地址 http://www.aslibra.com/bing/
改造方案:
1 把所有图片分页显示,这个对php来说很简单
2 最后一个图片总是显示下一个的按钮,第二页之后总是显示上一个按钮(注:默认情况下,在一个页面,第一个图片不显示pre,最后一个图片不显示next)
3 按键支持也做类似修改
先做约定:
1 展示时最后一个图片点击下一个是翻页,并且带上参数 showDetail=1,这样会自动开始第一个图片的展示
2 同样,点击上一个是 showDetail=-1
3 页面定义是否有下一页 HAS_NEXT
4 定义当前页码CUR_PAGE
http://leandrovieira.com/projects/jquery/lightbox/
也有protype的lightbox版本,不讨论此版本
使用方法官网有介绍,这里不介绍。
此次改造的目的:
有上千个图片需要展示,但是显然不能放在一页解决,那就考虑分页处理,但默认情况lightbox不会自动翻页,我们需要的就是改良此种状况,已经完成的展示 必应Bing背景图片欣赏,地址 http://www.aslibra.com/bing/
改造方案:
1 把所有图片分页显示,这个对php来说很简单
2 最后一个图片总是显示下一个的按钮,第二页之后总是显示上一个按钮(注:默认情况下,在一个页面,第一个图片不显示pre,最后一个图片不显示next)
3 按键支持也做类似修改
先做约定:
1 展示时最后一个图片点击下一个是翻页,并且带上参数 showDetail=1,这样会自动开始第一个图片的展示
2 同样,点击上一个是 showDetail=-1
3 页面定义是否有下一页 HAS_NEXT
4 定义当前页码CUR_PAGE
今天要处理字符串的替换的问题。
用的是这个:
发现只是替换了第一个,js里面没有替换所有的代码,不妨可以试试这个:
以上代码参考自:http://www.javaeye.com/topic/67544
用的是这个:
content = content.replace("http://aslibra.com/", "http://www.aslibra.com/");
发现只是替换了第一个,js里面没有替换所有的代码,不妨可以试试这个:
String.prototype.replaceAll = function(s1,s2){
return this.replace(new RegExp(s1,"gm"),s2);
}
return this.replace(new RegExp(s1,"gm"),s2);
}
以上代码参考自:http://www.javaeye.com/topic/67544
最近处理google gadget,希望使用html内容,有一个例子使用html的:
使用html内容的窗体:
api\samples\gadgets\HtmlDetailsView
使用布局文件支持html:
api\samples\gadgets\XmlDetailsView
在主窗口使用网络图片:
api\samples\gadgets\XMLHttpRequest
描绘界面列表的例子:
http://desktop.google.com/plugins/i/google_news.html?hl=zh-CN
Google gadget engine对HTML/CSS的支持分析:
http://labs.chinamobile.com/mblog/2391_4358
http://labs.chinamobile.com/mblog/2391_4660?wralxianxrnx
使用html内容的窗体:
api\samples\gadgets\HtmlDetailsView
使用布局文件支持html:
api\samples\gadgets\XmlDetailsView
在主窗口使用网络图片:
api\samples\gadgets\XMLHttpRequest
描绘界面列表的例子:
http://desktop.google.com/plugins/i/google_news.html?hl=zh-CN
Google gadget engine对HTML/CSS的支持分析:
http://labs.chinamobile.com/mblog/2391_4358
http://labs.chinamobile.com/mblog/2391_4660?wralxianxrnx

google桌面提供了很多小工具,可以自己开发一些小应用,看似不错。
需要的东西不多,只是懂得html和js就可以开发了。
参考资料:
官方网站
Google 桌面补充工具栏小工具入门
功能介绍
字符集的编号:Locale IDs Assigned by Microsoft
Gadget API Reference





