Pixiv Previewer

顯示預覽圖像(支持單幅圖像,多幅圖像,運動圖像); 下載動畫(.zip); 按收藏夾數對搜索頁進行排序(並顯示)。

< 腳本Pixiv Previewer的回應

評論:正評 - 腳本一切正常

§
發表於:2025-10-08

“排序时隐藏已关注画师作品”功能只在每次清除缓存后生效,刷新或换页就会失效,望修复
希望出一个屏蔽作者功能,或者一键收藏该作者所有作品功能,然后通过屏蔽收藏来间接实现
目前在使用“关注不喜欢的作者+排序时隐藏已关注画师作品”功能配合实现,但会影响查看想要关注作者的最新作品功能

§
發表於:2025-10-08

已自行解决“排序时隐藏已关注画师作品”功能失效问题

也完成部分屏蔽作者的功能,不过是类似于屏蔽tag的方法屏蔽userid,使用上还是有点痛苦,每次都要自行添加userid

下面是我修改的方案

解决“排序时隐藏已关注画师作品”功能失效

function getFollowingOfCurrentUser() {
    return new Promise(function (resolve, reject) {
        let user_id = '';

        try {
            user_id = dataLayer[0].user_id;
        } catch (ex) {
            iLog.e('Get user id failed.');
            resolve([]);
            return;
        }

        // show/hide
        $('#progress').text(Texts[g_language].sort_getPublicFollowing);

        // 注释掉缓存读取逻辑,每次都重新获取
        // let following = GetLocalStorage('followingOfUid-' + user_id);
        // if (following != null && following != 'null') {
        //     resolve(following);
        //     return;
        // }

        getFollowingOfType(user_id, 'show').then(function (members) {
            $('#progress').text(Texts[g_language].sort_getPrivateFollowing);
            getFollowingOfType(user_id, 'hide').then(function (members2) {
                let following = members.concat(members2);
                // 仍然保存到缓存,但不再读取(可选:如果不需要缓存可以注释掉下面这行)
                SetLocalStorage('followingOfUid-' + user_id, following);
                resolve(following);
            });
        });
    });
}

自改屏蔽作者的功能

gmcInit()修改

// 新增:根据用户ID屏蔽
hideByUserId: {
    label: Texts[g_language].setting_hideByUserId,
    type: "checkbox",
    default: false,
},
hideByUserIdRegex: {
    label: Texts[g_language].setting_hideByUserIdPlaceholder,
    type: "text",
    default: "",
},

Texts 对象修改

Texts[Lang.zh_CN] = {
    // 新增
    setting_hideByUserId: '排序时隐藏指定用户的作品',
    setting_hideByUserIdPlaceholder: '输入用户ID,如 "123456|789012",支持正则',
    // ... 其他文本
};
Texts[Lang.en_US] = {
    // 新增
    setting_hideByUserId: 'Hide artworks by user ID',
    setting_hideByUserIdPlaceholder: 'Input user ID, e.g. "123456|789012", regular expressions supported',
    // ... 其他文本
};
Texts[Lang.ru_RU] = {
    // 新增
    setting_hideByUserId: 'При сортировке, скрыть работы указанных пользователей',
    setting_hideByUserIdPlaceholder: 'Введите ID пользователя, например "123456|789012", поддерживается регулярное выражение',
    // ... 其他文本
};
Texts[Lang.ja_JP] = {
    // 新增
    setting_hideByUserId: 'ソート時に指定したユーザーの作品を非表示',
    setting_hideByUserIdPlaceholder: 'ユーザーIDを入力してください(例:"123456|789012"、正規表現対応)',
    // ... 其他文本
};

ConvertSettingsFromGMC()添加

function ConvertSettingsFromGMC() {
let settings = {
        // 新增
        'hideByUserId': GMC.get('hideByUserId'),
        'hideByUserIdRegex': GMC.get('hideByUserIdRegex'),
};

filterAndSort函数修改

let filterAndSort = function (sortType = 0) {
    return new Promise(function (resolve, reject) {

let userIdFilteredCount = 0; // 新增计数器

$(works).each(function (i, work) {
            // 新增:根据用户ID筛选
            if (g_settings.hideByUserId) {
                let userIdRegex = null;
                try {
                    if (g_settings.hideByUserIdRegex && g_settings.hideByUserIdRegex.trim() !== '') {
                        userIdRegex = new RegExp(g_settings.hideByUserIdRegex);
                    }
                } catch (e) {
                    iLog.w('Invalid hideByUserIdRegex: ' + g_settings.hideByUserIdRegex);
                }
                if (userIdRegex && userIdRegex.test(work.userId.toString())) {
                    userIdFilteredCount++;
                    return true;
                }
            }
});
}

若发现有bug,望完善

發表回覆

登入以回覆