🏠 Home 

ImgurComment500Limit

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


Install this script?
// ==UserScript==
// @name         ImgurComment500Limit
// @namespace    http://tampermonkey.net/
// @version      0.4
// @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';
function _injectME(){
function _func(){
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);
};
};
function _waitForImgur(){
if(window.Imgur && Imgur.Caption){
console.log("Imgur is ready");
_func();
return;
}
console.log("Waiting for imgur");
setTimeout(_waitForImgur, 250); // This is pretty ugly, should use some observer instead, but i am lazy.
}
_waitForImgur();
}
var s = document.createElement('script');
s.textContent = '(' + _injectME + ')()';
console.log("Inject into", document.location, ":", s.textContent);
document.head.appendChild(s);
})();