video watch page URL

Display "https://www.youtube.com/watch?v=***********" of embedded YouTube videos.

当前为 2019-03-08 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name video watch page URL
  3. // @name:ja 埋め込み動画にURL表示
  4. // @namespace https://greasyfork.org/users/19523
  5. // @description Display "https://www.youtube.com/watch?v=***********" of embedded YouTube videos.
  6. // @description:ja ページに埋め込まれたYouTubeの動画の下に動画視聴ページのURLを付け加えます
  7. // @include *
  8. // @exclude http://www.youtube.com/*
  9. // @exclude https://www.youtube.com/*
  10. // @version 0.2.3
  11. // @grant none
  12. // ==/UserScript==
  13.  
  14.  
  15. window.addEventListener('load', function () {
  16.  
  17. var elements = document.querySelectorAll('iframe[src*="//www.youtube.com/embed/"]');
  18. for (var i = 0, element; element = elements[i]; i++) {
  19. var a = document.createElement('a');
  20. if (element.src.indexOf('videoseries') >= 0) {
  21. a.href = element.src.replace(/embed\/videoseries/, 'playlist');
  22. a.appendChild(document.createTextNode(a.href));
  23. a.style.position = 'relative';
  24. a.style.display = 'table';
  25. a.style.fontSize = 'initial';
  26. } else {
  27. a.href = element.src.split('?')[0].replace(/embed\//, 'watch?v=');
  28. a.appendChild(document.createTextNode(a.href));
  29. a.style.position = 'relative';
  30. a.style.display = 'table';
  31. a.style.fontSize = 'initial';
  32. }
  33. if (element.parentElement.children.length <= 2 && element.parentElement.parentElement) {
  34. element = element.parentElement;
  35. }
  36. element.parentElement.insertBefore(a, element.nextSibling);
  37. console.log('Detected URL: %s', elements[i].src);
  38. }
  39.  
  40. var elements = document.querySelectorAll('iframe[src*="//www.youtube-nocookie.com/embed/"]');
  41. for (var i = 0, element; element = elements[i]; i++) {
  42. var a = document.createElement('a');
  43. if (element.src.indexOf('videoseries') >= 0) {
  44. a.href = element.src.replace(/-nocookie\.com\/embed\/videoseries/, '.com/playlist');
  45. a.appendChild(document.createTextNode(a.href));
  46. a.style.position = 'relative';
  47. a.style.display = 'table';
  48. a.style.fontSize = 'initial';
  49. } else {
  50. a.href = element.src.split('?')[0].replace(/-nocookie\.com\/embed\//, '.com/watch?v=');
  51. a.appendChild(document.createTextNode(a.href));
  52. a.style.position = 'relative';
  53. a.style.display = 'table';
  54. a.style.fontSize = 'initial';
  55. }
  56. if (element.parentElement.children.length <= 2 && element.parentElement.parentElement) {
  57. element = element.parentElement;
  58. }
  59. element.parentElement.insertBefore(a, element.nextSibling);
  60. console.log('Detected URL: %s', elements[i].src);
  61. }
  62.  
  63. // Flash-embedded videos
  64. var elements = document.querySelectorAll('embed[src*="//www.youtube.com/v/"]');
  65. for (var i = 0, element; element = elements[i]; i++) {
  66. var a = document.createElement('a');
  67. a.href = element.src.split('?')[0].replace(/v\//, 'watch?v=');
  68. a.appendChild(document.createTextNode(a.href));
  69. a.style.position = 'relative';
  70. a.style.display = 'table';
  71. a.style.fontSize = 'initial';
  72. element.parentElement.insertBefore(a, element.nextSibling);
  73. console.log('Detected URL: %s', elements[i].src);
  74. }
  75.  
  76. var elements = document.querySelectorAll('embed[src*="//www.youtube-nocookie.com/v/"]');
  77. for (var i = 0, element; element = elements[i]; i++) {
  78. var a = document.createElement('a');
  79. a.href = element.src.split('?')[0].replace(/-nocookie\.com\/v\//, '.com/watch?v=');
  80. a.appendChild(document.createTextNode(a.href));
  81. a.style.position = 'relative';
  82. a.style.display = 'table';
  83. a.style.fontSize = 'initial';
  84. element.parentElement.insertBefore(a, element.nextSibling);
  85. console.log('Detected URL: %s', elements[i].src);
  86. }
  87. });