ImgurComment500Limit

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

目前為 2023-04-05 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 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();
})();