星期四, 一月 27, 2011

通用短链接,用于解决magnet和ed2k的链接缩短

非常CD和BT中国,又一次倒下了。
其实,网站无所谓是网站,只是一个分享信息的地方,于是只要有分享行为,就无所谓是在这个网站还是那个网站,人们之所以上一个网站,仅仅是因为那里容易找到东西。
所以不论是BT还是电驴还是什么其他的,其实都只不过是在twitter上的一个带着#的tag。

那么,问题就是如何把BT的链接或者电驴的链接缩短,变成一个短链接。只要有一个电驴或者磁力下载的短链接网站,任何p2p的分享网站都将在twitter上复活,甚至由于RT的放大作用,下载速度还将相当的快。

好吧,另外又出现一个问题,就是有中心就可能被封禁。只有完全的P2P才是不可封锁的。也就是说,如果封锁掉一个电驴短链接网站或者磁力下载短链接网站,就跟关掉verycd之类的一样。

再次重述一次问题:需要一个通用的,p2p下载链接的缩短服务。

下面是方案:
设有自有网站a(1).com,其上建立有短链接服务。
比如,要缩短magnet:?xt=urn:btih:R2FTZQGMR55K4D25EKVLF4DWCF4RQK24
调用goo.gl的API
POST https://www.googleapis.com/urlshortener/v1/url
Content-Type: application/json
{"longUrl": "http://magnet:?xt=urn:btih:R2FTZQGMR55K4D25EKVLF4DWCF4RQK24"}
注意,由于goo.gl只能缩短http,所以如果不是一个常规的http链接,而是magnet或者ed2k的链接,则加装一个http://的字符串帽子到前缀。
得到的结果应该是
{
"kind": "urlshortener#url",
"id": "http://goo.gl/eOPo0",
"longUrl": "http://magnet:?xt=urn:btih:R2FTZQGMR55K4D25EKVLF4DWCF4RQK24"
}
于是取出eOPo0,生成a(1).com/eOPo0

展开的过程相反,发现a(1).com/eOPo0的输入,调用goo.gl API
GET https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/eOPo0
得到的结果是
{
"kind": "urlshortener#url",
"id": "http://goo.gl/eOPo0",
"longUrl": "http://magnet:?xt=urn:btih:R2FTZQGMR55K4D25EKVLF4DWCF4RQK24",
"status": "OK"
}
然后,取出longUrl. 发现http://magnet或者http://ed2k时,删除http://,否则不管

运行同一个程序的服务器a(2).com,由于采用同样的算法。所以a(2).com/eOPo0
也仍然会指向或者返回magnet:?xt=urn:btih:R2FTZQGMR55K4D25EKVLF4DWCF4RQK24
换句话说,如果服务器a(1),com由于种种原因无法访问,而知道服务器a(2).com的地址,就可以随时替换链接

有没有GAE的程序员呢?来帮我实现这个吧。

没有评论: