You don't need all of this. All what you need is to request your data from twitter (Your Tweet archive
> https://twitter.com/settings/account). Iterate through the csv file and use tweet_id to unlike, remove or do what you want through their Twitter API.
Source: I have done it before, and it took less time/work than what you have stated.
When you say "all of this", that's only true for the browser-scraping part. You still need to use the API's CreateFavorite and DestroyFavorite calls on old tweets.
(As discussed, purely calling DestroyFavorite won't work on Tweets outside the 3200-tweet-capped API-accessible data store).
With the exception of the data retrieval method, the OP tried this, and suggests that simply having the tweet_id is not enough, if the tweet it corresponds to happens to be old enough (or something) to not be accessible by the API.
I did exactly this a while ago (before deleting my Twitter account for good) and with the id extracted from the downloaded CSV I could delete everything. Perhaps they've changed policies recently.
I wrote a couple of Python scripts to keep your timeline tidy (delete everything from the beginning, then trim and leave only the last N): https://github.com/rinze/obliterate_tweets
It seems like it should be easy for that API to provide access to take action on tweets beyond the 3200 threshold, by passing it along to a rate-limited task queue. I imagine there’s an incentive to not provide hot access to old activity data due to infrastructure constraints, but if you just responded HTTP 202 and batched them all later, it’d be gentle enough on the colder shards.
Honestly they were probably too developer-friendly in the past. What other social network gives such comprehensive access via API that you can literally replicate the entire app in a third-party service? I'm not sure why any startup would allow third parties to make an end-run around their entire product.
The real value of a social network is in the people using it - whether they use a third-party client doesn’t change anything in this regard. If anything, having third-parties making free/cheap clients for you is actually a bonus.
Make API access paid. Most of your users would switch to the official clients and see your ads. The few who wouldn’t click on your ads anyway will keep using the third-party client. Everyone ends up happy as a result.
They changed their attitude significantly. The iPhone App Store had been out for nearly three years before they released an official app (via acquiring a third party one), as they just kept telling people to use one of the third party apps. They didn't want to do the work.
Twitter (and their API) is horribly broken and inconsistent.
There is twint [0], which bypasses the API and just scrapes their website to circumvent API limitations.
The wrong number of favorites could be cached and it will go a way after a day or two, or it might be favorites on Tweets you can't see (because you're blocked, or the account is private, or the Tweet/account has been deleted).
As __bee said in another comment, you can request your Tweet archive and get the Tweet IDs from the CSV (I've seen a handful of Tweets of mine that were not in the CSV, but those are very rare). At least for deleting Tweets, there is no rate limit. Twitter also won't show your own Retweets when the original Tweet is no longer visible to you (although they might be included in the CSV) and made it impossible to interact with those. It used to be possible to delete Retweets if you somehow got its ID, but I think this has been disabled as well.
If you want to play around with the API but don't want to register your phone number and an application at Twitter, you can use tools such as the "t" cli [1] or the "twython" library [2] with any of these publicly known API keys [3].
If you're doing all the browser scraping, wouldn't it have been easier to just automate your browser clicking the delete/unlike button itself? I've done this in the past with Selenium, sometimes needing GreaseMonkey.
Source: I have done it before, and it took less time/work than what you have stated.