VK video download

Позволяет скачивать видео из вк, даже если это видео переслали вам сообщением из закрытой группы. Кнопка скачать появляется при нажатии правой кнопки мыши на видео

当前为 2020-06-03 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name VK video download
  3. // @namespace https://github.com/DaniilAfendulov/VK-video-dowload
  4. // @version 0.1
  5. // @description Позволяет скачивать видео из вк, даже если это видео переслали вам сообщением из закрытой группы. Кнопка скачать появляется при нажатии правой кнопки мыши на видео
  6. // @author Daniil Afendulov
  7. // @include https://vk.com/*
  8. // @include https://m.vk.com/*
  9. // @include https://pvv4.vkuservideo.net/*
  10. // ==/UserScript==
  11.  
  12.  
  13. (function() {
  14. 'use strict';
  15. // Your code here...
  16. if(window.location.hostname === "m.vk.com" && window.opener.location.hostname === "vk.com") vkm();
  17. if(window.location.hostname === "pvv4.vkuservideo.net" ) pvv4();
  18. if(window.location.hostname === "vk.com") vk();
  19. })();
  20.  
  21. function vk() {
  22. window.addEventListener('message', function(event) {
  23. if (event.source.location.hostname === "m.vk.com") {
  24. let src = event.data;
  25. alert('m.vk.com');
  26. window.location = src;
  27. return;
  28. }
  29. });
  30.  
  31. var el;
  32. var timerId = setInterval(pollDOM, 2000);
  33. function pollDOM () {
  34. console.log('tick');
  35. el = document.querySelector("#video_player > div > div.videoplayer_ui > div.videoplayer_context_menu.hidden");
  36. if (!el) {
  37. el = document.querySelector("#video_player > div > div.videoplayer_ui > div.videoplayer_context_menu");
  38. }
  39. if (el) setBtn();
  40. }
  41.  
  42.  
  43.  
  44. function setBtn() {
  45. //clearInterval(timerId);
  46. let div = document.querySelector('#tmr');
  47. if(div) return;
  48.  
  49. div = document.createElement('div');
  50. div.className = "_item";
  51. div.id = 'tmr';
  52. div.innerHTML = "скачать";
  53. div.onclick = handler;
  54. el.prepend(div);
  55. }
  56.  
  57.  
  58. function handler() {
  59. var ourl = window.location.toString();
  60. var url = ourl;
  61. url = url.replace('https://','https://m.');
  62. let index = url.indexOf('video');
  63. if(index === -1) return;
  64.  
  65. url = url.slice(0,"https://m.vk.com/".length) + url.slice(index);
  66. url = url.replace('%2F','?list=');
  67. index = url.indexOf('%2F');
  68. if(index === -1) return;
  69. url = url.slice(0,index);
  70. var win = window.open(url);
  71. }
  72. }
  73.  
  74. function vkm() {
  75. window.onload = function() {
  76. let src = window.location.pathname;
  77. console.log(src);
  78. src = '#'+src.substring(1)+" > div.VideoPage__video > video > source:nth-child(2)";
  79. console.log(src);
  80. src = document.querySelector(src).src;
  81. src = src.substring(0, src.indexOf('.mp4')+4);
  82. let win = window.opener;
  83. win.postMessage(src, '*');
  84. window.close();
  85. }
  86. }
  87.  
  88. function pvv4() {
  89. window.onload = function() {
  90. let video = document.querySelector("body > video > source");
  91. let a = document.createElement('a');
  92. a.href = video.src;
  93. a.download = 'video.mp4';
  94. a.click();
  95. window.history.back();
  96. }
  97. }