FeedlyTool mini Save For Later

Display "Save for Later" count. This is the edition that was limited to Save For Later feature Chrome extension of "FeedlyTool".

当前为 2016-08-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name FeedlyTool mini Save For Later
  3. // @version 0.0.2
  4. // @author kik0220
  5. // @namespace https://sites.google.com/site/feedlytool/
  6. // @description Display "Save for Later" count. This is the edition that was limited to Save For Later feature Chrome extension of "FeedlyTool".
  7. // @description:ja 「Save for Later」の件数を表示します。これはChrome拡張「FeedlyTool」のSave For Later機能に限定したものです。
  8. // @icon http://feedlytool.kk22.jp/icon.png
  9. // @match http://feedly.com/*
  10. // @match https://feedly.com/*
  11. // @exclude http://feedly.com/#welcome
  12. // @exclude https://feedly.com/#welcome
  13. // @grant GM_addStyle
  14. // @grant GM_xmlhttpRequest
  15. // @connect cloud.feedly.com
  16. // @copyright 2013+, kik0220
  17. // ==/UserScript==
  18.  
  19. var accessToken = '';
  20. var userId = '';
  21. var lastLocation = '';
  22. var currentDir = '';
  23. var customCSS = [
  24. '#feedlyTool_savedTab_count { float: right; font-size: 10px; opacity: 0.75; }',
  25. '#savedtab_label { float: left; }'
  26. ].join('');
  27.  
  28. GM_addStyle(customCSS);
  29. document.addEventListener("DOMSubtreeModified", getCookie, false);
  30. document.body.addEventListener("DOMSubtreeModified", function (e) {
  31. if (lastLocation != document.location.href) {
  32. lastLocation = document.location.href;
  33. getSaved();
  34. }
  35. }, false);
  36.  
  37. function getCookie(){
  38. if(document.location.href.indexOf('/i/welcome') > -1){return;}
  39. var all = document.cookie;
  40. if(all === null){return;}
  41. all = all.split(';');
  42. for(var i = 0; i < all.length; i++){
  43. var cookie = all[i];
  44. if(cookie.indexOf('feedly.session=') < 0){continue;}
  45. var json;
  46. try{
  47. json = JSON.parse(cookie.replace('feedly.session=', ''));
  48. accessToken = json.feedlyToken;
  49. userId = json.feedlyId;
  50. } catch(e) {return;}
  51. document.removeEventListener("DOMSubtreeModified", getCookie, false);
  52. setTimeout(getSaved(), 3000);
  53. return;
  54. }
  55. }
  56.  
  57. function getSaved(){
  58. if(!accessToken||!userId){return;}
  59. GM_xmlhttpRequest({
  60. method: 'GET',
  61. url: 'https://cloud.feedly.com/v3/markers/tags',
  62. headers: { 'Authorization': 'OAuth '+accessToken },
  63. onload: function(res) {
  64. if(res.status !== 200){return;}
  65. var response = JSON.parse(res.responseText);
  66. var count = response.taggedEntries['user/'+userId+'/tag/global.saved'].length;
  67. var target = document.getElementById('feedlyTool_savedTab_count');
  68. var targetParent = document.getElementById('savedtab');
  69. if(target){
  70. target.innerText = count;
  71. } else if(targetParent) {
  72. targetParent.innerHTML += '<div id="feedlyTool_savedTab_count">'+ count +'</div>';
  73. }
  74. }
  75. });
  76. }