同时在用twitter和新浪微博,在twitter上主要看贴为主,在新浪微博上发帖比较多。于是就想到是否搞一下将新浪微博同步到twitter上。搜索了下,发现月光博客上提供了解决方案,不过稍有遗憾的是没有图片的同步。于是就自己用asp.net实现了下,用下来感觉还行,所以分享一下,同时提供源代码,如果有定制开发的朋友可以修改源码,但如果再发布时候,请注明出处,先谢谢了!
部署在家里机器上,可能不稳定。
用FeedBurner绑定Twitter,在FeedBurner中配置Rss源到SinaFeed应用。当FeedBurner每次来ping的时候,SinaFeed抓取新浪微博的内容,检查是否已经抓取过,把结果保存在Access数据库中,返回Rss给FeedBurner。
在Web.Config里,有以下几个可以配置的选项:
代理服务器相关,例如你的网站访问外网需要代理的话,请设置一下配置:
UseProxy , ProxyAddress, ProxyPort, ProxyDomain, ProxyUserName, ProxyUserPassword
AuthCodeConfig 配置在应用里的授权码,自己设定一个,例如abc,当外面请求RSS的时候,需要在Url传递一个AuthCode,要和所配置的(abc)一直,程序才会返回结果,否则报Authentication Error错误。
AllowedUserIds 允许被处理新浪微博Id,如何得到你的Id?只要点击“关注”,在Url里就会出现你的Id,例如,我的Id是:1650422717 。SinaFeed支持多个Id,用逗号(,) 分割。
RssChannelUrl 所生成的Rss的ChannelUrl
RssBaseGuid 所生成的Rss的唯一标识
RssTitle 所生成的Rss的标题
RssDescription 所生成的Rss的描述
例如,你部署在www.example.com上,虚拟目录为SinaFeed,你的新浪Id为1650422717,AuthCodeConfig你配置了jinweijiesinafeed那么
访问http://www.example.com/SinaFeed/Default.aspx?SinaUserId=1650422717&AuthCode=jinweijiesinafeed
就可以得到用户1650422717的Rss了。
另外的一些可传参数的配置:
UseOriginalImage 是否使用原来的大图片,默认True,如果False的话,将会使用新浪微博的缩略图。
RssMaxItemCount 返回RSS Items的最大数量。
AttachImageToEnclosure 是否将图片已Enclosure的方式发布到RSS
AttachImageToTitle 是否将图片地址添加到RSS Item的Title后面。
AttachImageToDescription 是否将图片地址添加到RSS Item的Description后面。
AttachOriginalMblogToRT 如果是转发微博,是否添加原微博到。
一般我的配置:
新浪微博:
Twitter:
有了RSS,然后我们就可以配置FeedBurner来绑定Twitter帐号了。
有任何问题可以加我的微博进行讨论。我的新浪微博和twitter都是@jinweijie 。谢谢!
2011了,大家新年好!
外面寒冷,躲在家里写写博客还是挺好的。
今天为我的博客修改了下jQuery的Thickbox,增加了预加载图片功能和点击图片前后浏览的功能。
首先看下效果:
http://www.jinweijie.com/photo/?album=1&gallery=3
效果图(看右侧的箭头)
点击图片,当图片加载完毕以后,会自动加载后2张图片,这样,浏览起来会变得很顺畅。
主要代码:
替换thickbox.js中的:
imgPreloader = new Image();
imgPreloader.onload = function(){
imgPreloader.onload = null;
为
imgPreloader = new Image();
prevImg = new Image();
nextImg = new Image();
imgPreloader.onload = function(){
imgPreloader.onload = null;
var tb_links = jQuery('a[class="thickbox"]');
var i = -1;
tb_links.each(function(n) { if (this.href == imgPreloader.src) { i = n; } });
if (i != -1) {
if (i>0) { prevImg.src = tb_links[i-1].href; }
if (i+1 < tb_links.length) {
var imgTemp1 = new Image();
imgTemp1.src = tb_links[i+1].href;
if(tb_links[i+2]){
var imgTemp2 = new Image();
imgTemp2.src = tb_links[i+2].href;
}
if(tb_links[i+3]){
var imgTemp3 = new Image();
imgTemp3.src = tb_links[i+3].href;
}
}
}
需要3张图片left.gif, right.gif, pixel.gif。分别是左右和div透明背景图。
然后修改thickbox.css,增加:
#divNavControl{
position: absolute;
z-index:999;
}
#divPre{
height: 100%;
left: 0;
position: absolute;
width: 50%;
background:url(pixel.gif) repeat;
cursor:pointer;
}
#divNext{
height: 100%;
position: absolute;
right: 0;
width: 50%;
background-color:transparent;
background:url(pixel.gif) repeat;
cursor:pointer;
}
#imgLeftArrow{
position:absolute;
top:45%;
left:0;
}
#imgRightArrow{
position:absolute;
top:45%;
right:0;
}
最后修改thickbox.js,由于代码太长了,就不贴出来了,大家有兴趣可以看看,或者直接用就行了。
下载请到 http://www.jinweijie.com/javascript/thickbox-add-previous-and-next-button-on-image-like-lightbox/
这里就不上传了。
谢谢大家,再次祝大家新年快乐!
ASTreeView是一个免费的树控件,支持拖拽,右键菜单(编辑,删除,增加),动态加载(Dynamic Loading),客户端、服务端事件支持,xml导入导出。稳定,快速。欢迎大家试用。
ASTreeView更新到1.5.8了,以下是更新记录:
SelectNode – 根据节点值选中节点。
CheckNodes – 根据节点值勾选节点。
UnCheckNodes - 取消勾选节点,根据节点值。
FindByValue – 类似于WebControl类的FindControl方法,根据值得到节点实例。
FindByText – 根据节点文字得到节点实例。
可以设置下拉框树的启用或者禁用,代码:
this.astvMyTree.Enabled = false;
开发者可以设置这个属性来控制是否显示节点前的加号/减号:
someNode.EnableOpenClose = false;
在1.5.8版本里,OnNodeDragAndDropCompleteScript属性已经更改为:OnNodeDragAndDropCompletingScript。
另外,新增OnNodeDragAndDropCompletedScript属性。
关于两个属性的说明:
OnNodeDragAndDropCompleting在这个事件里,开发者可以取消当前的的拖拽操作,但是不能得到拖拽节点的nextSibling等属性,因为拖拽尚未完成。
OnNodeDragAndDropCompletedScript在此事件里,开发者可以得到拖拽节点的nextSibling和parentNode等属性,但不能取消拖拽,因为node已经appended了。
修复在动态加载中,EnableThreeStateCheckbox=false无效问题。
http://www.astreeview.com/astreeviewdemo/Download.aspx
谢谢!
ASTreeView 1.5.3发布啦,相比1.4.0,新版本改进了很多,还增加了几个很多朋友关心的功能。
下面我介绍下1.5.3中有哪些新东西:
使用TextNode, 开发者可以很灵活地使用html作为树节点的NodeText,这就意味着树节点可以是2个hyperlink,可以有多种颜色,甚至可以是javascript。
来个截图:
当使用TextNode作为树节点时,节点的拖拽就成了问题,因为ASTreeView不知道树节点里的html会是什么。所以我增加了EnableDragDropOnIcon 属性,如果设置为true,那么最终用户可以拖拽树节点前的图标进行节点的移动。
截图:
这是新版本最大的亮点之一。想像如此情景:当开发人员想用ajax增加节点的时候,在服务端验证是否这个符合一定规范,如果不符合,返回特定字符,客户端取消增加节点的操作,在新版本中,可以这样实现:
(a) 设置EnableOnNodeAddedScriptReturn="true"
(b) 设置OnNodeAddedScript="addedHandler(elem)"
(c) 然后在addedHandler函数里这样写:
function addedHandler( elem ){ var message = ''; var result = true; var aTag = elem.getElementsByTagName('A')[0]; if( aTag.getAttribute('addfailed') == 'true' ){ alert( aTag.innerHTML ); return false; } else{ message = (">>add completed. [Node]" + elem.getAttribute("treeNodeValue") + "<br />" ); } document.getElementById("<%=divConsole.ClientID %>").innerHTML += message; return result; }
在这个例子中,服务端返回addfailed的属性,加在节点的a标签上,addedHandler看到这个标签,返回false,告诉ASTreeView取消当前的新增节点操作。
同样的,在新版本中,也可以对编辑,删除,拖拽节点进行取消控制。
截图:
请访问在线Demo
新版本对根节点和顶端节点的css进行了调整,更好地对齐了节点和树线。感谢richboylee!、
新版对ViewState进行了优化,介绍了往客户端发送的数据量
一个版本for .net 2.0,引用Ajax Extension 1.0; 另一个版本for .net 3.5,引用Ajax Extension 3.5。
就写这么多,感兴趣的同学可以下载下来自己玩玩。
下载地址:
http://www.astreeview.com/astreeviewdemo/Download.aspx
谢谢大家一直以来的支持,截止到1.5.3,ASTreeView已经比较稳定了,有很多国内外朋友用在项目里反映都不错。如果您觉得这控件还可以,就麻烦您推荐下,谢谢!
首先祝大家在新的一年里天天开心,有更多的收获!
ASTreeView在大家的帮助和支持下,已经更新了好几次,每一次都有新的功能,修复新的bug。正是由于有很多朋友使用,ASTreeView才能有不断的进步,在这里先谢谢大家了!
新年伊始,ASTreeView又有添加了几个新功能,希望在这里可以和大家分享下:
当用户拖拽节点的时候,如果设置EnableHorizontalLock=True的话,那么,最终用户只能在y轴方向上拖动。这个功能在列表排序的时候,还有限定同级节点拖动时比较有用。点击查看在线演示。截图:
在新版1.4.0中,可以限制拖拽的层级,也就是可以限制节点只能在它的同一级拖动。这样,可以用ASTreeView实现列表排序功能。在线演示同上。
新版中增加了OnNodeDragAndDropStartScript,开发者可以在最终用户拖拽节点前执行一些javascript,使用示例:
首先设置TreeView属性:
OnNodeDragAndDropStartScript="dndStartHandler( elem )"
然后写一个处理函数:
//parameter must be "elem"
functiondndStartHandler( elem ){
document.getElementById("<%=divConsole.ClientID %>").innerHTML
+= (">>drag started. [Node]"+ elem.getAttribute("treeNodeValue")
+" [Parent]:"+ elem.parentNode.parentNode.getAttribute("treeNodeValue")
+"<br />");
}
很多朋友反映,当节点是动态载入的时候,选择,勾选的PostBack不发生。这是由于动态加载节点的时候,是服务器端临时输出的节点的关系,在服务器端的控件树中并不存在这些节点。其实这个问题还是比较好解决的,我更新了下示例5,实现了此功能,有兴趣的朋友可以下载下来玩一玩。或者访问在线演示。
谢谢大家支持,祝大家新年快乐!