From 0f07292e73452e5fed395bf3a3cc17c0fd38a63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com> Date: Fri, 21 Apr 2017 19:05:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AE=80=E4=B9=A6=E5=8D=9A?= =?UTF-8?q?=E5=AE=A2=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/img/jianshu_logo.png | Bin 0 -> 940 bytes WebContent/index.html | 194 +++--- WebContent/js/main.js | 979 +++++++++++++++--------------- src/common/AppConfig.xml | 6 +- src/common/Spider.xml | 39 ++ src/spider/BlogPageProcessor.java | 20 +- 6 files changed, 648 insertions(+), 590 deletions(-) create mode 100644 WebContent/img/jianshu_logo.png diff --git a/WebContent/img/jianshu_logo.png b/WebContent/img/jianshu_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3fe7f582ed0610aaaa6df3bb22c88f1ea965a5 GIT binary patch literal 940 zcmeAS@N?(olHy`uVBq!ia0vp^1wd@V!3-o*zx#lw-TEjKt@5-yYiGbK=DE#JLXkBNbpN#GE_D{>PO92sbWz}&P z44+ImBcOEP%QZLxs2as4FBEof3cQ(T~invovtGZSQ8AeeTfYcozK+u2XD{7_-yp|+#Jytl3W?3*XNc=#BG{n zvpCvhI=AP-FtJBM_8M9W=5vBi+}td!^fae{Wh>vhz0LNbqr)Q81lPsYqJrXVHGalb`<$E# zZ5T=qr*nwfPTM9b9yhhgI6{K=luV>n`r0nfdJU0nx7&UcYd>>vn*QBP+FL^IhQP@P zr+t2_=Pk5Jjabk9-P*2Nk6@vV)T`tS20>AdOgdp;IEm*Z7fBH@3;DfDr~n?m0z?w=>U zcdGw8_)?MQ%AE79hfc-&NjUH?oLIXs!^la>Sw8Vfh3`iNpXt6CDQX8g>s4ZEQlG7T zyzfiX@}07+_p;jWbTDr^WKcL~_48jhu6hP(I7C%s?wKd$_~P2DHzqSaaQNR0v9o8> zTqs|s9#WR+&6m3@`ra}H#V?s#8pBG?HkO %q(Z#<}Gad&aEf`LDjtUjj_!44$rj JF6*2UngI2XvD^Rv literal 0 HcmV?d00001 diff --git a/WebContent/index.html b/WebContent/index.html index 95f290e..3a177a0 100644 --- a/WebContent/index.html +++ b/WebContent/index.html @@ -1,97 +1,99 @@ - - - - -OSChina.Net 博客搬家 - - - - - - - -
- -

博客搬家

-
-
-
- -
-

使用说明:

-
    -
  1. 进入某个博客首页,获取地址(例如:http://blog.csdn.net/XXXX)
  2. -
  3. 将博客地址粘贴到MoveBlog输入框,点击“抓取”按钮,系统将自动获取博文目录
  4. -
  5. 勾选要搬家的博文,并进行分类设置
  6. -
  7. 点击确定“按钮”提交上传
  8. -
-

声明:

-

OSCHINA建议只对自己的博文进行搬家,博客文章版权属于作者,受法律保护。未经作者同意请慎重转载

-
-
-
-
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
-
-
-
-
- - - 抓取 - - - -
-
- - -
-
-
-
- -
- + + + + +OSChina.Net 博客搬家 + + + + + + + +
+ +

博客搬家

+
+
+
+ +
+

使用说明:

+
    +
  1. 进入某个博客首页,获取地址(例如:http://blog.csdn.net/XXXX)
  2. +
  3. 将博客地址粘贴到MoveBlog输入框,点击“抓取”按钮,系统将自动获取博文目录
  4. +
  5. 勾选要搬家的博文,并进行分类设置
  6. +
  7. 点击确定“按钮”提交上传
  8. +
+

声明:

+

OSCHINA建议只对自己的博文进行搬家,博客文章版权属于作者,受法律保护。未经作者同意请慎重转载

+
+
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
+
+
+ + + 抓取 + + + +
+
+ + +
+
+
+
+ +
+ \ No newline at end of file diff --git a/WebContent/js/main.js b/WebContent/js/main.js index 4b5c55f..79a4db8 100644 --- a/WebContent/js/main.js +++ b/WebContent/js/main.js @@ -1,490 +1,491 @@ -/*var Conf = { - 'host':'http://www.oschina.net', - 'auth_uri':'/action/oauth2/authorize', - 'response_type':'code', - 'client_id':'c39L0n9Am23s5wTW10dC', - 'redirect_uri':'http://move.pengbo.us/Oauth2Action' -}; - */ - -/*var Conf = { - 'host':'http://www.oschina.com', - 'auth_uri':'/action/oauth2/authorize', - 'response_type':'code', - 'client_id':'yKqX3IQWBvft0W8JXz0k', - 'redirect_uri':'http://www.moveblog.com:8080/Oauth2Action' - }; - */ - -var Conf = { - 'host' : 'http://www.oschina.com', - 'auth_uri' : '/action/oauth2/authorize', - 'response_type' : 'code', - 'client_id' : 'BjvoHIHodS09uBtT6wIx', - 'redirect_uri' : 'http://www.moveblog.com:8080/Oauth2Action' -}; - -var Api = (function(conf, $) { - - var api = {}; - - var uri = { - 'user' : '/action/user', - 'login' : conf.auth_uri + '?response_type=' + conf.response_type - + '&client_id=' + conf.client_id + '&redirect_uri=' - + encodeURIComponent(conf.redirect_uri), - 'blog_list' : '/action/spider', - 'blog_type' : '/action/syscatalog', - 'import_list' : '/action/moveblog' - }; - var blog_tpl = [ - '
  • ', - '', - '', - '', - '', - - '', - '', - '', - '', - '', - '', - '
  • '].join('\n'); - - var getCookie = function(name, value) { - var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); - if (arr = document.cookie.match(reg)) - return unescape(arr[2]); - else - return null; - }; - - var delCookie = function(name) { - var exp = new Date(); - exp.setTime(exp.getTime() - 1); - var cval = getCookie(name); - if (cval != null) - document.cookie = name + "=" + cval + ";expires=" - + exp.toGMTString(); - }; - - var ajax = function(url, callback, data, async) { - return $.ajax({ - url : url, - type : 'POST', - dataType : 'json', - async : typeof async === 'undefined' ? true : async, - data : data, - success : function(response) { - if (response == null) - return; - ajaxErrorHandler(response, callback); - }, - error : callback - }).responseText; - }; - - var ajaxErrorHandler = function(response, callback, onError) { - var data = typeof response === "object" ? response : eval('(' - + response + ')'); - - if (data == null) { - location.reload(); - return; - } - - if (data.status == 500) { - alert('500 服务器内部错误'); - location.reload(); - return; - } - if (data.error) { - if (onError) { - return onError(data); - } - if (data.code == 0) { - alert(data.error); - return; - } else if (data.code == 1) { - delCookie('user'); - location.reload(); - return; - } - } - callback && callback(data); - }; - - var getUserInfo = function(callback) { - var user_id = getCookie('user'); - return ajax(uri.user, callback, { - user_id : user_id - }); - }; - - var doLogin = function() { - location.href = conf.host + uri.login; - }; - - var checkLogin = function() { - return getCookie('user') != null; - }; - - var doLogout = function() { - delCookie('user'); - location.reload(); - }; - - var getBlogList = function(url, callback) { - return ajax(uri.blog_list, callback, { - url : url - }); - }; - - var getBlogType = function(){ - $.getJSON('http://www.moveblog.com:8080/action/syscatalog',function(data){ - var options=""; - $.each(data.blog_sys_catalog_list,function(optionindex,option){ - options = options+ ""; - }); - return options; - },false); - return Options; - }; - - var detectBlogType = function(url) { - var blog_types = [ 'csdn', 'cnblogs', '51cto', 'iteye' ]; - return $.map(blog_types, function(type) { - return url.indexOf(type) > -1 ? type : ''; - }).join(''); - }; - - var generateBlogList = function(arr) { - var ul = $('
      '); - for ( var i = 0; i < arr.length; i++) { - var blog = arr[i]; - var li = blog_tpl.replace(/\{link\}/ig, blog.link).replace( - /\{id\}/ig, i).replace(/\{title\}/ig, blog.title); - ul.append(li); - } - return ul; - }; - - var importBlog = function(arr, len, before, callback) { - var length = arr.length; - if (length == 0) - return; - var obj = arr.shift(); - var url = obj.url; - before && before(url, len - length); - return ajax(uri.import_list, function(data) { - callback && callback(data, url, len - length); - importBlog(arr, len, before, callback); - }, { - link : url, - user_catalog:obj.user_catalog, - sys_catalog:obj.sys_catalog, - reprint:obj.reprint, - priva:obj.priva - }); - }; - - api.ajax = ajax; - api.cookie = getCookie; - api.rcookie = delCookie; - - api.user = getUserInfo; - api.login = doLogin; - api.logout = doLogout; - api.logined = checkLogin; - api.blog_select_type = getBlogType; - api.blog_list = getBlogList; - api.blog_type = detectBlogType; - api.blog_list_tpl = generateBlogList; - api.importBlog = importBlog; - api.on_error = ajaxErrorHandler; - - return api; - -})(Conf, jQuery); - -$(function() { - - var $user_info = $('.user-info'), - $blog_provider = $('.blog-providers'), - $input_url = $('input[name="url"]'), - //$blog_list_loading=$('.blog-list-loading'), - $blog_list = $('.blog-list'); - $submit = $('#submit'), - $cancel = $('#cancel'), - $importBlog = $('#importBlog'), - $choose_all = $('.choose-all'), - $selete_all = $('.selete-all'), - $reprint = $('#reprint'), - $img_without_wp = $('.blog-providers ul li').not(".wordpress").find('img'); - $wp_image = $('.blog-providers ul li.wordpress img'), - $upload_form = $('.search-control form'), - $input_file = $('input[name="file"]'), - - $all_sys = $('#all_sys_catalog'), - $all_user = $('#all_user_catalog'); - - - - // 查询 login user 信息 - Api.user(function(user) { - if (!user) { - Api.rcookie('user'); - return; - } - var login = $user_info.find('a.login'); - var logout = $user_info.find('a.logout'); - var tmplogin = $user_info.find('span.login'); - tmplogin.hide(); - login.attr('href', user.url + '/blog').attr('target', '_blank').text( - user.name + '的博客'); - logout.show().removeAttr('disabled'); - $input_url.removeAttr('disabled'); - $input_url.focus(); - }); - - // 识别博客归属 - $input_url.on('keyup change', function() { - var self = $(this); - var url = self.val(); - var type = Api.blog_type(url); - var img = $blog_provider.find('li img'); - img.addClass('gray'); - if (type && type.length > 0) { - var cur_provider = $blog_provider.find('li.' + type); - var cur_img = cur_provider.find('img'); - cur_img.removeClass('gray'); - } - }); - - // 图片按钮点选事件 - $img_without_wp.on('click', function() { - $input_file.hide().attr('disabled', 'disabled'); - $input_url.show().removeAttr('disabled'); - if (!($wp_image.is('.gray'))) { - $wp_image.addClass('gray'); - } - }); - // // 选择导入wordpress存档文件 - $wp_image.on('click', function() { - var self = $(this); - if (self.is('.gray')) { - $input_file.show().removeAttr('disabled'); - $input_url.hide().attr('disabled', 'disabled'); - $img_without_wp.each(function() { - if (!($(this).is('gray'))) { - $(this).addClass('gray'); - } - }); - } else { - $input_file.hide().attr('disabled', 'disabled'); - $input_url.show().removeAttr('disabled'); - } - self.toggleClass('gray'); - }); - // 爬取博客列表 - $submit.on('click', function() { - if (!Api.logined()) { - if (confirm('OSChina未授权,需刷新页面,并重新登录!')) { - location.reload(); - } - return; - } - var is_upload = !$input_file.attr('disabled') - && $input_file.val().length > 0; - if (is_upload) { - $upload_form.submit(); - return; - } - var url = $input_url.val(); - if (url.length == 0) - return; - $blog_list.html(''); - //$blog_list_loading.show().removeAttr('disabled'); - $blog_list.addClass('loading'); - Api.blog_list(url, function(list) { - //$blog_list_loading.hide(); - //$blog_list_loading.removeClass('loading'); - $blog_list.removeClass('loading'); - $input_url.attr('disabled', 'disabled'); - $submit.hide().attr('disabled', 'disabled'); - $cancel.show().removeAttr('disabled'); - $reprint.show().removeAttr('disabled'); - $importBlog.show().removeAttr('disabled'); - $choose_all.show().removeAttr('disabled'); - if (list != null) { - $blog_list.html(Api.blog_list_tpl(list)); - $.getJSON('http://www.moveblog.com:8080/action/syscatalog',function(data){ - var options=""; - var user_options=""; - $.each(data.blog_sys_catalog_list,function(optionindex,option){ - options=""; - $('.select_box').append(options); - }); - $.each(data.blog_user_catalog_list,function(optionindex,user_option){ - user_options=""; - $('.person_select_box').append(user_options); - }); - - }); - } - }); - }); - - // 取消爬取的博客列表 - $cancel.on('click', function() { - var is_upload = !$input_file.attr('disabled') - && $input_file.val().length > 0; - if (is_upload) { - location.reload(); - return; - } - $blog_list.removeClass('loading'); - //$blog_list_loading.hide().attr('disabled', 'disabled'); - //$blog_list_loading.removeClass('loading'); - $(this).hide().attr('disabled', 'disabled'); - $submit.show().removeAttr('disabled'); - $importBlog.hide().attr('disabled', 'disabled'); - $choose_all.hide().attr('disabled', 'disabled'); - $reprint.hide().attr('disabled', 'disabled'); - $blog_list.html(''); - $input_url.removeAttr('disabled'); - $input_file.removeAttr('disabled'); - $input_url.focus(); - }); - - // 开始导入所选博客 - $importBlog.on('click', function() { - var import_tasks = $('.blog-list input[type="checkbox"]:checked'); - if (import_tasks.length == 0) { - alert('先选定一篇博客吧!'); - return; - } - var urls = import_tasks.map(function() { - //return $(this).data('url'); - //这里返回每个列表的所有信息 - var obj={ - 'url':'', - 'user_catalog':'', - 'sys_catalog':'', - 'reprint':'', - 'priva':'' - }; - obj.url = $(this).data('url'); - obj.user_catalog = $(this).parent().next().children(".person_select_box").val(); - obj.sys_catalog = $(this).parent().next().children(".select_box").val(); - obj.reprint = $('.reprint').val(); - obj.priva = $('.private').val(); - return obj; - }).toArray(); - Api.importBlog(urls, urls.length, function(url, index) { - var input = import_tasks.eq(index); - var li = input.parents('li'); - li.attr('class', 'loading'); - }, function(data, url, index) { - var input = import_tasks.eq(index); - var li = input.parents('li'); - if (data.error && data.code == 0) { - alert(data.error); - li.removeAttr('class'); - } else { - li.attr('class', 'imported'); - input.remove(); - } - }); - }); - - // 点击博客列表选定或取消,按住ctrl点击查看对应博客 - $blog_list.on('click', 'a', function(event) { - if (!event.ctrlKey) { - var self = $(this); - var input = self.parent().siblings('input'); - if (input.is(':checked')) { - input.removeAttr('checked'); - } else { - input.attr('checked', true); - } - event.preventDefault(); - return false; - } - }); - - // 全选或取消全选 - $selete_all.on('click', function() { - var inputs = $blog_list.find('input[type="checkbox"]'); - var checked = $blog_list.find('input[type="checkbox"]:checked'); - if (inputs.length == checked.length && inputs.length != 0) { - inputs.removeAttr('checked'); - } else if (inputs.length != 0) { - inputs.attr('checked', true); - } - }); - - $upload_form.ajaxForm({ - dataType : 'json', - beforeSubmit : function() { - $blog_list.html(''); - $blog_list.addClass('loading'); - //$blog_list_loading.show().removeAttr('disabled'); - }, - success : function(data) { - Api.on_error(data, function(list) { - //$blog_list_loading.hide(); - $blog_list.removeClass('loading'); - $submit.hide().attr('disabled', 'disabled'); - $cancel.show().removeAttr('disabled'); - $importBlog.show().removeAttr('disabled'); - $choose_all.show().removeAttr('disabled'); - if (list != null) { - $blog_list.html(Api.blog_list_tpl(list)); - $.getJSON('http://www.moveblog.com:8080/action/syscatalog',function(data){ - var options=""; - var user_options=""; - $.each(data.blog_sys_catalog_list,function(optionindex,option){ - options=""; - $('.select_box').append(options); - }); - $.each(data.blog_user_catalog_list,function(optionindex,user_option){ - user_options=""; - $('.person_select_box').append(user_options); - }); - }); - - } - }, function(data) { - alert(data.error); - $blog_list.removeClass('loading'); - }); - }, - error : function(xhr) { - Api.on_error(xhr); - } - }); - - - $all_sys.on('change',function(){ - var num = $all_sys.val(); - $('.select_box').each(function(){ - $(this).val(num); - }); - - }); - - - $all_user.on('change',function(){ - var num = $all_user.val(); - $('.person_select_box').each(function(){ - $(this).val(num); - }); - - }); +/*var Conf = { + 'host':'http://www.oschina.net', + 'auth_uri':'/action/oauth2/authorize', + 'response_type':'code', + 'client_id':'c39L0n9Am23s5wTW10dC', + 'redirect_uri':'http://move.pengbo.us/Oauth2Action' +}; + */ + +/*var Conf = { + 'host':'http://www.oschina.com', + 'auth_uri':'/action/oauth2/authorize', + 'response_type':'code', + 'client_id':'yKqX3IQWBvft0W8JXz0k', + 'redirect_uri':'http://www.moveblog.com:8080/Oauth2Action' + }; + */ + +var Conf = { + 'host' : 'http://www.oschina.com:8090', + 'auth_uri' : '/action/oauth2/authorize', + 'response_type' : 'code', + 'client_id' : '2rbeJBgeNRvg0gqZJIci', + 'redirect_uri' : 'http://www.moveblog.com:8080/Oauth2Action' +}; + +var Api = (function(conf, $) { + + var api = {}; + + var uri = { + 'user' : '/action/user', + 'login' : conf.auth_uri + '?response_type=' + conf.response_type + + '&client_id=' + conf.client_id + '&redirect_uri=' + + encodeURIComponent(conf.redirect_uri), + 'blog_list' : '/action/spider', + 'blog_type' : '/action/syscatalog', + 'import_list' : '/action/moveblog' + }; + var blog_tpl = [ + '
    • ', + '', + '', + '', + '', + + '', + '', + '', + '', + '', + '', + '
    • '].join('\n'); + + var getCookie = function(name, value) { + var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); + if (arr = document.cookie.match(reg)) + return unescape(arr[2]); + else + return null; + }; + + var delCookie = function(name) { + var exp = new Date(); + exp.setTime(exp.getTime() - 1); + var cval = getCookie(name); + if (cval != null) + document.cookie = name + "=" + cval + ";expires=" + + exp.toGMTString(); + }; + + var ajax = function(url, callback, data, async) { + return $.ajax({ + url : url, + type : 'POST', + dataType : 'json', + async : typeof async === 'undefined' ? true : async, + data : data, + success : function(response) { + if (response == null) + return; + ajaxErrorHandler(response, callback); + }, + error : callback + }).responseText; + }; + + var ajaxErrorHandler = function(response, callback, onError) { + var data = typeof response === "object" ? response : eval('(' + + response + ')'); + + if (data == null) { + location.reload(); + return; + } + + if (data.status == 500) { + alert('500 服务器内部错误'); + location.reload(); + return; + } + if (data.error) { + if (onError) { + return onError(data); + } + if (data.code == 0) { + alert(data.error); + return; + } else if (data.code == 1) { + delCookie('user'); + location.reload(); + return; + } + } + callback && callback(data); + }; + + var getUserInfo = function(callback) { + + var user_id = getCookie('user'); + return ajax(uri.user, callback, { + user_id : user_id + }); + }; + + var doLogin = function() { + location.href = conf.host + uri.login; + }; + + var checkLogin = function() { + return getCookie('user') != null; + }; + + var doLogout = function() { + delCookie('user'); + location.reload(); + }; + + var getBlogList = function(url, callback) { + return ajax(uri.blog_list, callback, { + url : url + }); + }; + + var getBlogType = function(){ + $.getJSON('http://www.moveblog.com:8080/action/syscatalog',function(data){ + var options=""; + $.each(data.blog_sys_catalog_list,function(optionindex,option){ + options = options+ ""; + }); + return options; + },false); + return Options; + }; + + var detectBlogType = function(url) { + var blog_types = [ 'csdn', 'cnblogs', '51cto', 'iteye' ]; + return $.map(blog_types, function(type) { + return url.indexOf(type) > -1 ? type : ''; + }).join(''); + }; + + var generateBlogList = function(arr) { + var ul = $('
        '); + for ( var i = 0; i < arr.length; i++) { + var blog = arr[i]; + var li = blog_tpl.replace(/\{link\}/ig, blog.link).replace( + /\{id\}/ig, i).replace(/\{title\}/ig, blog.title); + ul.append(li); + } + return ul; + }; + + var importBlog = function(arr, len, before, callback) { + var length = arr.length; + if (length == 0) + return; + var obj = arr.shift(); + var url = obj.url; + before && before(url, len - length); + return ajax(uri.import_list, function(data) { + callback && callback(data, url, len - length); + importBlog(arr, len, before, callback); + }, { + link : url, + user_catalog:obj.user_catalog, + sys_catalog:obj.sys_catalog, + reprint:obj.reprint, + priva:obj.priva + }); + }; + + api.ajax = ajax; + api.cookie = getCookie; + api.rcookie = delCookie; + + api.user = getUserInfo; + api.login = doLogin; + api.logout = doLogout; + api.logined = checkLogin; + api.blog_select_type = getBlogType; + api.blog_list = getBlogList; + api.blog_type = detectBlogType; + api.blog_list_tpl = generateBlogList; + api.importBlog = importBlog; + api.on_error = ajaxErrorHandler; + + return api; + +})(Conf, jQuery); + +$(function() { + + var $user_info = $('.user-info'), + $blog_provider = $('.blog-providers'), + $input_url = $('input[name="url"]'), + //$blog_list_loading=$('.blog-list-loading'), + $blog_list = $('.blog-list'); + $submit = $('#submit'), + $cancel = $('#cancel'), + $importBlog = $('#importBlog'), + $choose_all = $('.choose-all'), + $selete_all = $('.selete-all'), + $reprint = $('#reprint'), + $img_without_wp = $('.blog-providers ul li').not(".wordpress").find('img'); + $wp_image = $('.blog-providers ul li.wordpress img'), + $upload_form = $('.search-control form'), + $input_file = $('input[name="file"]'), + + $all_sys = $('#all_sys_catalog'), + $all_user = $('#all_user_catalog'); + + + + // 查询 login user 信息 + Api.user(function(user) { + if (!user) { + Api.rcookie('user'); + return; + } + var login = $user_info.find('a.login'); + var logout = $user_info.find('a.logout'); + var tmplogin = $user_info.find('span.login'); + tmplogin.hide(); + login.attr('href', user.url + '/blog').attr('target', '_blank').text( + user.name + '的博客'); + logout.show().removeAttr('disabled'); + $input_url.removeAttr('disabled'); + $input_url.focus(); + }); + + // 识别博客归属 + $input_url.on('keyup change', function() { + var self = $(this); + var url = self.val(); + var type = Api.blog_type(url); + var img = $blog_provider.find('li img'); + img.addClass('gray'); + if (type && type.length > 0) { + var cur_provider = $blog_provider.find('li.' + type); + var cur_img = cur_provider.find('img'); + cur_img.removeClass('gray'); + } + }); + + // 图片按钮点选事件 + $img_without_wp.on('click', function() { + $input_file.hide().attr('disabled', 'disabled'); + $input_url.show().removeAttr('disabled'); + if (!($wp_image.is('.gray'))) { + $wp_image.addClass('gray'); + } + }); + // // 选择导入wordpress存档文件 + $wp_image.on('click', function() { + var self = $(this); + if (self.is('.gray')) { + $input_file.show().removeAttr('disabled'); + $input_url.hide().attr('disabled', 'disabled'); + $img_without_wp.each(function() { + if (!($(this).is('gray'))) { + $(this).addClass('gray'); + } + }); + } else { + $input_file.hide().attr('disabled', 'disabled'); + $input_url.show().removeAttr('disabled'); + } + self.toggleClass('gray'); + }); + // 爬取博客列表 + $submit.on('click', function() { + if (!Api.logined()) { + if (confirm('OSChina未授权,需刷新页面,并重新登录!')) { + location.reload(); + } + return; + } + var is_upload = !$input_file.attr('disabled') + && $input_file.val().length > 0; + if (is_upload) { + $upload_form.submit(); + return; + } + var url = $input_url.val(); + if (url.length == 0) + return; + $blog_list.html(''); + //$blog_list_loading.show().removeAttr('disabled'); + $blog_list.addClass('loading'); + Api.blog_list(url, function(list) { + //$blog_list_loading.hide(); + //$blog_list_loading.removeClass('loading'); + $blog_list.removeClass('loading'); + $input_url.attr('disabled', 'disabled'); + $submit.hide().attr('disabled', 'disabled'); + $cancel.show().removeAttr('disabled'); + $reprint.show().removeAttr('disabled'); + $importBlog.show().removeAttr('disabled'); + $choose_all.show().removeAttr('disabled'); + if (list != null) { + $blog_list.html(Api.blog_list_tpl(list)); + $.getJSON('http://www.moveblog.com:8080/action/syscatalog',function(data){ + var options=""; + var user_options=""; + $.each(data.blog_sys_catalog_list,function(optionindex,option){ + options=""; + $('.select_box').append(options); + }); + $.each(data.blog_user_catalog_list,function(optionindex,user_option){ + user_options=""; + $('.person_select_box').append(user_options); + }); + + }); + } + }); + }); + + // 取消爬取的博客列表 + $cancel.on('click', function() { + var is_upload = !$input_file.attr('disabled') + && $input_file.val().length > 0; + if (is_upload) { + location.reload(); + return; + } + $blog_list.removeClass('loading'); + //$blog_list_loading.hide().attr('disabled', 'disabled'); + //$blog_list_loading.removeClass('loading'); + $(this).hide().attr('disabled', 'disabled'); + $submit.show().removeAttr('disabled'); + $importBlog.hide().attr('disabled', 'disabled'); + $choose_all.hide().attr('disabled', 'disabled'); + $reprint.hide().attr('disabled', 'disabled'); + $blog_list.html(''); + $input_url.removeAttr('disabled'); + $input_file.removeAttr('disabled'); + $input_url.focus(); + }); + + // 开始导入所选博客 + $importBlog.on('click', function() { + var import_tasks = $('.blog-list input[type="checkbox"]:checked'); + if (import_tasks.length == 0) { + alert('先选定一篇博客吧!'); + return; + } + var urls = import_tasks.map(function() { + //return $(this).data('url'); + //这里返回每个列表的所有信息 + var obj={ + 'url':'', + 'user_catalog':'', + 'sys_catalog':'', + 'reprint':'', + 'priva':'' + }; + obj.url = $(this).data('url'); + obj.user_catalog = $(this).parent().next().children(".person_select_box").val(); + obj.sys_catalog = $(this).parent().next().children(".select_box").val(); + obj.reprint = $('.reprint').val(); + obj.priva = $('.private').val(); + return obj; + }).toArray(); + Api.importBlog(urls, urls.length, function(url, index) { + var input = import_tasks.eq(index); + var li = input.parents('li'); + li.attr('class', 'loading'); + }, function(data, url, index) { + var input = import_tasks.eq(index); + var li = input.parents('li'); + if (data.error && data.code == 0) { + alert(data.error); + li.removeAttr('class'); + } else { + li.attr('class', 'imported'); + input.remove(); + } + }); + }); + + // 点击博客列表选定或取消,按住ctrl点击查看对应博客 + $blog_list.on('click', 'a', function(event) { + if (!event.ctrlKey) { + var self = $(this); + var input = self.parent().siblings('input'); + if (input.is(':checked')) { + input.removeAttr('checked'); + } else { + input.attr('checked', true); + } + event.preventDefault(); + return false; + } + }); + + // 全选或取消全选 + $selete_all.on('click', function() { + var inputs = $blog_list.find('input[type="checkbox"]'); + var checked = $blog_list.find('input[type="checkbox"]:checked'); + if (inputs.length == checked.length && inputs.length != 0) { + inputs.removeAttr('checked'); + } else if (inputs.length != 0) { + inputs.attr('checked', true); + } + }); + + $upload_form.ajaxForm({ + dataType : 'json', + beforeSubmit : function() { + $blog_list.html(''); + $blog_list.addClass('loading'); + //$blog_list_loading.show().removeAttr('disabled'); + }, + success : function(data) { + Api.on_error(data, function(list) { + //$blog_list_loading.hide(); + $blog_list.removeClass('loading'); + $submit.hide().attr('disabled', 'disabled'); + $cancel.show().removeAttr('disabled'); + $importBlog.show().removeAttr('disabled'); + $choose_all.show().removeAttr('disabled'); + if (list != null) { + $blog_list.html(Api.blog_list_tpl(list)); + $.getJSON('http://www.moveblog.com:8080/action/syscatalog',function(data){ + var options=""; + var user_options=""; + $.each(data.blog_sys_catalog_list,function(optionindex,option){ + options=""; + $('.select_box').append(options); + }); + $.each(data.blog_user_catalog_list,function(optionindex,user_option){ + user_options=""; + $('.person_select_box').append(user_options); + }); + }); + + } + }, function(data) { + alert(data.error); + $blog_list.removeClass('loading'); + }); + }, + error : function(xhr) { + Api.on_error(xhr); + } + }); + + + $all_sys.on('change',function(){ + var num = $all_sys.val(); + $('.select_box').each(function(){ + $(this).val(num); + }); + + }); + + + $all_user.on('change',function(){ + var num = $all_user.val(); + $('.person_select_box').each(function(){ + $(this).val(num); + }); + + }); }); \ No newline at end of file diff --git a/src/common/AppConfig.xml b/src/common/AppConfig.xml index f57d079..fe7a03d 100644 --- a/src/common/AppConfig.xml +++ b/src/common/AppConfig.xml @@ -23,12 +23,12 @@    - http://www.oschina.com + http://www.oschina.com:8090 - fEGoJwQ9pKwMFumhDiZlIYfCHsxgMqWs - BjvoHIHodS09uBtT6wIx + 1P7IsIMrGXqs6AZrcZJtjZRMjain5r5J + 2rbeJBgeNRvg0gqZJIci http://www.moveblog.com:8080/Oauth2Action diff --git a/src/common/Spider.xml b/src/common/Spider.xml index 3778721..c32d4f0 100644 --- a/src/common/Spider.xml +++ b/src/common/Spider.xml @@ -191,4 +191,43 @@ wordpress ]]> + + + + www.jianshu.com + utf-8 + jianshu.com + /p/ + + + + + + + + + + + + ]]> + ]]> + ]]> + + + + + + + csharp + c# + + + javascript + js + + + objc + cpp + + \ No newline at end of file diff --git a/src/spider/BlogPageProcessor.java b/src/spider/BlogPageProcessor.java index f72c1c8..eb783b6 100644 --- a/src/spider/BlogPageProcessor.java +++ b/src/spider/BlogPageProcessor.java @@ -44,6 +44,8 @@ public class BlogPageProcessor implements PageProcessor{ private Hashtable codeHashtable; //代码class映射关系 private SpiderConfigTool spiderConfig; + + private String domain;//当前域名 public BlogPageProcessor(String url) throws Exception{ if(url.endsWith("/")){ url = url.substring(0, url.length()-1); @@ -76,6 +78,7 @@ public class BlogPageProcessor implements PageProcessor{ private void init(){ String domain = spiderConfig.getSpiderNode().selectSingleNode("domain").getText(); site = Site.me().setDomain(domain); + this.domain = domain; String charset = spiderConfig.getSpiderNode().selectSingleNode("charset").getText(); site.setCharset(charset); site.setSleepTime(1); @@ -212,14 +215,27 @@ public class BlogPageProcessor implements PageProcessor{ page.putField("titles", titles); page.putField("links", links); - List Pagelinks = page.getHtml().links().regex(PagelinksRex.get(0)).all(); for(int i=1; i < PagelinksRex.size() && Pagelinks.size() == 0; ++i){ Pagelinks = page.getHtml().links().regex(PagelinksRex.get(i)).all(); } - page.addTargetRequests(Pagelinks); + if(this.domain.equals("www.jianshu.com")){//关于简书博客爬取的处理方式 + String total = page.getHtml().xpath("//div[@class='info']/ul/li[3]/div[@class='meta-block']/a/p/text()").toString(); + int totalArticle = Integer.valueOf(total); + int mod = totalArticle%9; + int p = totalArticle/9; + int totalPage = (mod>0)?p+1:p; + for (int i = 1; i