Advertisement
Ladies_Man

Bliss CX

Aug 12th, 2015
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.     "manifest_version": 2,
  3.     "name": "Bliss CX",
  4.     "version": "2.2",
  5.     "description": "Rss-reader Bliss. Beta",
  6.     "browser_action": {
  7.         "default_icon": "images/icon_new.png",
  8.         "default_title": "Bliss",
  9.         "default_popup": "popup.html"
  10.     },
  11.     "icons": {
  12.         "48":   "images/icon_new_48.png",
  13.         "123":  "images/icon_new_128.png"
  14.     },
  15.     "background": {
  16.         "scripts":      ["jquery-2.1.4.js", "background.js"],
  17.         "persistent":   false
  18.     },
  19.     "content_scripts": [
  20.         {
  21.             "matches":  ["<all_urls>"],
  22.             "js":       ["jquery-2.1.4.js", "content.js"],
  23.             "run_at":   "document_idle"
  24.         }
  25.     ],
  26.     "permissions": [
  27.         "tabs",
  28.         "activeTab",
  29.         "<all_urls>",
  30.         "history",
  31.         "contextMenus",
  32.         "downloads"
  33.     ]
  34. }
  35.  
  36.  
  37.  
  38. <!DOCTYPE html>
  39.  
  40. <html>
  41.   <head>
  42.  
  43.     <title>Bliss Rss-reader</title>
  44.     <link href="style.css" rel="stylesheet">
  45.     <script src="popup.js"></script>
  46.    
  47.   </head>
  48.   <body>
  49.    
  50.     <div id="trigger">Proceed</div>
  51.    
  52.   </body>
  53. </html>
  54.  
  55.  
  56.  
  57. //popup
  58. document.addEventListener('DOMContentLoaded', function() {
  59.     document.getElementById('trigger').addEventListener("click", function() {
  60.         chrome.extension.sendMessage({
  61.                 key: "JUST_DO_IT",
  62.                 rss_from: "http://lenta.ru/rss"
  63.         }, function(response) {
  64.             if ("JUST_HAVE_DONE_IT" == response.key) {
  65.                 document.getElementsByTagName("body")[0].innerHTML += JSON.parse(response.data);
  66.                 document.getElementById('trigger').style.width = "360px";
  67.                 var i, h, blocks = document.getElementsByClassName('block');
  68.                 for (i = 0; i < blocks.length; i++) {
  69.                     blocks[i].addEventListener("click", function() {
  70.                         if ("visible" == this.getElementsByClassName('dsc')[0].style.visibility) {
  71.                             this.getElementsByClassName('dsc')[0].style.visibility = "hidden";
  72.                             this.getElementsByClassName('date')[0].style.visibility = "hidden";
  73.                             this.style.height = "162px";
  74.                         } else {
  75.                             this.getElementsByClassName('dsc')[0].style.visibility = "visible";
  76.                             this.getElementsByClassName('date')[0].style.visibility = "visible";
  77.                             this.style.height = "auto";
  78.                         }
  79.                     });
  80.                     blocks[i].getElementsByClassName("lnk")[0].addEventListener("click", function(e) {
  81.                         var full_text_url = this.href;
  82.                         chrome.tabs.query({active:true, currentWindow: true}, function(tabs){
  83.                             chrome.tabs.create({
  84.                                 active: true,
  85.                                 url: full_text_url
  86.                             }, function(tab) {});
  87.                         });
  88.                         e.stopPropagation();
  89.                     });
  90.                 }
  91.             }
  92.         });
  93.         document.getElementById('trigger').innerHTML = "Refresh";
  94.     });
  95. });
  96.  
  97.  
  98.  
  99. //background
  100. var respond_rss, respond_url;
  101.  
  102. function generate_feed(xml) {
  103.     var items = xml.getElementsByTagName("item");
  104.  
  105.     var doc = document.implementation.createHTMLDocument("New Document");
  106.     var i, el = doc.createElement('html');
  107.     el.innerHTML = "<html><head><title>Bliss</title></head><body></body></html>";
  108.    
  109.     for (i = 0; i < items.length; i++) {
  110.         var div = document.createElement("div");
  111.         div.className = "block";
  112.        
  113.         var inner_cat = document.createElement("div");
  114.         inner_cat.className = "cat";
  115.         inner_cat.innerHTML = $(items[i]).find("category").html();
  116.        
  117.         var inner_date = document.createElement("div");
  118.         inner_date.className = "date";
  119.         inner_date.innerHTML = $(items[i]).find("pubDate").html();
  120.        
  121.         var inner_img = document.createElement("img");
  122.         inner_img.className = "prev";
  123.         inner_img.src = $(items[i]).find("enclosure").attr('url');
  124.        
  125.         var inner_title = document.createElement("div");
  126.         inner_title.className = "tit";
  127.         inner_title.innerHTML = $(items[i]).find("title").html();
  128.        
  129.         var inner_descr = document.createElement("div");
  130.         inner_descr.className = "dsc";
  131.         inner_descr.innerHTML = $(items[i]).find("description").html();
  132.        
  133.         var inner_br = document.createElement("br");
  134.        
  135.         var inner_link = document.createElement("a");
  136.         inner_link.className = "lnk";
  137.         inner_link.href = $(items[i]).find("link").html();
  138.         inner_link.innerHTML = "Читать далее";
  139.        
  140.         div.appendChild(inner_cat);
  141.         div.appendChild(inner_date);
  142.         div.appendChild(inner_img);
  143.         div.appendChild(inner_title);
  144.         div.appendChild(inner_descr);
  145.         inner_descr.appendChild(inner_br);
  146.         inner_descr.appendChild(inner_link);
  147.         el.getElementsByTagName('body')[0].appendChild(div);
  148.     }
  149.    
  150.     string = JSON.stringify(el.getElementsByTagName("body")[0].innerHTML);
  151.     string = string.replace(/<!--\[CDATA\[/g, '').replace(/\]\]-->/g, '');
  152.     console.log('stringified:' + string);
  153.     return string;
  154. }
  155.  
  156. function get_rss(msg, sender, sendResponse) {
  157.     rss_url = msg.rss_from;
  158.     console.log('requseting url:' + rss_url);
  159.    
  160.     var xhr = new XMLHttpRequest();
  161.     xhr.open("GET", rss_url, true);
  162.     xhr.send(null);
  163.     xhr.onreadystatechange = function() {
  164.         if (4 == xhr.readyState) {
  165.             if (200 == xhr.status) {
  166.                 console.log(xhr.responseXML);
  167.                 var feed = generate_feed(xhr.responseXML);
  168.                 sendResponse({
  169.                     key: "JUST_HAVE_DONE_IT",
  170.                     data: feed
  171.                 });
  172.             } else {
  173.                 console.log('status:' + xhr.status);
  174.             }
  175.         } else {
  176.             console.log('readyState:' + xhr.readyState);
  177.         }
  178.     }
  179. }
  180.  
  181. chrome.extension.onMessage.addListener(
  182.     function(msg, sender, sendResponse) {
  183.         switch (msg.key) {
  184.             case "get_audio":
  185.                 process();
  186.                 break;
  187.             case "JUST_DO_IT":
  188.                 get_rss(msg, sender, sendResponse);
  189.                 return true;    //response will be sent later asynchronically
  190.         }
  191.     }
  192. );
  193.  
  194.  
  195.  
  196. //content
  197. var url = document.URL;
  198. var i, tmp, tmp1, tmp2, tmp3, tmp4;
  199.  
  200. if (-1 != url.indexOf("vk.com/audio")) {
  201.     var songs_block = document.getElementById("initial_list");
  202.     var songs = document.getElementsByClassName("audio  fl_l");
  203.     var d_btn = '<div class="d_btn" style="display: block; height: 16px; width: 16px; margin-left: 20px; z-index: 1000000;"></div>';
  204.     var d_link = '<a class="d_link" href="" title="Download">DL</a>';
  205.     var real_btn = '<button class="real" style="width: 16px; height: 16px; margin-left: 20px; z-index: 1000000000;">D</button>';
  206.    
  207.     for (i = 0; i < songs.length; i++) {
  208.         //add download button
  209.         var button_block = songs[i].getElementsByClassName("play_new")[0];
  210.         button_block.innerHTML += d_btn;
  211.         //button_block.innerHTML += real_btn;
  212.        
  213.         //modify song_name's block
  214.         var name_block = songs[i].getElementsByClassName("info fl_l")[0];
  215.         name_block.style.width = "320px";
  216.         name_block.style.height = "33px";
  217.         name_block.style.marginLeft = "20px";
  218.        
  219.         //modify download button
  220.         var d_b = songs[i].getElementsByClassName("d_btn")[0];
  221.         d_b.style.cursor = "default";
  222.         d_b.style.backgroundColor = "white";
  223.         d_b.style.borderRadius = "3px";
  224.         d_b.style.border = "1px solid red";
  225.        
  226.         //add content link
  227.         d_b.innerHTML += d_link;
  228.        
  229.         //modify href
  230.         d_l = songs[i].getElementsByTagName("input")[0].value;
  231.         d_b.getElementsByClassName("d_link")[0].href = d_l;
  232.        
  233.         d_b.getElementsByClassName("d_link")[0].addEventListener("click", function(e) {
  234.             alert(d_b.getElementsByClassName("d_link")[0].href);
  235.             e.stopPropagation();
  236.            
  237.         })
  238.         //copy song initials to clipboard
  239.     }
  240.    
  241. }
  242.  
  243.  
  244. //style
  245. body {
  246.     background-color: #808080;
  247.     list-style-type: none;
  248.     -webkit-user-select: none;
  249. }
  250.  
  251. a {
  252.     text-decoration: none;
  253.     color: red;
  254. }
  255.  
  256. a:hover {
  257.     color: #D0D0D0;
  258. }
  259.  
  260. #trigger {
  261.     display: block;
  262.     cursor: pointer;
  263.     width: auto;
  264.     text-align: center;
  265.     margin-left: auto;
  266.     margin-right: auto;
  267.     background-color: #D0D0D0;
  268.     border: 1px solid black;
  269.     border-radius: 2px;
  270. }
  271.  
  272. #trigger:hover {
  273.     background-color: #F0F0F0;
  274. }
  275.  
  276. .block {
  277.     display: block;
  278.     cursor: default;
  279.     height: 162px;
  280.     width: 360px;
  281.     margin: 5px;
  282.     background-color: #D0D0D0;
  283.     border: 1px solid black;
  284. }
  285.  
  286. .cat {
  287.     display: inherit;
  288.     float: left;
  289.     cursor: inherit;
  290.     text-indent: 5px;
  291. }
  292.  
  293. .date {
  294.     display:block;
  295.     float: right;
  296.     visibility: hidden;
  297.     margin-right: 5px;
  298.     text-align: right;
  299. }
  300.  
  301. .prev  {
  302.     display: inherit;
  303.     cursor: inherit;
  304.     width: 160px;
  305.     margin-left: auto;
  306.     margin-right: auto;
  307. }
  308.  
  309. .tit {
  310.     display: inherit;
  311.     cursor: inherit;
  312.     height: auto;
  313.     text-align: center;
  314.     padding: 5px;
  315. }
  316.  
  317. .dsc {
  318.     display: inherit;
  319.     cursor: inherit;
  320.     visibility: hidden;
  321.     text-align: justify;
  322.     margin: 5px;
  323.     padding: 5px;
  324.     background-color: #F0F0F0;
  325. }
  326.  
  327. .lnk {
  328.     visibility: inherit;
  329. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement