Skip to content

Instantly share code, notes, and snippets.

@Prof9
Last active February 1, 2024 07:02
Show Gist options
  • Save Prof9/c16fc4997e0ef5b22a15c43edd7f5f49 to your computer and use it in GitHub Desktop.
Save Prof9/c16fc4997e0ef5b22a15c43edd7f5f49 to your computer and use it in GitHub Desktop.
THIS SCRIPT NO LONGER WORKS! Twitter has rolled out a fix for the web client hack. (Original text: Force enable cramming (280 character tweets) on Twitter. Use TamperMonkey. NOTE: Stops working when you switch pages, refresh to fix.)

As of 7 November 2017 everyone has access to 280 characters in supported clients, so you no longer need this script!

// ==UserScript==
// @name Twitter Cramming
// @description Force enable cramming (280 character tweets) on Twitter
// @author Prof. 9
// @version 0.1
// @match https://twitter.com/*
// @run-at document-idle
// @namespace prof9.twittercramming
// ==/UserScript==
var initDataInput = document.getElementById('init-data');
var initData = JSON.parse(initDataInput.value);
initData.deciders.cramming_feature_enabled = true;
initData.deciders.cramming_ui_enabled = true;
initDataInput.value = JSON.stringify(initData);
// This is free and unencumbered software released into the public domain.
//
// Anyone is free to copy, modify, publish, use, compile, sell, or
// distribute this software, either in source code form or as a compiled
// binary, for any purpose, commercial or non-commercial, and by any
// means.
//
// In jurisdictions that recognize copyright laws, the author or authors
// of this software dedicate any and all copyright interest in the
// software to the public domain. We make this dedication for the benefit
// of the public at large and to the detriment of our heirs and
// successors. We intend this dedication to be an overt act of
// relinquishment in perpetuity of all present and future rights to this
// software under copyright law.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
// For more information, please refer to <http://unlicense.org>
Copy link

ghost commented Sep 27, 2017

doesn't work here (France)

edit : works after clearing cache

@willicab
Copy link

willicab commented Sep 27, 2017

not work for me, in web console appear this error

ERROR: Execution of script 'Twitter Cramming' failed! initDataInput is null

I'm using Firefox Nightly 58.0a1

@if1live
Copy link

if1live commented Sep 27, 2017

In CJK (Chinese, Japanese, Korean) and other language, cannot tweet long text.
So I made a CJK patch.
https://gist.github.com/if1live/bc4750c0d4585789b66d899129ecb9ad

Cause

  • code 0~4351 : weight 100
  • code 4352~65535 : weight 200

ab is in code 0 ~ 4351, total weight is 100 x 2 = 200.
is in code 4352 ~ 65535, total weight is 200 x 1 = 200.
double weight means half length.

https://abs.twimg.com/k/en/0.commons.en.e6c61ddd975ec97b1ee5.js

, r = o({}, a, {
version: "cramming",
max_tweet_length: 280,
default_weight: 200,
    ranges: [{
        start: 0,
        end: 4351,
        weight: 100
    }, {
        start: 4352,
        end: 65535,
        weight: 200
    }]
})

Solution

Access above config(TwitterTextOptions), then modify weight 200 to 100.

@hikari-no-yume
Copy link

NOW I CAN POST 280-CHARACTER TWEETS IN JAPANESE

JACK KNOWS NOT WHAT POWER HE HAS HANDED ME

MUAHAHAHAHA

@hinaloe
Copy link

hinaloe commented Sep 27, 2017

emoji is not in their char code because it based on 2 or more chars (surrogate-pair).

Ex: 😇 is 55357 + 56839
And some japanese kanji has same issue (𠮷、𩸽、and some……)

but Twitter API count that as 1 char. with default_weight: 100, it will be fixed.

https://gist.github.com/hinaloe/c2381b1370371f5d9a4bb2be190f9c66

@Shugabuga
Copy link

Shugabuga commented Sep 27, 2017

It does work as intended, but the character counter seems to be broken.

Either way, thanks for making this simple to use!

@erydactyl
Copy link

@colemickens, I have just put the TweetDeck version in a Userscript if that is any use. It is a bit messy/hacky but it works. https://gist.github.com/erydactyl/8ac7fe290a5ea72706cc1b77d15163d9

@Raw3a2011
Copy link

I want to large it 280
https://goo.gl/Yms5au

@LongHairedHacker
Copy link

Hi,
I've just hacked a version that survives switching pages.
No more refreshing,this is 2017 after all.
https://gist.github.com/LongHairedHacker/2b4e2a526f02906acbafe39229176b08
Feel free to integrate that here.

@joridiculous
Copy link

Cant get either of these to work :(

Copy link

ghost commented Sep 27, 2017

doesn't work anymore :/

@plasma-node
Copy link

Broken

@Prof9
Copy link
Author

Prof9 commented Sep 27, 2017

Yep, Twitter rolled out a fix. You'll have to try one of the other methods out there to get your tweet on.

Here are some that work for TweetDeck:

@Nodws
Copy link

Nodws commented Sep 27, 2017

Damn snitches

@DonkeyKongJr
Copy link

Are there any hacks for Tweetbot?

@bloggingcurb
Copy link

nothing here works... :-(( still at 140

@SnowyWorld2
Copy link

off

@barripdmx
Copy link

Not work

Copy link

ghost commented Oct 1, 2017

wait, so is this working

@CollinChaffin
Copy link

Frustrated that like most I was not blessed with the new 280 char tweeting, and the "fixes" out there don't work anymore, I decided to fix :) As as a fully automatic #Greasemonkey #Tampermonkey script here: http://bit.ly/unlock280 Get your #280tweets on while you can! :)

Kickass

@kozjegyzo
Copy link

@CollinChaffin Thanks Man, this works like a charm!

@HuproZ
Copy link

HuproZ commented Oct 4, 2017

@CollinChaffin You, sir, are the man of the situation.

@NDBellisario
Copy link

@CollinChaffin Thank you, You sir are awesome! 👍

@CptSpaceToaster
Copy link

Looks like the party's over

@patrickcoombe
Copy link

No longer working - Like us, The good folks at @twitter appear to have found a workround for this. It was fun while it lasted :)

@tradhakrishnamurthy
Copy link

sir, are the man of the situation.

@mohamed1234p
Copy link

12

@smbz20
Copy link

smbz20 commented May 8, 2023

TD.services.TwitterClient.prototype.makeTwitterCall=function(b,e,f,g,c,d,h){c=c||function(){};d=d||function(){};b=this.request(b,{method:f,params:Object.assign(e,{weighted_character_count:!0}),processor:g,feedType:h});return b.addCallbacks(function(a){c(a.data)},function(a){d(a.req,"",a.msg,a.req.errors)}),b};
twttrTxt=Object.assign({},twttr.txt,{isInvalidTweet:function(){return!1},getTweetLength:function(){return twttr.txt.getTweetLength.apply(this,arguments)-140}});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment