Local Vk Downloader

Get Vk raw link without external service.

23.04.2020 itibariyledir. En son verisyonu görün.

// ==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;

function vkGet(url, callback) {
    return ajax.post(url, { _ajax: 1 }, function (e) { callback(parseJSON(e)) });
}

function getMore(href) {
    vkGet(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 checkSearch() {
    var newPeer = getPeer();
    if (newPeer && newPeer != peer) {
        getAllMedia(newPeer);
    }
}

function listenSearch() {
    window.setInterval(checkSearch, 500);
}

function getPeer() {
    var hash = window.location.search;
    var idx = hash.indexOf("peer");
    if (idx == -1) {
        return null;
    }
    var end = hash.indexOf("&", idx);
    if (end == -1) {
        end = hash.length;
    }
    return hash.substring(idx + 5, end);
}

function getMediaUrl(newPeer, section) {
    var mediaUrlBase = "/mail?act=show_medias&peer=";
    var sectionUrl = "&section=";
    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) {
    vkGet(getMediaUrl(newPeer, "videos"), function (result) {
        console.log("RESULT:", 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) {
    console.log("***********************************ALL_MEDIA************************************")
    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);
    console.log("************************************FINISH**************************************")
}

listenSearch();
start();
长期地址
遇到问题?请前往 GitHub 提 Issues,或加Q群1031348184

赞助商

Fishcpy

广告

Rainyun

注册一下就行

Rainyun

一年攒够 12 元