NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Keywords by pack name // @namespace http://tampermonkey.net/ // @version 1.5 // @description Показывает набор по названию набора // @author Flyink13 // @match https://vk.com/* // @resource apiLib https://ifx.su/~va // @grant GM_getResourceText // @copyright 2019, flyink13 (https://openuserjs.org//users/flyink13) // @license MIT // ==/UserScript== /* global Emoji, stickersKeywords, loadScript, API */ function initScript() { var checkTimer = {} var owner_id = -139052311; var graffiti_id_reg = /^-?\d+_(\d+)$/ function addKeywords() { Promise.all([ API('photos.getAll', { owner_id: owner_id, count: 200 }), API('photos.getAll', { owner_id: owner_id, count: 200, offset: 200 }), API('photos.getAlbums', { owner_id: owner_id }), API("store.getProducts", { type: "stickers", filters: "purchased", extended: 1 }) ]).then(function onPhotosLoad(photoInfo) { var photos1 = photoInfo[0].response.items; var photos2 = photoInfo[1].response.items; var keyword = []; var albums = photoInfo[2].response.items; var photos = photos1.concat(photos2).reverse(); var pack_names = photoInfo[3].response.items; var titles_by_album_id = albums.reduce(function convertToObject(prev, album) { prev[album.id] = album.title; return prev; }, {}); var graffiti_by_album_name = photos.reduce(function(prev, photo, id) { photo.album_name = titles_by_album_id[photo.album_id]; prev[photo.album_name] = prev[photo.album_name] || []; photo.text.split(',').filter(function filterIdsOnly(graffiti_id) { return graffiti_id_reg.test(graffiti_id); }).forEach(function addKeyword(graffiti_id) { graffiti_id = -graffiti_id.replace(graffiti_id_reg, "$1"); prev[photo.album_name].push(graffiti_id); }); return prev; }, {}); Object.keys(graffiti_by_album_name).forEach(function(key, id) { graffiti_by_album_name['g' + id] = graffiti_by_album_name[key]; graffiti_by_album_name['п' + id] = graffiti_by_album_name[key]; }); var stickers_by_pack_id = pack_names.reduce(function(prev, pack, id) { pack.alt_name = 's' + pack.id; pack.alt_name2 = 'ы' + pack.id; prev[pack.title] = prev[pack.title] || []; prev[pack.alt_name] = prev[pack.alt_name] || []; prev[pack.alt_name2] = prev[pack.alt_name2] || []; if (!Array.isArray(pack.stickers.sticker_ids)) { console.warn('Bad pack items', pack.id, pack.title); return prev; } pack.stickers.sticker_ids.forEach(function addKeyword(sticker_id) { if (!/ничоси/i.test(pack.title)) { prev[pack.title].push(sticker_id); } prev[pack.alt_name].push(sticker_id); prev[pack.alt_name2].push(sticker_id); }); return prev; }, {}); var ids_by_names = Object.assign(stickers_by_pack_id, graffiti_by_album_name); var newKeywords = Object.keys(ids_by_names).map(function convertToKeywords(keyword) { return { words: [keyword.toLocaleLowerCase()], user_stickers: ids_by_names[keyword] }; }); Emoji.userDictionary = Emoji.userDictionary.concat(newKeywords); delete stickersKeywords.ske; Emoji.addUserKeywords(); }).catch(function(error) { console.error('gpk', error); debugger; }); } function checkSkeInit() { if (checkTimer.ttl < Date.now()) clearInterval(checkTimer.timer); if (typeof Emoji === 'undefined') return; if (typeof loadScript === 'undefined') return; if (typeof stickersKeywords === 'undefined') return; if (typeof Emoji.userDictionary === 'undefined') return; addKeywords(); clearInterval(checkTimer.timer); } checkTimer.ttl = Date.now() + 60e3; checkTimer.timer = setInterval(checkSkeInit, 1e3); } (function injectScript() { var script = document.createElement('script'); var code = '(' + initScript + ')();'; code += '(function(){' + (GM_getResourceText('apiLib')) + '})();'; script.appendChild(document.createTextNode(code)); (document.body || document.head || document.documentElement).appendChild(script); })();