Greasy Fork is available in English.
Get Vk raw link without external service.
当前为
// ==UserScript==
// @name Local Vk Downloader
// @namespace vkDownloadAuto
// @version 1.0.0
// @description Get Vk raw link without external service.
// @match https://m.vk.com/mail*
// ==/UserScript==
var peer = null;
console.log("HELLO WORLD");
function getMore(href) {
$.get(href, function (data) {
receiveMore(data);
});
}
function getSearchMoreHref(result) {
if (!result || !result[1]) {
return;
}
var showMore = $(".show_more", $(result[1]));
if (!showMore.length) {
return;
}
var href = showMore.attr("href");
if (!href) {
return null;
}
}
function listenHash() {
window.addEventListener("hashchange", function () {
var newPeer = getPeer();
if (newPeer != peer) {
getAllMedia(newPeer);
}
}, false);
}
function getPeer() {
var hash = window.location.hash;
var idx = hash.indexOf("peer");
if (idx == -1) {
return null;
}
return hash.substring(idx + 5, hash.indexOf("&", idx));
}
function getMediaUrl(newPeer, section) {
var mediaUrlBase = "/mail?act=show_medias&peer=";
var sectionUrl = "§ion=";
return mediaUrlBase + newPeer + sectionUrl + section;
}
function recursiveGetVideos(searchMoreLink, data, finishState) {
if (!searchMoreLink) {
finishState.videos = true;
finishSegment(data, "videos", finishState);
return;
}
}
function getVideos(newPeer, data, finishState) {
console.log("GET VIDEOS")
$.get(getMediaUrl(newPeer, "videos"), function (result) {
if (result.data) {
data.videos.concat(getVideosLinks(result.data));
}
var searchMoreLink = getSearchMoreHref(result);
recursiveGetVideos(searchMoreLink, data, finishState);
});
}
function getPhotos() {
}
function getDocs() {
}
function getAllMedia(newPeer) {
peer = newPeer;
var data = {
videos: [],
photos: [],
docs: []
}
var finishState = {
videos: false,
photos: false,
docs: false
}
getVideos(newPeer, data, finishState);
getPhotos(newPeer, data, finishState);
getDocs(newPeer, data, finishState);
}
function start() {
var newPeer = getPeer();
if (newPeer != null) {
getAllMedia(newPeer);
}
}
function finishSegment(data, segment, finishState) {
console.log(segment + ":", data[segment]);
if (finishState.videos && finishState.photos && finishState.docs) {
finish(data);
}
}
function finish(data) {
console.log(data);
}
start();