Ground.news

Unbiased news access should be free and unlimited

  1. // ==UserScript==
  2. // @name Ground.news
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1.3
  5. // @description Unbiased news access should be free and unlimited
  6. // @author blank
  7. // @match https://ground.news/*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11. const delay = ms => new Promise(res => setTimeout(res, ms));
  12. async function free(){
  13. //console.log("running");
  14. await delay(5000);//reduce unlock time
  15. localStorage.articlesAccessed =[[]];
  16. try{
  17. document.querySelector('[class*="hideElementSiteWide flex sticky h-6 tablet:h-auto items-center top-0 z-1000 bg-focus text-dark-primary"]').style.display='none';
  18. document.querySelector('[class*="fixed z-[1000] left-0 right-0 dark:bg-dark-heavy bg-tertiary-light"]').setAttribute("class","hidden");
  19. }catch{}
  20. try{
  21. document.querySelector('[class*="fixed z-[1000] left-0 right-0 dark:bg-dark-heavy bg-tertiary-light"]').setAttribute("class","hidden");
  22. document.querySelector('[class*="mdd:hidden z-1000 top-0 sticky"]').style.display='none';
  23. alert("An error ocurred, if you are unable to access premium functionalities, refresh the page");
  24. }catch{}
  25. try{
  26. if(document.URL.match("ground.news/article").length==1){
  27. //console.log("article");
  28. let probJson=""
  29. let jsonStr=document.getElementsByTagName("script");
  30. let f=0;
  31. for(let x=0;x<jsonStr.length;x++){
  32. if(jsonStr[x].innerHTML.length>probJson.length){
  33. probJson=jsonStr[x].innerText;
  34. f=x;
  35. }
  36. }
  37. jsonStr=probJson.match("\\\"factuality.*corporation\\\":[0-9]*}");
  38. if(jsonStr==null){
  39. jsonStr=probJson.match("\\\\\"factuality.*corporation\\\\\":[0-9]*}")
  40. }
  41. jsonStr=jsonStr[0].replaceAll("\\","");
  42. jsonStr=JSON.parse(`{${jsonStr}}`);
  43. const [factualityDiv,ownershipDiv]=[document.querySelectorAll("[class*=\"flex w-full items-center justify-between\"]"),document.querySelectorAll("[class*=\"bg-light-light p-8px tablet:p-1_6 flex flex-col gap-1_2 w-full h-full text-12 dark:text-dark-gray-100 leading-tightest dark:bg-dark-light cursor-pointer\"]")];
  44. let [ownershipPercentage,ownershipNames,ownershipItems,ownerFinalColor,ownershipDisplayNames,ownershipPickPercentage]=[[],[],0,[0,""],[],0];
  45. let [prettyName,aname]=["",""];
  46. for(let key in jsonStr.ownership){
  47. ownershipPercentage.push(jsonStr.ownership[key]);
  48. if(key=="billionaire"){
  49. ownershipNames.push("wealthyPrivateOwner");
  50. }else{ownershipNames.push(key);}
  51. if(key=="billionaire"){
  52. aname="Wealthy Private Owner";
  53. ownershipDisplayNames.push("Wealthy Private Owner");
  54. }else if(key=="telecom"){
  55. aname="Telecommunications";
  56. ownershipDisplayNames.push("Telecommunications");
  57. }else if(key=="privateEquity"){
  58. aname="Private equity";
  59. ownershipDisplayNames.push("Private equity");
  60. }else if(key=="mediaConglomerate"){
  61. aname="Media Conglomerate";
  62. ownershipDisplayNames.push("Media Conglomerate");
  63. }else if(key=="government"){
  64. aname="Government";
  65. ownershipDisplayNames.push("Government");
  66. }else if(key=="independent"){
  67. aname="Independent news";
  68. ownershipDisplayNames.push("Independent news");
  69. }else if(key=="corporation"){
  70. aname="Corporation";
  71. ownershipDisplayNames.push("Corporation");
  72. }else{
  73. aname="Other";
  74. ownershipDisplayNames.push("Other");
  75. }
  76. if(jsonStr.ownership[key]>ownerFinalColor[0]){
  77. ownershipPickPercentage=jsonStr.ownership[key];
  78. ownerFinalColor[1]=key;
  79. ownerFinalColor[0]=jsonStr.ownership[key];
  80. prettyName=aname;
  81. }
  82. ownershipItems+=jsonStr.ownership[key];
  83. }
  84. for(let x=0;x<ownershipPercentage.length;x++){
  85. ownershipPercentage[x]=(ownershipPercentage[x]/ownershipItems)*100;
  86. }
  87. ownershipPickPercentage=(ownershipPickPercentage/ownershipItems)*100;
  88. const removeBuyPremium= document.querySelectorAll('p:has(span.underline)');
  89. for(let x=0;x<removeBuyPremium.length;x++){
  90. removeBuyPremium[x].style.display='none';
  91. }
  92. try{
  93. factualityDiv[0]._tippy.reference.childNodes[1].style.display='none';
  94. }catch{}
  95. try{
  96. factualityDiv[0]._tippy.reference.childNodes[0].className='flex text-14 tablet:text-18 items-center';
  97. }catch{}
  98. try{
  99. ownershipDiv[0].children[0].childNodes[0].className="relative flex items-center";
  100. }catch{}
  101. try{
  102. ownershipDiv[0].children[0].childNodes[1].style.display="none";
  103. }catch{}
  104. try{
  105. if(ownerFinalColor[1]=="billionaire"){
  106. ownershipDiv[0].children[2].className=`bg-mediaopoly-wealthyPrivateOwner text-center h-2_4`;
  107. }
  108. else{
  109. ownershipDiv[0].children[2].className=`bg-mediaopoly-${ownerFinalColor[1]} text-center h-2_4`;
  110. }
  111.  
  112. }catch{}
  113. let message = document.createElement("div");
  114. let tippyIndx=100;
  115. message.innerHTML=`<div data-tippy-root="" id="tippy-${tippyIndx}" style="pointer-events: none; z-index: 9999; position: relative; inset: 0px auto auto 0px; margin: 0px; display: none; width: 100rem;"><div class="tippy-box justify-end flex dark:bg-light-primary dark:text-dark-primary p-1_2 text-16 tablet:text-12 tippy_arrow__uqz_Z" data-state="visible" tabindex="-1" data-animation="fade" style="max-width: 350px; transition-duration: 300ms;" role="tooltip" data-placement="bottom"><div class="tippy-content" data-state="visible" style="transition-duration: 300ms;"><div><span>${prettyName}, ${ownershipPickPercentage.toFixed()}%</span></div></div><div class="tippy-arrow" style="position: absolute; left: 0px; transform: translate3d(50px, 0px, 0px);"></div></div></div>`;
  116. ownershipDiv[0].insertBefore(message,ownershipDiv[0].children[3]);
  117. document.querySelectorAll("[class*=\"bg-light-light p-8px tablet:p-1_6 flex flex-col gap-1_2 w-full h-full text-12 dark:text-dark-gray-100 leading-tightest dark:bg-dark-light cursor-pointer\"]")[0].children[2].onmouseenter=()=>{document.getElementById(`tippy-100`).style.display='block'};
  118. document.querySelectorAll("[class*=\"bg-light-light p-8px tablet:p-1_6 flex flex-col gap-1_2 w-full h-full text-12 dark:text-dark-gray-100 leading-tightest dark:bg-dark-light cursor-pointer\"]")[0].children[2].onmouseleave=()=>{document.getElementById(`tippy-100`).style.display='none'};
  119. try{
  120. ownershipDiv[0].children[4].className="";
  121. }catch{}
  122. tippyIndx++;
  123. ownershipDiv[0].children[4].children[0].innerHTML='';
  124. for(let add=0;add<ownershipNames.length;add++){
  125. ownershipDiv[0].children[4].children[0].innerHTML+=`<div class=" bg-mediaopoly-${ownershipNames[add]} text-center py-4px" style="width:${ownershipPercentage[add]}%" onmouseenter="document.getElementById('tippy-${tippyIndx}').style.display='block';" onmouseleave="document.getElementById('tippy-${tippyIndx}').style.display='none';"></div>`;
  126. ownershipDiv[0].children[4].innerHTML+=`<div data-tippy-root="" id="tippy-${tippyIndx}" style="pointer-events: none; z-index: 9999; position: relative; inset: 0px auto auto 0px; margin-top: 0.5rem; display: none; width: 100rem;"><div class="tippy-box justify-end flex dark:bg-light-primary dark:text-dark-primary p-1_2 text-16 tablet:text-12 tippy_arrow__uqz_Z" data-state="visible" tabindex="-1" data-animation="fade" style="max-width: 350px; transition-duration: 300ms;" role="tooltip" data-placement="bottom"><div class="tippy-content" data-state="visible" style="transition-duration: 300ms;"><div><span>${ownershipDisplayNames[add]}, ${ownershipPercentage[add].toFixed()}%</span></div></div><div class="tippy-arrow" style="position: absolute; left: 0px; transform: translate3d(50px, 0px, 0px);"></div></div></div>`;
  127. tippyIndx++;
  128. }
  129. //Do Facuality
  130. factualityDiv[0].children[0].className="flex text-14 tablet:text-18 items-center";
  131. factualityDiv[0].children[1].style.display="none";
  132. let [factuality,factualityItems,finalColor]=[0,0,[0,""]];
  133. let [facPrettyName,facAname,facNames,facPrettyNames,facPercentage,facFinalPercentage]=["","",[],[],[],0];
  134. for(let key in jsonStr.factuality){
  135. factualityItems+=jsonStr.factuality[key];
  136. facPercentage.push(jsonStr.factuality[key]);
  137. if(key=='veryLow'){
  138. facAname="Very low";
  139. factuality-=2*jsonStr.factuality[key];
  140. }else if(key=='low'){
  141. facAname="Low";
  142. factuality-=1*jsonStr.factuality[key];
  143. }else if(key=='high'){
  144. facAname="High";
  145. factuality+=1*jsonStr.factuality[key];
  146. }else if(key=="veryHigh"){
  147. facAname="Very high";
  148. factuality+=2*jsonStr.factuality[key];
  149. }else if(key=="mixed"){
  150. facAname="Mixed";
  151. }else if(key=="unknown"){
  152. facAname="Unknown";
  153. }
  154. facNames.push(key);
  155. facPrettyNames.push(facAname);
  156. if(jsonStr.factuality[key]>finalColor[0]){
  157. finalColor[1]=key;
  158. finalColor[0]=jsonStr.factuality[key];
  159. facPrettyName=facAname;
  160. facFinalPercentage=jsonStr.factuality[key];
  161. }
  162. }
  163. if(facPrettyName=="Unknown"){
  164. finalColor[1]="unkown bg-white";
  165. }
  166. try{
  167. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[0].className=`bg-factuality-${finalColor[1]} text-center h-2_4`;
  168. }catch{}
  169. try{
  170. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[1].className="";
  171. }catch{}
  172. for(let x=0;x<facPercentage.length;x++){
  173. facPercentage[x]=(facPercentage[x]/factualityItems)*100;
  174. }
  175. facFinalPercentage=(facFinalPercentage/factualityItems)*100;
  176. try{
  177. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[1].children[0].innerHTML="";
  178. }catch{}
  179. //<div class="bg-factuality-low text-center py-4px" style="width:40%"></div>
  180. for(let x=0;x<facNames.length;x++){
  181. if(facNames[x]!="unknown"){
  182. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[1].children[0].innerHTML+=`<div class="bg-factuality-${facNames[x]} text-center py-4px" style="width:${facPercentage[x]}%" onmouseenter="document.getElementById('tippy-${tippyIndx}').style.display='block';" onmouseleave="document.getElementById('tippy-${tippyIndx}').style.display='none';"></div>`;
  183. }else{
  184. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[1].children[0].innerHTML+=`<div class="bg-white text-center py-4px" style="width:${facPercentage[x]}%" onmouseenter="document.getElementById('tippy-${tippyIndx}').style.display='block';" onmouseleave="document.getElementById('tippy-${tippyIndx}').style.display='none';"></div>`;
  185. }
  186. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[1].innerHTML+=`<div data-tippy-root="" id="tippy-${tippyIndx}" style="pointer-events: none; z-index: 9999; position: relative; inset: 0px auto auto 0px; margin-top: 0.5rem; display: none; width: 100rem;"><div class="tippy-box justify-end flex dark:bg-light-primary dark:text-dark-primary p-1_2 text-16 tablet:text-12 tippy_arrow__uqz_Z" data-state="visible" tabindex="-1" data-animation="fade" style="max-width: 350px; transition-duration: 300ms;" role="tooltip" data-placement="bottom"><div class="tippy-content" data-state="visible" style="transition-duration: 300ms;"><div><span>${facPrettyNames[x]}, ${facPercentage[x].toFixed()}%</span></div></div><div class="tippy-arrow" style="position: absolute; left: 0px; transform: translate3d(50px, 0px, 0px);"></div></div></div>`;
  187. tippyIndx++;
  188. }
  189. let factualityMessage=document.createElement("div");
  190. factualityMessage.innerHTML=`<div data-tippy-root="" id="tippy-${tippyIndx}" style="pointer-events: none; z-index: 9999; position: relative; inset: 0px auto auto 0px; margin: 0px; display: none; width: 100rem;"><div class="tippy-box justify-end flex dark:bg-light-primary dark:text-dark-primary p-1_2 text-16 tablet:text-12 tippy_arrow__uqz_Z" data-state="visible" tabindex="-1" data-animation="fade" style="max-width: 350px; transition-duration: 300ms;" role="tooltip" data-placement="bottom"><div class="tippy-content" data-state="visible" style="transition-duration: 300ms;"><div><span>${facPrettyName}, ${facFinalPercentage.toFixed()}%</span></div></div><div class="tippy-arrow" style="position: absolute; left: 0px; transform: translate3d(50px, 0px, 0px);"></div></div></div>`;
  191. try{
  192. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].insertBefore(factualityMessage, document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[1])
  193. }catch{}
  194. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[0].onmouseenter=()=>{document.getElementById('tippy-116').style.display='block'};
  195. document.querySelectorAll("[class*=\"bg-tertiary-light dark:bg-dark-light p-8px tablet:p-1_6 flex flex-col gap-1_2 justify-between w-full h-full text-12 dark:text-dark-gray-100 leading-tightest cursor-pointer\"]")[0].children[1].children[0].onmouseleave=()=>{document.getElementById('tippy-116').style.display='none'};
  196. }
  197. }catch{}
  198. if(document.URL.match("ground.news/blindspot").length==1){
  199. let probJson=""
  200. let jsonStr=document.getElementsByTagName("script");
  201. let f=0;
  202. for(let x=0;x<jsonStr.length;x++){
  203. if(jsonStr[x].innerHTML.length>probJson.length){
  204. probJson=jsonStr[x].innerText;
  205. f=x;
  206. }
  207. }
  208. jsonStr=probJson.match("{.*}");
  209. //jsonStr=jsonStr[0].match("leftBlindspots.*}")[0].replaceAll("\\\\\"","'");
  210. jsonStr=jsonStr[0].replaceAll("\\\\\"","'");
  211. jsonStr=jsonStr.replaceAll("\\","");
  212. jsonStr=JSON.parse(jsonStr)
  213. //left=document.getElementsByClassName("grid grid-cols-1 gap-3_2 desktop:grid-cols-2 tablet:mt-3_2")[1]
  214. //right=document.getElementsByClassName("grid grid-cols-1 gap-3_2 desktop:grid-cols-2 tablet:mt-3_2")[2]
  215. //await delay(1000);
  216. let blind=1;
  217. //Adapt to new way of handling blindspot ids
  218. jsonStr=jsonStr.children[3];
  219. //console.log(jsonStr.leftBlindspotIds);
  220. for(let x in jsonStr.leftBlindspotIds){
  221. //document.getElementsByClassName("grid grid-cols-1 gap-3_2 desktop:grid-cols-2 tablet:mt-3_2")[1].innerHTML+=`<div class="group"><a href="https://ground.news/article/${jsonStr.leftBlindspotIds[x]}">Blindspot Number ${blind}</a></div>`;
  222. document.querySelectorAll("[class*=\"grid grid-cols-1 gap-3_2 desktop:grid-cols-2 tablet:mt-3_2\"]")[1].innerHTML+=`<div class="group"><a href="https://ground.news/article/${jsonStr.leftBlindspotIds[x]}">Blindspot Number ${blind}</a></div>`;
  223. blind+=1;
  224. }
  225. blind=1;
  226. //console.log(jsonStr);
  227. for(let x in jsonStr.rightBlindspotIds){
  228. //document.getElementsByClassName("grid grid-cols-1 gap-3_2 desktop:grid-cols-2 tablet:mt-3_2")[2].innerHTML+=`<div class="group"><a href="https://ground.news/article/${jsonStr.rightBlindspotIds[x]}">Blindspot Number ${blind}</a></div>`;
  229. document.querySelectorAll("[class*=\"grid grid-cols-1 gap-3_2 desktop:grid-cols-2 tablet:mt-3_2\"]")[2].innerHTML+=`<div class="group"><a href="https://ground.news/article/${jsonStr.rightBlindspotIds[x]}">Blindspot Number ${blind}</a></div>`;
  230. blind+=1;
  231. }
  232. //let response=await fetch(`https://ground.news/article/${jsonStr.leftBlindspotIds[0]}`);
  233. //response=await response.text();
  234. //console.log(response);
  235. await delay(1000);
  236. /*Blindspot format:
  237. <div class="group"><a class="flex flex-col gap-8px cursor-pointer" href="/article/the-democratic-civil-war-has-started-who-will-triumph_42deec"><div class="h-22 min-w-full object-cover " style="position: relative;"><div class="w-full h-full relative overflow-hidden"><div class="w-full h-full object-cover blur-sm scale-110"><div class="relative w-full h-full"><div class="absolute inset-0 w-full h-full"><img alt="Democrats eye Republicans’ success with social media to transform messaging" fetchpriority="auto" loading="lazy" width="608" height="440" decoding="async" data-nimg="1" class="w-full h-full object-cover cover" style="color: transparent;" sizes="(max-width: 600px) 95vw, (max-width: 1200px) 50vw, 25vw" srcset="/_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=128&amp;q=75 128w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=256&amp;q=75 256w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=370&amp;q=75 370w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=600&amp;q=75 600w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=1024&amp;q=75 1024w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=1440&amp;q=75 1440w" src="https://ground.news/_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=1440&amp;q=75"></div></div></div><div class="absolute inset-0 flex items-center justify-center"><img alt="Democrats eye Republicans’ success with social media to transform messaging" fetchpriority="auto" loading="lazy" width="608" height="440" decoding="async" data-nimg="1" class="max-w-full max-h-full object-contain" style="color: transparent;" sizes="(max-width: 600px) 95vw, (max-width: 1200px) 50vw, 25vw" srcset="/_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=128&amp;q=75 128w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=256&amp;q=75 256w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=370&amp;q=75 370w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=600&amp;q=75 600w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=1024&amp;q=75 1024w, /_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=1440&amp;q=75 1440w" src="https://ground.news/_next/image?url=https%3A%2F%2Fgrnd.b-cdn.net%2Fadmin%2F2025%2F2%2F3dad51a6d14a3c110fb7336a8848cbf02b439ab9.jpg%3F%26width%3D608%26crop%3D1769%2C1280%2C76%2C0%26quality%3D50&amp;w=1440&amp;q=75"></div></div><div class="absolute top-0 left-0 w-full h-full bg-dark-primary opacity-0 group-hover:opacity-25 group-hover:transition-opacity group-hover:duration-200 ease-in z-1"></div></div><div class="flex gap-4px justify-between"><div class="flex items-center gap-4px font-normal"><div class="icons_icon__RW1fQ undefined cursor-pointer"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12.5303 16.773C15.1664 14.1369 15.1664 9.86307 12.5303 7.22703C9.8943 4.59099 5.62044 4.59099 2.9844 7.22703C0.348357 9.86307 0.348357 14.1369 2.9844 16.773C5.62044 19.409 9.8943 19.409 12.5303 16.773Z" stroke="#262626" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21.0157 16.773C23.6517 14.1369 23.6517 9.86307 21.0157 7.22703C18.3797 4.59099 14.1058 4.59099 11.4697 7.22703C8.83371 9.86307 8.83371 14.1369 11.4697 16.773C14.1058 19.409 18.3797 19.409 21.0157 16.773Z" stroke="#262626" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><rect x="13.5" y="7.5" width="8.25" height="1.5" fill="#262626"></rect><rect x="14.25" y="11.25" width="8.25" height="1.5" fill="#262626"></rect><rect x="13.5" y="15" width="8.25" height="1.5" fill="#262626"></rect></svg></div><span class="text-14">Blindspot:</span><button class="py-1/2 rounded-4px text-12 justify-self-start leading-6 flex flex-shrink items-center text-left disabled:opacity-50 bg-ground-new-dark-red text-light-primary px-4px font-bold">Only 10% Left</button></div><span class="text-14 font-normal">12 sources</span></div><h4 title="Democrats eye Republicans’ success with social media to transform messaging" class="font-extrabold text-22 leading-11 line-clamp-3 tablet:min-h-8_2 desktop:min-h-full group-hover:underline">Democrats eye Republicans’ success with social media to transform messaging</h4><div class="mt-8px flex flex-col gap-8px"><div class="flex flex-col gap-3px"><div class="flex justify-between text-14 leading-6 font-normal"><span>Left</span><span>10%</span></div><div class="text-12 flex"><div class="bg-ground-new-dark-red h-6px" style="width: 10%;"></div><div class="bg-light-light h-6px" style="width: 90%;"></div></div></div><div class="flex flex-col gap-3px"><div class="flex justify-between text-14 leading-6 font-normal"><span>Center</span><span>10%</span></div><div class="text-12 flex"><div class="bg-secondary-neutral h-6px" style="width: 10%;"></div><div class="bg-light-light h-6px" style="width: 90%;"></div></div></div><div class="flex flex-col gap-3px"><div class="flex justify-between text-14 leading-6 font-normal"><span>Right</span><span>80%</span></div><div class="text-12 flex"><div class="bg-ground-new-dark-blue h-6px" style="width: 80%;"></div><div class="bg-light-light h-6px" style="width: 20%;"></div></div></div></div></a></div>
  238. */
  239. try{
  240. document.querySelector("[class*=\"relative text-18 w-full tablet:h-30 overflow-y-hidden col-span-12 font-normal\"]").style.display="none";
  241. }catch{}
  242.  
  243. }
  244. }
  245. if(window.attachEvent) {
  246. window.attachEvent('onload', free);
  247. } else {
  248. if(window.onload) {
  249. var curronload = window.onload;
  250. var newonload = function(evt) {
  251. curronload(evt);
  252. free(evt);
  253. };
  254. window.onload = newonload;
  255. } else {
  256. window.onload = free;
  257. }
  258. }
  259. document.onclick=async function(){
  260. try{
  261. await delay(2000);
  262. if(document.URL.match("ground.news/article").length==1){
  263. if(document.querySelector('[class*="fixed z-[1000] left-0 right-0 dark:bg-dark-heavy bg-tertiary-light"]')!=null){
  264. location.reload();
  265. }
  266. }else if(document.URL.match("ground.news/blindspot").length==1){
  267.  
  268. }
  269. }catch{}
  270. };