Button to add an event to Google Calendar, visited profile links shown in red, mutual kinks shown brighter, homepage feed enlarged, show pagination at the top of people lists
当前为 
// ==UserScript==
// @name         Improvements to FetLife's UI
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Button to add an event to Google Calendar, visited profile links shown in red, mutual kinks shown brighter, homepage feed enlarged, show pagination at the top of people lists
// @author       You
// @match        https://fetlife.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=fetlife.com
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
// @license MIT
// @grant        none
// ==/UserScript==
/* global $ */
(function() {
  'use strict';
  console.log("Improve Fetlife: Start");
  var s = document.createElement("style");
  s.innerHTML="/* Added by Tampermonkey script: Improvements to FetLife's UI */ ";
  //visited profile links shown in red
  s.innerHTML+="#main-content .flex.flex-wrap a:visited {color: rgb(125,0,0) }";
  //mutual kinks shown brighter
  s.innerHTML+=".bg-gray-600 { background-color: #777; }";
  //homepage feed enlargement
  s.innerHTML+="#stories-list div { font-size: 22px; } #stories-list a.dib img { width: 150px !important; height: 150px !important; }";
  document.head.appendChild(s);
  //Improve group members e.g. page https://fetlife.com/groups/17165/members
  //or attendee list e.g. https://fetlife.com/events/1064773/rsvps
  if (pathMatch(/\/groups\/\d+\/members/) || pathMatch(/\/events\/\d+\/rsvps/)) {
    copyPrevNextPageLinksToTop();
  } else if (pathMatch(/\/events\/\d+\/?/)) {
    addButtonCalendar();
  }
  console.log("Improve Fetlife: Complete");
})();
function pathMatch(regexp) {
  var result = window.location.pathname.match(regexp);
  //console.log(window.location.pathname, regexp, result);
  return result;
}
function copyPrevNextPageLinksToTop() {
  $("header.justify-start, header.relative").after( $("footer div.pagination").clone().addClass("tc") ); //tc = text center
}
function addButtonCalendar() {
  var destination = $(".w275-l > div:first-child");
  var sidebar = $(".w275-l > div:first-child > div > div");
  if (sidebar.length == 0) {
    destination.after("<div style='color:red; border:3px solid gray'>Cannot find sidebar</div>");
    return;
  }
  //dates
  var dates = $(sidebar[0]).find("p span");
  var start = null;
  var end = null;
  if (dates.length > 2) {
    //start and end are on different days
    dates = dates.map(function(i,node) { return node.innerHTML; });
    start = dates[2] +" "+ dates[3];
    end = dates[5] +" "+ dates[6];
  } else if (dates.length==1 || dates.length==2) {
    //start and end are on the same day
    var parts = dates[dates.length-1].innerHTML.split("<br>");
    var times = parts[1].split(" - ");
    start = parts[0] +" "+ times[0];
    end = parts[0] +" "+ times[1];
  } else {
    destination.after("<div style='color:red; border:3px solid gray'>Date field has too few elements: " + dates.length +"</div>");
    return;
  }
  //description += start +" to " + end; //debugging
  start = new Date(start).toISOString().replace(/-|:|\.\d\d\d/g,"");
  end = new Date(end).toISOString().replace(/-|:|\.\d\d\d/g,"");
  //location
  var location = $(sidebar[1]).find("p").html();
  //replace parts of HTML with needed info, and then clear out the map link and closing span tag
  location = location.replace(/\s*<br>/,": ").replace(/<br>/,", ").replace(/<span [^>]*>/,"").replace(/(, United States )?<a.*/,"");
  var url = "http://www.google.com/calendar/render?action=TEMPLATE"
    + "&text=" + encodeURIComponent($("header h1").text())
    + "&dates=" + encodeURIComponent(start) + "/" + encodeURIComponent(end)
    + "&location=" + encodeURIComponent(location)
    + "&trp=false&sprop=&sprop=name:";
  //description can be long, so add it last
  var description = "URL: "+ window.location +"<br><br>" + $(".story__copy").html();
  url += "&details=" + encodeURIComponent(description);
  //add button!
  var btn = "<a target='_blank' data-color='lined' "
  + "class='relative no-underline items-center br1 us-none ba b-gray-750 hover-b-gray-600 b-animate bg-transparent hover-bg-transparent gray-300 hover-gray-300 fill-gray-300 fw4  tc justify-center inline-flex lh-copy f7 pv1 ph2' "
  + "href=\""+ url +"\">Add to Google Calendar</a>";
  destination.after(btn);
  /*
<a href="http://www.google.com/calendar/render?
action=TEMPLATE
&text=[event-title]
&dates=[start-custom format='Ymd\\THi00\\Z']/[end-custom format='Ymd\\THi00\\Z']
&details=[description]
&location=[location]
&trp=false
&sprop=
&sprop=name:"
 rel="nofollow">Add to my calendar</a>
  */
}