LemmyTools

A small suite of tools to make Lemmy easier.

当前为 2023-07-09 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name LemmyTools
  3. // @namespace https://thesimplecorner.org/c/lemmytools
  4. // @version 0.1.2.7
  5. // @description A small suite of tools to make Lemmy easier.
  6. // @author howdy@thesimplecorner.org
  7. // @include https://*
  8. // @require https://code.jquery.com/jquery-3.7.0.slim.min.js
  9. // ==/UserScript==
  10.  
  11.  
  12. const ltConfig = `
  13. // ------------ EDIT THIS VARIABLE ---------------------
  14. var homeInstance = '';
  15. // ------------ END EDIT AREA --------------------------
  16. // Fixes remote Instance home link. Example: var homeInstance = 'https://lemmy.world';
  17.  
  18.  
  19. //Nothing below needs edited.
  20.  
  21.  
  22. // -------------- VERSION -------------------
  23. const ltVer = '0.1.2.7';
  24. const ltTestedVer = '0.18.1';
  25.  
  26. //--------------------------------------------
  27. `;
  28.  
  29.  
  30. const funcs = `
  31. /* Globals */
  32.  
  33. const mobile = isltMobile();
  34. let remoteCommunityArray = [];
  35.  
  36.  
  37. function isHomeInstanceSet(i2c)
  38. {
  39. var isit = false;
  40. if (i2c.length > 3)
  41. {
  42. isit = true;
  43. }
  44. return isit;
  45. }
  46.  
  47.  
  48. function isltMobile(){
  49. if (/Android|iPhone/i.test(navigator.userAgent)) {
  50. console.log("LemmyTools: " + "is mobile!");
  51. return true;
  52. }
  53. else
  54. {
  55. console.log("LemmyTools: " + "is desktop!");
  56. return false;
  57. }
  58. }
  59.  
  60.  
  61. //Remote Instance
  62. function update(comm, page, subString, hI) {
  63. console.log("update function");
  64. var el = document.getElementById("myDiv");
  65. try{
  66. if (comm)
  67. {
  68. var browsedComm = "<li><h5>" + comm + "</h5></li>" +
  69. "<li><a href='" + homeInstance + "/c/" + page + "' target='_blank'><button class='ltbutton'>Browse/Sub on Home Instance</button></a><br /><a href='" + subString + "' target='_blank'><button class='ltbutton'>Alternative Subscribe Method</button></a></li>";
  70.  
  71.  
  72. remoteCommunityArray.push(browsedComm);
  73. }
  74. }
  75. catch{}
  76.  
  77. return remoteCommunityArray;
  78. }
  79.  
  80. //Searches communityArray for results in LemmyTools Sidebar.
  81. function searchComms(id, full, commsdiv) {
  82.  
  83. console.log("LemmyTools: " + "commsearch evt searchinput" + id + commsdiv);
  84. var url = window.location.href;
  85. var query = id.toLowerCase();
  86.  
  87. if (query == "") {
  88. var commsCount = localStorage.getItem("commsCount");
  89. if ((commsCount == null) || (full.length < 1))
  90. {
  91. commsdiv.innerHTML = "<hr /><b>Welcome to LemmyTools! Ver " + ltVer + "</b><br /><br />If this is your first time running the script, set your lemmy homeinstance in the option page. [" + ltVer + "] - Manually enter your home lemmy instance in script for offsite home button functionality. (temporary)]. <br /><br /> If you dont see your subscribed communities here simply login to your lemmy and then click the LemmyTools home button above. ";
  92. }
  93. else
  94. {
  95. commsdiv.innerHTML = "Communities: " + commsCount + '<hr />';
  96. commsdiv.innerHTML += full;
  97. }
  98. }
  99. else {
  100.  
  101. //This searches the pushed communityArray with the query, saves it to a array, removes any duplicate values, sorts and then pushes to the commupdate function.
  102. commsdiv.innerHTML = full;
  103. console.log("LemmyTools: " + "Searching for:" + query);
  104. var children = commsdiv.getElementsByTagName("li");
  105. console.log("LemmyTools: " + "Children found: " + children.length);
  106. let data = [""];
  107. var found;
  108. for (var i = 0; i < children.length; i++) {
  109. if (children[i].innerHTML.toLowerCase().indexOf(query) !== -1) {
  110. found = children[i].innerHTML + '<br />';
  111. console.log("LemmyTools: " + "Found: " + found);
  112. data.push(found);
  113. }
  114. }
  115. let dup = [...new Set(data)];
  116. data = dup;
  117. data.sort();
  118. commupdate(commsdiv, url, data);
  119. }
  120. }
  121.  
  122.  
  123. function commupdate(id, page, data) {
  124. console.log("LemmyTools: " + "LTbar Update");
  125. var count = -1;
  126.  
  127. //console.log("LemmyTools: " + "updating " + id + " commsearch with: " + data);
  128.  
  129. data.forEach(_ => count++);
  130. data = data.join('');
  131. id.innerHTML = "";
  132. id.innerHTML += "Results: " + count + "<hr /><br />";
  133. id.innerHTML += data;
  134. }
  135.  
  136.  
  137. //Options page, get from localstorage (site data)
  138.  
  139. function options(open){
  140. var odiv = document.getElementById("ltOptions");
  141. console.log("LemmyTools: " + "Options Functions");
  142. if (open == 1)
  143. {
  144. odiv.style.display = "block";
  145. }
  146. else if (open == 2){
  147. //First run set defaults or pull from localstorage.
  148. const mobile = isltMobile();
  149.  
  150. commposSide = localStorage.getItem("option_commposSide");
  151. reverseSide = localStorage.getItem("option_reverseSide");
  152. var instance = localStorage.getItem("option_homeInstance");
  153. commposVertical = localStorage.getItem("option_commposVertical");
  154. expandImages = localStorage.getItem("option_expandImages");
  155. expandImagesize = localStorage.getItem("option_expandImagesize");
  156. hoverCheck = localStorage.getItem("option_hoverCheck");
  157. hideSideBar = localStorage.getItem("option_hideSideBar");
  158. unblurNSFW = localStorage.getItem("option_unblurNSFW");
  159. alienSiteOld = localStorage.getItem("option_alienSiteOld");
  160. alienSiteOldReadWidth = localStorage.getItem("option_alienSiteOldReadWidth");
  161. expandImageSpeed = localStorage.getItem("option_expandImageSpeed");
  162. showAllImages = localStorage.getItem("option_showAllImages");
  163.  
  164.  
  165. if (localStorage.getItem('option_commposSide') == null)
  166. {
  167. console.log("LemmyTools: First Run Defaults");
  168. commposSide = "right";
  169. reverseSide = "left";
  170. if (mobile)
  171. {
  172. commposSide = "left";
  173. reverseSide = "right";
  174. }
  175. else
  176. {
  177. commposSide = "right";
  178. reverseSide = "left";
  179. }
  180. }
  181. if (localStorage.getItem('option_homeInstance') == null)
  182. {
  183. if (homeInstance != '')
  184. {
  185. instance = homeInstance;
  186. }
  187. else
  188. {
  189. // alert('Welcome to LemmyTools' + ltVer + '. LemmyTools has defaulted to this lemmy instance. For all LemmyTools features to work please edit the homeInstance variable in the userscript. Thank you and I hope you enjoy LemmyTools! - @Howdy');
  190. instance = window.location.origin;
  191. }
  192. }
  193. if (localStorage.getItem('option_commposVertical') == null)
  194. {
  195. if (mobile)
  196. {
  197. commposVertical = "0";
  198. }
  199. else
  200. {
  201. commposVertical = "0";
  202. }
  203. }
  204. if (localStorage.getItem('option_expandImages') == null)
  205. {
  206. expandImages = "true";
  207. }
  208. if (localStorage.getItem('option_hideSideBar') == null)
  209. {
  210. hideSideBar = "false";
  211. }
  212. if (localStorage.getItem('option_expandImagesize') == null)
  213. { if (mobile)
  214. {
  215. expandImagesize = "100";
  216. }
  217. else
  218. {
  219. expandImagesize = "50";
  220. }
  221.  
  222. }
  223. if (localStorage.getItem('option_hoverCheck') == null)
  224. {
  225. hoverCheck = "false";
  226. }
  227. if (localStorage.getItem('option_unblurNSFW') == null)
  228. {
  229. unblurNSFW = "false";
  230. }
  231. if (localStorage.getItem('option_alienSiteOld') == null)
  232. {
  233.  
  234. if (mobile)
  235. {
  236. alienSiteOld = "false";
  237. }
  238. else
  239. {
  240. alienSiteOld = "true";
  241. }
  242.  
  243.  
  244. }
  245. if (localStorage.getItem('option_alienSiteOldReadWidth') == null)
  246. {
  247. alienSiteOldReadWidth = "740";
  248. }
  249. if (localStorage.getItem('option_expandImageSpeed') == null)
  250. {
  251. expandImageSpeed = "0.50";
  252. }
  253. if (localStorage.getItem('option_showAllImages') == null)
  254. {
  255. showAllImages = "false";
  256. }
  257.  
  258.  
  259. localStorage.setItem("option_commposSide", commposSide);
  260. localStorage.setItem("option_reverseSide", reverseSide);
  261. localStorage.setItem("option_homeInstance", instance);
  262. localStorage.setItem("option_commposVertical", commposVertical);
  263. localStorage.setItem("option_expandImages", expandImages);
  264. localStorage.setItem("option_expandImagesize", expandImagesize);
  265. localStorage.setItem("option_hideSideBar", hideSideBar);
  266. localStorage.setItem("option_hoverCheck", hoverCheck);
  267. localStorage.setItem("option_unblurNSFW", unblurNSFW);
  268. localStorage.setItem("option_alienSiteOld", alienSiteOld);
  269. localStorage.setItem("option_alienSiteOldReadWidth", alienSiteOldReadWidth);
  270. localStorage.setItem("option_expandImageSpeed", expandImageSpeed);
  271. localStorage.setItem("option_showAllImages", showAllImages);
  272.  
  273. }
  274. else if (open == 3)
  275. {
  276. //save button
  277. odiv.style.display = "none";
  278.  
  279.  
  280.  
  281. var commposSide = document.getElementsByName("option_commposSide")[0];
  282. var value = commposSide.options[commposSide.selectedIndex].value;
  283. commposSide = value;
  284.  
  285. theHomeinstance = document.getElementsByName("option_homeInstance")[0];
  286. value = theHomeinstance.value;
  287. theHomeinstance = value;
  288.  
  289. var commposVertical = document.getElementsByName("option_commposVertical")[0];
  290. value = commposVertical.value;
  291. commposVertical = value;
  292.  
  293. var expandImages = document.getElementsByName("option_expandImages")[0];
  294. value = expandImages.checked;
  295. expandImages = value;
  296.  
  297. var expandImagesize = document.getElementsByName("option_expandImagesize")[0];
  298. value = expandImagesize.value;
  299. expandImagesize = value;
  300.  
  301. var expandImageSpeed = document.getElementsByName("option_expandImageSpeed")[0];
  302. value = expandImageSpeed.value;
  303. expandImageSpeed = value;
  304.  
  305. var hideSideBar = document.getElementsByName("option_hideSideBar")[0];
  306. value = hideSideBar.checked;
  307. hideSideBar = value;
  308.  
  309. var hoverCheck = document.getElementsByName("option_hoverCheck")[0];
  310. value = hoverCheck.checked;
  311. hoverCheck = value;
  312.  
  313. var unblurNSFW = document.getElementsByName("option_unblurNSFW")[0];
  314. value = unblurNSFW.checked;
  315. unblurNSFW = value;
  316.  
  317. var alienSiteOld = document.getElementsByName("option_alienSiteOld")[0];
  318. value = alienSiteOld.checked;
  319. alienSiteOld = value;
  320.  
  321. var alienSiteOldReadWidth = document.getElementsByName("option_alienSiteOldReadWidth")[0];
  322. value = alienSiteOldReadWidth.value;
  323. alienSiteOldReadWidth = value;
  324.  
  325. var showAllImages = document.getElementsByName("option_showAllImages")[0];
  326. value = showAllImages.checked;
  327. showAllImages = value;
  328.  
  329.  
  330. if (commposVertical > 85)
  331. {
  332. commposVertical = 85;
  333. }
  334. else if (commposVertical <= -1)
  335. {
  336. commposVertical = 0;
  337. }
  338.  
  339. if (expandImageSpeed > 1)
  340. {
  341. expandImageSpeed = 1;
  342. }
  343. if (expandImageSpeed < 0)
  344. {
  345. expandImageSpeed = 0;
  346. }
  347.  
  348.  
  349. var reverseSide = "";
  350.  
  351. if (commposSide == "left")
  352. {
  353. reverseSide = "right";
  354. }
  355. else
  356. {
  357. reverseSide = "left";
  358. }
  359.  
  360. localStorage.setItem("option_commposSide", commposSide);
  361. localStorage.setItem("option_reverseSide", reverseSide);
  362. localStorage.setItem("option_homeInstance", theHomeinstance);
  363. localStorage.setItem("option_commposVertical", commposVertical);
  364. localStorage.setItem("option_hideSideBar", hideSideBar);
  365. localStorage.setItem("option_expandImages", expandImages);
  366. localStorage.setItem("option_expandImagesize", expandImagesize);
  367. localStorage.setItem("option_expandImageSpeed", expandImageSpeed);
  368. localStorage.setItem("option_hoverCheck", hoverCheck);
  369. localStorage.setItem("option_unblurNSFW", unblurNSFW);
  370. localStorage.setItem("option_alienSiteOld", alienSiteOld);
  371. localStorage.setItem("option_alienSiteOldReadWidth", alienSiteOldReadWidth);
  372. localStorage.setItem("option_showAllImages", showAllImages);
  373. location.reload(true);
  374. }
  375.  
  376. commposSide = localStorage.getItem("option_commposSide");
  377. reverseSide = localStorage.getItem("option_reverseSide");
  378. instance = localStorage.getItem("option_homeInstance");
  379. commposVertical = localStorage.getItem("option_commposVertical");
  380. expandImages = localStorage.getItem("option_expandImages");
  381. expandImagesize = localStorage.getItem("option_expandImagesize");
  382. expandImageSpeed = localStorage.getItem("option_expandImageSpeed");
  383. hideSideBar = localStorage.getItem("option_hideSideBar");
  384. hoverCheck = localStorage.getItem("option_hoverCheck");
  385. unblurNSFW = localStorage.getItem("option_unblurNSFW");
  386. alienSiteOld = localStorage.getItem("option_alienSiteOld");
  387. alienSiteOldReadWidth = localStorage.getItem("option_alienSiteOldReadWidth");
  388. showAllImages = localStorage.getItem("option_showAllImages");
  389.  
  390. const userOptions = {theInstance: instance, positionSide: commposSide, reverseSide: reverseSide, positionVertical: commposVertical,expandImages: expandImages,expandImagesize: expandImagesize, hideSideBar: hideSideBar, hoverCheck: hoverCheck, unblurNSFW: unblurNSFW, alienSiteOld: alienSiteOld, alienSiteOldReadWidth: alienSiteOldReadWidth, expandImageSpeed: expandImageSpeed, showAllImages: showAllImages};
  391. console.log("LemmyTools: Settings" + userOptions);
  392. return userOptions;
  393.  
  394.  
  395. }
  396.  
  397. function scrollToElement(pageElement) {
  398. var positionX = 0,
  399. positionY = -130;
  400.  
  401. while(pageElement != null){
  402. positionX += pageElement.offsetLeft;
  403. positionY += pageElement.offsetTop;
  404. pageElement = pageElement.offsetParent;
  405. window.scrollTo(positionX, positionY, "smooth");
  406. }
  407. }
  408.  
  409. //Used for offset removal
  410. function removeClassByWildcard(divClass) {
  411. // If the class ends with a "*", then it matches all classes that start with the given class name.
  412. if (divClass.endsWith("*")) {
  413. divClass = divClass.replace('*', '');
  414. // Get all elements with the given class name.
  415. var elements = document.getElementsByTagName("div");
  416. var re = new RegExp("(^|\\s)" + divClass + "(\\s|$)");
  417. let result = [];
  418. let className = "";
  419.  
  420. for (var i=0; i<elements.length; i++) {
  421. if (re.test(elements[i].className)) {
  422. console.log("Match: " + elements[i]);
  423. result.push(elements[i]);
  424. for (var y=0; y<elements[i].classList.length; y++)
  425. {
  426. if (elements[i].classList[y].indexOf(divClass) !== -1)
  427. {
  428. className = elements[i].classList[y];
  429. console.log(className);
  430. }
  431. }
  432. }
  433. }
  434. // Remove the class from all elements.
  435. for (var i = 0; i < result.length; i++) {
  436. result[i].classList.remove(className);
  437. }
  438. } else {
  439. // Otherwise, the class must match exactly.
  440. var elements = document.querySelectorAll("[class=" + divClass + "]");
  441.  
  442. // Remove the class from all elements.
  443. for (var i = 0; i < elements.length; i++) {
  444. elements[i].classList.remove(divClass);
  445. }
  446. }
  447.  
  448. }
  449.  
  450. function alienSiteOldStyle_compact() {
  451. var xhr=new XMLHttpRequest();
  452. xhr.open("GET","https://cdn.jsdelivr.net/gh/soundjester/lemmy_monkey@main/old.reddit.compact.user.js");
  453. xhr.onload=function(){
  454. const theScript = xhr.responseText;
  455. document.head.appendChild(document.createElement("script")).innerHTML = theScript;
  456. }
  457. xhr.send();
  458. }
  459.  
  460.  
  461. //Expand all images on page
  462. function allImages(h)
  463. {
  464. let clickableImages = [];
  465.  
  466. clickableImages = document.querySelectorAll('[aria-label="Expand here"]');
  467. console.log(clickableImages.length);
  468. console.log(clickableImages);
  469. if (h != 1)
  470. {
  471. for (i=0; i<clickableImages.length; i=i+2)
  472. {
  473. try{
  474. clickableImages[i].click();
  475. clickableImages[i].show();
  476. }catch{}
  477. }
  478. }
  479. else
  480. {
  481. //lazy - need to figure out way to handle on dom iter
  482. location.reload(true);
  483. }
  484.  
  485. clickableImages = "";
  486. } //end of function
  487.  
  488.  
  489. `;
  490.  
  491.  
  492.  
  493. const main = `
  494. // LemmyTools
  495.  
  496. //check if first run or load saved settings
  497. let settings = options("2");
  498.  
  499.  
  500. /* The provided restyling was graciously used with permission from the developer(s) of Compact Lemmy to old.Reddit Re-format (Lemmy v0.18)
  501.  
  502. // @name Compact Lemmy to old.Reddit Re-format (Lemmy v0.18)
  503. // @namespace https://github.com/soundjester/lemmy_monkey
  504. // @description Reformat widescreen desktop to look more like Reddit
  505. // @author mershed_perderders, DarkwingDuck, dx1@lemmy.world, Djones4822, Jakylla
  506.  
  507. Thank you.
  508. */
  509.  
  510. //Add Compact AlienSiteOld Theme
  511. if (settings.alienSiteOld == "true")
  512. {
  513. console.log('LemmyTools: Adding alienSiteOld');
  514. alienSiteOldStyle_compact();
  515. }
  516.  
  517.  
  518. /* Script */
  519. url = window.location.href;
  520. console.log("LemmyTools: " + "url is " + url)
  521. var count = 0;
  522.  
  523.  
  524. //Keep Updated
  525. setInterval(function (){
  526. url = window.location.href;
  527. }, 1000);
  528.  
  529.  
  530. //Option Divs
  531. if (settings.expandImages == "true")
  532. {
  533. eIcheck = 'checked';
  534. }
  535. else
  536. {
  537. eIcheck = '';
  538. }
  539. if (settings.hideSideBar == "true")
  540. {
  541. hSBcheck = 'checked';
  542. }
  543. else
  544. {
  545. hSBcheck = '';
  546. }
  547. if (settings.hoverCheck == "true")
  548. {
  549. hoverCheck = 'checked';
  550. }
  551. else
  552. {
  553. hoverCheck = '';
  554. }
  555. if (settings.unblurNSFW == "true")
  556. {
  557. unblurCheck = 'checked';
  558. }
  559. else
  560. {
  561. unblurCheck = '';
  562. }
  563. if (settings.alienSiteOld == "true")
  564. {
  565. aSOcheck = 'checked';
  566. }
  567. else
  568. {
  569. aSOcheck = '';
  570. }
  571. if (settings.showAllImages == "true")
  572. {
  573. showAllImagesCheck = 'checked';
  574. }
  575. else
  576. {
  577. showAllImagesCheck = '';
  578. }
  579.  
  580. var hIAlertString = '';
  581. //Is HomeInstance Manually Set For WorkAround
  582. if (isHomeInstanceSet(homeInstance) == false)
  583. {
  584. hIAlertString = "<b style='color: red;'>Your Home Instance has not been manually set in the UserScript.</b><br />";
  585. }
  586. else
  587. {
  588. hIAlertString = "";
  589. }
  590.  
  591.  
  592. //Create Lemmy Tools Elements ----------------------------------------
  593.  
  594. var odiv = document.createElement("div");
  595. odiv.setAttribute("id", "ltOptions");
  596. odiv.classList.add("ltoptions", "border-secondary", "card");
  597. odiv.innerHTML = "<h4>LemmyTools " + ltVer + " Options</h4></hr>" +
  598. "<div class='table-responsive'><table class='table'>" +
  599. "<thead class='pointer'>" +
  600. "<tr><th>Option:</th>" +
  601. "<th>Value:</th>" +
  602. "</thead></tr>" +
  603. "<tbody>" +
  604. "<tr><td><b>LemmyTools Settings:</b></td><td></td></tr>" +
  605. "<tr><td><b>HomeInstance URL</b><br /> Make sure to edit the homeInstance variable of<br /> the UserScript for the remote instance Home button fix. (Temporary workaround).<br />(Ex: https://yourinstance.lemmy)<br />" + hIAlertString + "</td><td><textarea name='option_homeInstance'>" + settings.theInstance + "</textarea></td></tr>" +
  606. "<tr><td><b>LemmyTools bar window side</b><br /> - default: right</td><td><select name='option_commposSide'><option value='" + settings.positionSide + "'>" + settings.positionSide + "</option><option value='right'>right</option><option value='left'>left</option></select></td></tr>" +
  607. "<tr><td><b>LemmyTools bar vertical position </b><br />% from top [0-85] - default: 0</td><td><textarea name='option_commposVertical'>" + settings.positionVertical + "</textarea></td></tr>" +
  608. "<tr><td><b>Keep LemmyTools Bar Open</b><br />Works best for widescreen desktops.</td><td><input type='checkbox' name='option_hoverCheck'" + hoverCheck + "/></td></tr>" +
  609. "<tr><td><br /><br /></td><td></td></tr>" +
  610. "<tr><td><b>Site Style and Behaviors:</b></td><td></td></tr>" +
  611. "<tr><td><b>Compact Lemmy to old.Reddit Re-format (Lemmy v0.18) style</b><br />Like the old alien.site but lemmy! <br />Defaults - Desktop: On / Mobile: Off <br /><br /> Post width / comment width setting in pixels. Increase or Decrease to your reading preference while viewing posts. (Default 740) </td><td><input type='checkbox' name='option_alienSiteOld'" + aSOcheck + "/><br /><br /><br /><textarea name='option_alienSiteOldReadWidth'>" + settings.alienSiteOldReadWidth + "</textarea></td></tr>" +
  612. "<tr><td><b>Hide Lemmy Sidebars</b><br /> (Trending, ServerInfo, Communities)<br /> More room for images on feed.</td><td><input type='checkbox' name='option_hideSideBar'" + hSBcheck + "/></td></tr>" +
  613. "<tr><td><b>Expandable Images</b><br />Acts as an auto-expander and adds the ability to manually<br /> expand images by clicking and dragging.<br />Doubleclick to open full image.</td><td><input type='checkbox' name='option_expandImages' " + eIcheck + "/></td></tr>" +
  614. "<tr><td><b>Auto Expand Size</b><br />Size of post image after opening a image post.<br /> Desktop Default: 50 / Mobile: 100</td><td><textarea name='option_expandImagesize'>" + settings.expandImagesize + "</textarea></td></tr>" +
  615. "<tr><td><b>Expand Image Speed</b><br />Speed multiplier for click&drag expanding images. If your images seem to expand<br /> too fast or slow, increase or decrease this value. [Values 0 to 1.0]<br /> Default: 0.50 </td><td><textarea name='option_expandImageSpeed'>" + settings.expandImageSpeed + "</textarea></td></tr>" +
  616. "<tr><td><b>Automatically open image posts</b><br /></td><td><input type='checkbox' name='option_showAllImages'" + showAllImagesCheck + "/></td></tr>" +
  617. "<tr><td><b>Auto unblur NSFW images</b><br /></td><td><input type='checkbox' name='option_unblurNSFW'" + unblurCheck + "/></td></tr>" +
  618. "<tr><td></td><td><button id='LTsaveoptions' onclick='options(3)'>Save / Close</button></td></tr></tbody></table></div>" +
  619. "<p> Tested on Lemmy Version: " + ltTestedVer + " on firefox. " +
  620. "<br /><h5>LemmyTools Links</h5><hr /><a href='https://thesimplecorner.org/c/lemmytools'>!lemmytools@thesimplecorner.org</a><br />Get it here: <a href='https://github.com/howdy-tsc/LemmyTools'>Github</a> or <a href='https://greasyfork.org/en/scripts/469169-lemmytools'>GreasyFork</a>" +
  621. "<br />Please submit issues to the github for feature requests and problems: <a href='https://github.com/howdy-tsc/LemmyTools/issues'>Github LemmyTools Issues</a><br /></p>" +
  622. "<br /><a href='https://ko-fi.com/lemmytools'><img src='https://storage.ko-fi.com/cdn/nav-logo-stroke.png' width='32' /><br />Enjoy LemmyTools?<br />Tip with coffee!</a>" +
  623. "<br /><br /><b>Attributes/Credit: </b><br /><li>The provided style pack option of 'Compact Lemmy to old.Reddit Re-format (Lemmy v0.18)' was graciously used with permission from the developer(s). <br />Please support their project here:" +
  624. "<a href='https://github.com/soundjester/lemmy_monkey'> Compact Lemmy to old.Reddit Re-format (Lemmy v0.18)</a></li>";
  625.  
  626.  
  627. //Adjust clickable area for mobile (add brandingString if desktop)
  628. var brandingString = "";
  629. if (mobile !== true)
  630. {
  631. brandingString = "<span style='vertical-align: super !important; writing-mode: vertical-lr; text-orientation: mixed;'>LemmyTools</span>";
  632. }
  633.  
  634. //Comm divs
  635. var touchdiv = document.createElement("div");
  636. touchdiv.setAttribute("id", "touchdiv");
  637. var idiv = document.createElement("div");
  638. idiv.setAttribute("id", "searchdiv");
  639. idiv.classList.add("ltmenu", "border-secondary", "card");
  640. idiv.innerHTML = "<div id='ltActiveSearchDiv' class='ltActiveSearchDiv'><header id='ltBarHeader' class='card-header'><h6><a href=" + settings.theInstance + ">Home</a> - <a href='https://lemmyverse.net/communities' target='_new'>Find Subs</a> - <img width=22 height=22 class='targetImg' src='data:image/webp;base64,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' /></h6>" +
  641. "</header><input type='text' id='commsearch' name='commsearchinput' oninput='searchComms(commsearch.value, communityArray, div)' placeholder='Search your subscriptions (or visted subs)' /> " +
  642. "<div id='ltBarSubHeader' class='clickAble'>LemmyTools " + ltVer + " - <a href='#' id='LToptions' onclick='options(" + 1 + ")'>Options</a></div><div style='clear:both;'></div>" +
  643. "</div>" +
  644. "<div id='ltPassiveSearchDiv' class='ltPassiveSearchDiv'><img width=30 height=30 class='targetImg' src='data:image/webp;base64,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' />" +
  645. brandingString +
  646. "</div><br />" +
  647. " ";
  648.  
  649. var div = document.createElement("div");
  650. div.setAttribute("id", "myDiv");
  651. div.classList.add("ltcommsbar");
  652.  
  653. var styleString = ".ltmenu {position: fixed; top: " + settings.positionVertical +"%;" + settings.positionSide + ": 0; font-size: .75rem; display: block; height: 100%; min-height: auto;" +
  654. "z-index:999; overflow:scroll; border: thick double; border-right:none !important; outline: 1px solid grey !important; }" +
  655. ".ltActiveSearchDiv {font-size: 0.9rem; width: 100%;}" +
  656. ".ltmenu input { width: 100%;}" +
  657. ".ltPassiveSearchDiv {display:none; width: 100%;}" +
  658. ".post-listings .img-fluid {width: " + settings.expandImagesize + "%}" +
  659. "#myDiv li { list-style-type: none;}" +
  660. "#myDiv hr {display:block; }" +
  661. "#searchdiv {" + settings.positionSide +": 0; position: fixed; height:100%; min-height: auto; width: 240px; display:block; z-index:999; overflow: scroll; display: block; transition-timing-function: ease; transition: " + settings.positionSide + " .25s; transition-delay: 0, 0.25s; overflow: auto;}" +
  662. ".ltbutton {background-color: #ccffe5;}" +
  663. ".ltPassiveSearchDiv {display:none;}" +
  664. ".ltoptions {position: fixed; min-width: auto; min-height: auto; width: auto; height:100%; top:0;" + "display:none; left: 0; overflow:scroll; z-index:1000; padding:0.5%; border: thick double;}" +
  665. "#myDiv::-webkit-scrollbar {display: none;} #myDiv{-ms-overflow-style: none; scrollbar-width: none;}" +
  666. "#searchdiv::-webkit-scrollbar {display: none;} #searchdiv{-ms-overflow-style: none; scrollbar-width: none;}";
  667.  
  668. if (settings.unblurNSFW == "true")
  669. {
  670. styleString += " .img-blur {filter: none !important; -webkit-filter: none !important; -moz-filter: none !important; -o-filter: none !important; -ms-filter: none !important;} ";
  671. }
  672. else
  673. {
  674. styleString += " .img-blur {filter: blur !important; -webkit-filter: blur !important; -moz-filter: blur !important; -o-filter: blur !important; -ms-filter: blur !important;} ";
  675. }
  676.  
  677. if (settings.hideSideBar == "true")
  678. {
  679. styleString += ".container, .container-lg, .container-md, .container-sm, .container-xl { }" +
  680. ".col-md-8 {flex: 0 0 80% !important;max-width: 80%;}";
  681. }
  682. else
  683. {
  684. styleString += ".container, .container-lg, .container-md, .container-sm, .container-xl {}";
  685. }
  686. if (settings.hoverCheck !== "true"){
  687. styleString += " " +
  688. "#myDiv:not(:hover) {animation: showNavOut 500ms ease-in-out both; display:none; height:0; transition-timing-function: ease; transition: height; transition-duration: 1.0; transition-delay: 0.5s;}" +
  689. ".ltPassiveSearchDiv {display:block; float: " + settings.reverseSide + "; padding-" + settings.positionSide + ": 200px;}" +
  690. "#ltActiveSearchDiv {display:none; animation: showNav 500ms ease-in-out both;}" +
  691. "#sidebarSubscribed {display:none;}" +
  692. "#searchdiv { " + settings.positionSide +": -200px; position: fixed; height:110px; min-height: auto; width: 240px; display:block; z-index:999; overflow: auto; display: block; transition-timing-function: ease; transition: " + settings.positionSide + ", height; transition-duration: 0.25s, 0.25s; transition-delay: 0.25s, 0.25s; animation: showNavOut 250ms ease-in-out both;}" +
  693. "#searchdiv:hover .ltActiveSearchDiv {display:block;}" +
  694. "#searchdiv:hover .ltPassiveSearchDiv {display:none;}" +
  695. "#searchdiv:hover {" + settings.positionSide +": 0; position: fixed; height: 100%; min-height: auto; width: 240px; display:block; z-index:999; display: block; overflow: auto;}" +
  696. "#searchdiv:hover > #myDiv{" + settings.positionSide +": 0; word-wrap: break-word; overflow:auto; display:block; height:100%; width:240px; animation: showNav 500ms ease-in-out both; }" +
  697. "@keyframes showNav { from {opacity: 0;} to {opacity: 1;}}"
  698. "@keyframes showNavOut { from {opacity: 1;} to {opacity: 0;}}"
  699. "";
  700. }
  701. else
  702. {
  703. styleString += "" +
  704. "myDiv {visibility: visible; height: auto; width: auto; overflow:scroll !important;}" +
  705. "";
  706. }
  707.  
  708. //Adjust clickable area for mobile (remove brandingString)
  709. if (mobile == true)
  710. {
  711. styleString += "" +
  712. "#searchdiv {height: 35px;}" +
  713. "";
  714. }
  715.  
  716. //Adjust Comment/Post width (for reading with compact old style)
  717. if (settings.alienSiteOld == "true")
  718. {
  719. styleString += "" +
  720. "#postContent, .md-div, .alert-warning {max-width: 740px !important; }" +
  721. ".mb-3.row { max-width: " + settings.alienSiteOldReadWidth + "px !important; }" +
  722. ".comment { max-width: " + settings.alienSiteOldReadWidth + "px !important; }" +
  723. "";
  724. }
  725.  
  726.  
  727.  
  728. // ADD MAIN CSS
  729. const addCSS = css => document.head.appendChild(document.createElement("style")).innerHTML = css;
  730. addCSS(styleString);
  731.  
  732.  
  733.  
  734. //add lemmytools elements to page
  735. document.body.appendChild(odiv);
  736. document.body.appendChild(idiv);
  737. idiv.appendChild(div);
  738.  
  739.  
  740. //Easier Subscribe Buttons ---------------------------
  741.  
  742. var currentPage = '';
  743. setInterval(function (){
  744. let rCommunityArray = [];
  745. //Browsing remote instance
  746. var broken = url.split('/c/');
  747. var site = broken[0];
  748. site = site.replace('https://', '');
  749. var community = broken[1];
  750. try{
  751. broken2 = community.split('?'); community = broken2[0];
  752. var communityName = community.indexOf('@') > -1 ? community : community + "@" + site;
  753. }catch{}
  754. var subString = settings.theInstance + "/search?q=!" + communityName + "&type=All&listingType=All&page=1";
  755. subString = subString.replace('#', '');
  756. var count = 0;
  757.  
  758.  
  759. if (currentPage != location.href) {
  760. currentPage = location.href;
  761. console.log("LemmyTools: " + "Easy Sub Running...");
  762. if (document.querySelector('meta[name="Description"]').content.includes("Lemmy")) {
  763. if ((url.includes(settings.theInstance) == false) && ((url.includes("/c/") || url.includes("/post/") || url.includes("/comment/") || url.includes("/communities")))) {
  764. console.log("LemmyTools: " + "On remote instance community" + "Button to: " + subString);
  765. console.log("LemmyTools: " + "On remote lemmy");
  766. console.log("LemmyTools: " + "On remote instance community" + "Button to: " + subString);
  767. rCommunityArray = update(community, communityName, subString, settings.theInstance);
  768. let rDup = [...new Set(rCommunityArray)];
  769. rCommunityArray = rCommunityArray.reverse();
  770. div.innerHTML = '';
  771. div.innerHTML += rCommunityArray;
  772. communityArray = rCommunityArray;
  773.  
  774. }
  775. }
  776. }
  777. }, 1000);
  778.  
  779.  
  780.  
  781. // Update homeInstance Comms for bar to use
  782.  
  783. let communityArray = new Array();
  784. if (url.includes(settings.theInstance)) {
  785. console.log("LemmyTools: " + "home instance do bar");
  786. document.querySelectorAll('[class="list-inline-item d-inline-block"]').forEach(function(el) {
  787. communityArray.push("<li>" + el.innerHTML + "</li>");
  788. });
  789. let dup = [...new Set(communityArray)];
  790. communityArray = dup;
  791. if ((count == 0) || (count == null)) {
  792. count = 0;
  793. communityArray.forEach(_ => count++);
  794. }
  795.  
  796. communityArray = communityArray.join('');
  797.  
  798. div.innerHTML += communityArray;
  799. if (div.innerHTML.length >= 20) {
  800. console.log("LemmyTools: Got Results >20");
  801.  
  802. console.log("LemmyTools: " + "setting localcomms localstore");
  803. localStorage.setItem("localComms", communityArray);
  804. localStorage.setItem("commsCount", count);
  805. //force update the page
  806. searchComms("", communityArray, div);
  807.  
  808. } else {
  809. console.log("LemmyTools: " + "get localcomms from localstore");
  810. communityArray = localStorage.getItem("localComms");
  811.  
  812. div.innerHTML += communityArray;
  813. //force update the page
  814. searchComms("", communityArray, div);
  815. }
  816.  
  817.  
  818. }
  819. else {
  820. console.log("LemmyTools: On Remote Instance - Bar");
  821. //div.innerHTML = localStorage.getItem("remoteComms");
  822. //Toggle(0);
  823.  
  824. }
  825.  
  826.  
  827.  
  828. //Expand Images----------------------------------------------
  829.  
  830. setInterval(function() {
  831. if (settings.expandImages == "true")
  832. {
  833. let theImages = [];
  834. theImages = document.getElementsByClassName('img-expanded');
  835. for (i=0; i < theImages.length; i++)
  836. {
  837. theImages[i].addEventListener('mousedown', startDrag);
  838.  
  839. }
  840. let posX;
  841. let node;
  842. function startDrag(e){
  843. e.preventDefault();
  844. node = e.currentTarget;
  845. node.style.cursor = 'nwse-resize';
  846. try {
  847. node.closest("a").setAttribute('onclick', 'return false;');
  848. node.srcElement.closest("a").setAttribute('overflow', 'auto;');
  849. node.preventDefault();
  850. }catch{}
  851. posX = e.clientX;
  852. document.addEventListener('mousemove', resize);
  853. document.addEventListener('mouseup', stopDrag);
  854. }
  855. function resize(e){
  856. e.preventDefault();
  857. const nextPosX = e.pageX;
  858. node.style.width = (node.offsetWidth) + (nextPosX - posX) * settings.expandImageSpeed + "px";
  859. posX = nextPosX;
  860. }
  861. function stopDrag(e){
  862. e.preventDefault();
  863. node.style.cursor = 'default';
  864. document.removeEventListener('mousemove', resize);
  865. document.removeEventListener('mouseup', stopDrag);
  866. }
  867.  
  868.  
  869. } // if expand images
  870.  
  871. //Removes the offset from images.
  872. try{removeClassByWildcard("offset-*");}catch{}
  873.  
  874. //sidebar settings do
  875. if (settings.hideSideBar == "true"){
  876. try{
  877. var sidebarSubscribed = document.getElementById("sidebarContainer");
  878. sidebarSubscribed.style.display = 'none';
  879. removeClassByWildcard("site-sideba*");
  880.  
  881. var serverInfo = document.getElementById("sidebarInfo");
  882. var serverInfoString = serverInfo.innerHtml;
  883. serverInfo.style.display = 'none';
  884. }
  885. catch {}
  886. }
  887.  
  888.  
  889. //Show All Images Functionality on button toggle.
  890. try{
  891. addImageButtonArea = document.getElementsByClassName('row align-items-center mb-3 g-3');
  892. if ((addImageButtonArea[0].innerHTML.indexOf('showAllImages') == -1) && (settings.showAllImages != "true"))
  893. {
  894. addImageButtonArea[0].appendChild(document.createElement("div")).innerHTML = "<div class='col-auto'><input type='button' id='showAllImages' class='pointer btn btn-secondary text-bg-primary' value='Show All Images' /> </div>";
  895. showImagesButton = document.getElementById("showAllImages");
  896. showImagesButton.addEventListener("click", function (e) {
  897.  
  898. if (showImagesButton.value == 'Show All Images')
  899. {
  900. showImagesButton.value = 'Hide All Images';
  901. allImages();
  902. }
  903. else
  904. {
  905. showImagesButton.value = 'Show All Images';
  906. allImages(1);
  907. }
  908. });
  909. }
  910. }catch {}
  911.  
  912.  
  913. }, 500);
  914.  
  915.  
  916. //Open Images Always
  917. var pUrl = "";
  918.  
  919. openimages = setInterval(function(){
  920. if (settings.showAllImages == "true")
  921. {
  922. console.log("url: " + url);
  923. if ((pUrl.length <= 3) || (pUrl != url))
  924. {
  925. allImages();
  926. }
  927. pUrl = url;
  928. console.log("P: " + pUrl );
  929.  
  930. }
  931. }, 2000);
  932.  
  933.  
  934.  
  935. `;
  936.  
  937.  
  938.  
  939. //If lemmy do
  940. (function() {
  941. 'use strict';
  942.  
  943. let isLemmy;
  944. try {
  945. isLemmy = document.head.querySelector("[name~=Description][content]").content === "Lemmy";
  946. } catch (_er) {
  947. isLemmy = false;
  948. }
  949.  
  950. if (isLemmy) {
  951.  
  952. document.body.appendChild(document.createElement("script")).innerHTML = ltConfig;
  953. document.head.appendChild(document.createElement("script")).innerHTML = funcs;
  954. document.body.appendChild(document.createElement("script")).innerHTML = main;
  955. }
  956.  
  957. })();