ImgurComment500Limit

Brings the 500 character limit comments to non "beta" imgur users

当前为 2023-04-05 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         ImgurComment500Limit
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Brings the 500 character limit comments to non "beta" imgur users
// @author       SleepProgger
// @match        https://imgur.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    var _func = function(){
        Imgur.Caption.Reply.defaultProps.maxLength = 500;
        var __hook_ajax = $.ajax; $.ajax = function(x){
            // The only way i found to circumvent the character limit is to use the "new" API.
            // There probably is some nicer way, but meh this works
            if(!x.url || ! x.url.startsWith("/gallery/action/caption/")){
                return __hook_ajax(x);
            }
            // Rewrite request to the "new" API format
            var nData = {};
            var s = x.url.split("/"); // JS Are you kidding me ? WHY NO RSPLIT ?
            nData.post_id = s[s.length - 1];
            nData.comment = x.data.caption;
            nData.platform = "api";
            nData.parent_id = x.data.parent_id;
            nData.has_admin_badge = false;
            x.data = JSON.stringify(nData);
            x.url = "https://api.imgur.com/comment/v1/comments?client_id=" + imgur._.apiClientId;
            x.xhrFields = { withCredentials:true };
            x.headers = {'Content-Type': 'application/vnd.imgur.v1+json'};
            // We also have to rewrite the response now which sucks
            x.dataFilter = function (r, type) {
                r = JSON.parse(r);
                var ret = {
                    success: true,
                    data: {
                        caption: {
                            id: r.id,
                            hash: r.post.id,
                            caption: r.comment,
                            author: r.account.username,
                            author_id: r.account_id,
                            ups: r.upvote_count,
                            downs: r.downvote_count,
                            best_score: 0.2, // No clue where to get this, so lets just fake it
                            points: r.point_count,
                            datetime: r.created_at.replace("T", " ").replace("Z", ""), // Do i suck at JS; or does JS suck ?
                            parent_id: r.parent_id,
                            deleted: r.deleted_at != null,
                            on_album: r.post.is_album,
                            album_cover: r.post.cover_id, // Not sure this is correct
                            title: "", // No clue. Post title this reply is on ?
                            platform: "yoMomma",
                            has_admin_badge: false, // Naw, don't have that
                        }
                    }
                };
                return JSON.stringify(ret);
            }
            return __hook_ajax(x);
        };
    };
    _func();
})();