Add12306Calender

将Gmail收到的12306邮件加入日历项

  1. // ==UserScript==
  2. // @name Add12306Calender
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3.1
  5. // @description 将Gmail收到的12306邮件加入日历项
  6. // @author Formax
  7. // @match https://mail.google.com/*
  8. // @match https://gmail.com/*
  9. // @match https://www.gmail.com/*
  10. // @grant none
  11. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16. jQuery(document).ready(function () {
  17.  
  18. $(document).keydown(function(e){
  19. if((e.which == 49||e.which==16) && e.ctrlKey && e.shiftKey){
  20. var innerContent = $('.Bu')[0].innerHTML;
  21. var contt=new Object();
  22. try{
  23. contt = decripCR(innerContent,contt);
  24. var addUrl="https://www.google.com/calendar/render?action=TEMPLATE&text="+contt.title+"&dates="+contt.start+"/"+contt.end+"&details="+contt.remarkd+"&location="+contt.locat+"&sf=true&output=xml&ctz=Asia/Shanghai";
  25. window.open(addUrl);
  26. }
  27. catch(e)
  28. {
  29. console.log(e);
  30. }
  31. }
  32. });
  33.  
  34. var decripCR = (function(innerHtm,calend){
  35. debugger;
  36. var numMatch = innerHtm.match(/EC\d{8}/g);
  37. var infoMatch = innerHtm.match(/1\..{20,100}检票口.{1,10}/g);
  38. if(infoMatch==null){
  39. infoMatch = innerHtm.match(/1\..{20,100}候车地点.{1,10}/g);
  40. }
  41. if(infoMatch==null){
  42. infoMatch = innerHtm.match(/1\..{20,100}票价.{1,50}/g);
  43. }
  44. var infoContents =infoMatch[0].split(',');
  45. if(infoContents.length==1){
  46. var infoContents =infoMatch[0].split(',');
  47. }
  48. var timeContents =infoContents[1].split('日');
  49. var mydate=new Date();
  50. var newdate;
  51. if(timeContents[0].length>5){
  52. var timeString = (timeContents[0].replace('年','-').replace('月','-')+" "+timeContents[1].split(':')[0]+":00").match(/\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2} \d{1,2}:\d{1,2}/);
  53. newdate = new Date(timeString[0]);
  54. }
  55. else{
  56. var stdate=timeContents[0].split('月');
  57. newdate= new Date(mydate.getFullYear(),stdate[0]-1,stdate[1],timeContents[1].split(':')[0]);
  58. }
  59. if(newdate<mydate){
  60. newdate.setFullYear(mydate.getFullYear()+1,newdate.getMonth(),newdate.getDate());
  61. }
  62.  
  63. calend.start=newdate.getFullYear()+("0" + (newdate.getMonth()+1)).slice(-2)+("0" + newdate.getDate()).slice(-2)+"T"+("0" + newdate.getHours()).slice(-2)+"0000";
  64. var enddate = new Date(newdate);
  65. enddate.setHours(enddate.getHours()+1);
  66. calend.end = enddate.getFullYear()+("0" + (enddate.getMonth()+1)).slice(-2)+("0" + enddate.getDate()).slice(-2)+"T"+("0" + enddate.getHours()).slice(-2)+"0000";
  67. calend.locat = infoContents[2].split('—')[0]+"火车站";
  68. calend.title = infoContents[3];
  69. calend.remarkd ="订单号:"+numMatch[0]+", 座位号:"+infoContents[4]+infoContents[7];
  70. return calend;
  71. });
  72. });
  73. })();