Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

looks like X/twitter(?) broke something again #983

Open
animegrafmays opened this issue Aug 15, 2023 · 666 comments
Open

looks like X/twitter(?) broke something again #983

animegrafmays opened this issue Aug 15, 2023 · 666 comments

Comments

@animegrafmays
Copy link


8493b396fd05f26fe681a6abe9a849dc983d091fd4472a53dc3aa72547b030c4

BANKA2017 added a commit to BANKA2017/twitter-monitor-assets that referenced this issue Aug 15, 2023
@ghost
Copy link

ghost commented Aug 15, 2023

Also, the syndication api for showReplies=true does not work anymore:
https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true
but showReplies=false still works, showing the tweets ordered by like count...
https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

@beingnajib
Copy link

Yes, it is not working now. I hope the Nitter people fix this soon.

@paulamei
Copy link

paulamei commented Aug 15, 2023

Is there a online/CLI tool converting
https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk
to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

@nerra0pos
Copy link

Also, the syndication api for showReplies=true does not work anymore: https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true but showReplies=false still works, showing the tweets ordered by like count... https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

Not really. showReplies=false shows years-old content when not logged in.

@iceFbr
Copy link

iceFbr commented Aug 15, 2023

Down again...

@Dheatly23
Copy link

Also, the syndication api for showReplies=true does not work anymore: https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true but showReplies=false still works, showing the tweets ordered by like count... https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

Not really. showReplies=false shows years-old content when not logged in.

That's because in that specific example, those tweets were years ago. Look again at the like count, notice anything?

@ghost
Copy link

ghost commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

We can just search for the first { from begin and first } from end and then parse as json.
If a user has not so many tweets (500-1000) then the chance is quite good that also newer tweets are within the most popular 100.
But of course it's not a very good solution. At least, nitter should have it as a backup when nothing else works, this method can be used.

@Write
Copy link

Write commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

We can just search for the first { from begin and first } from end and then parse as json. If a user has not so many tweets (500-1000) then the chance is quite good that also newer tweets are within the most popular 100. But of course it's not a very good solution. At least, nitter should have it as a backup when nothing else works, this method can be used.

Indeed

#!/usr/bin/python3

import requests
import re
import urllib

url  = "https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk"

with urllib.request.urlopen(url) as response:
    encoding = response.info().get_param('charset', 'utf8')
    html = response.read().decode(encoding)
    result = re.search('script id="__NEXT_DATA__" type="application\/json">([^>]*)<\/script>', html)[1]

    print(result)

@paulamei
Copy link

paulamei commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

@Write
Copy link

Write commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

Not sure I understand ? It expose far more informations than needed and it does expose the date and all

Here's an example for one tweet only :

 {
            "type": "tweet",
            "entry_id": "tweet-1519480761749016577",
            "sort_index": "1691455400412446720",
            "content": {
              "tweet": {
                "id": 0,
                "location": "",
                "conversation_id_str": "1519480761749016577",
                "created_at": "Thu Apr 28 00:56:58 +0000 2022",
                "display_text_range": [
                  0,
                  52
                ],
                "entities": {
                  "user_mentions": [],
                  "urls": [],
                  "hashtags": [],
                  "symbols": [],
                  "media": []
                },
                "favorite_count": 4600599,
                "favorited": false,
                "full_text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "id_str": "1519480761749016577",
                "lang": "en",
                "permalink": "/elonmusk/status/1519480761749016577",
                "possibly_sensitive": false,
                "quote_count": 171975,
                "reply_count": 187438,
                "retweet_count": 649833,
                "retweeted": false,
                "text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "user": {
                  "blocking": false,
                  "created_at": "Tue Jun 02 20:12:29 +0000 2009",
                  "default_profile": false,
                  "default_profile_image": false,
                  "description": "Blades of Glory",
                  "entities": {
                    "description": {
                      "urls": []
                    },
                    "url": {}
                  },
                  "fast_followers_count": 0,
                  "favourites_count": 30569,
                  "follow_request_sent": false,
                  "followed_by": false,
                  "followers_count": 153112066,
                  "following": false,
                  "friends_count": 410,
                  "has_custom_timelines": false,
                  "highlightedLabel": {
                    "badge": {
                      "url": "https://pbs.twimg.com/profile_images/1683899100922511378/5lY42eHs_bigger.jpg"
                    },
                    "description": "X",
                    "userLabelType": "BusinessLabel",
                    "userLabelDisplayType": "Badge"
                  },
                  "id": 0,
                  "id_str": "44196397",
                  "is_translator": false,
                  "listed_count": 126597,
                  "location": "𝕏Ð",
                  "media_count": 1659,
                  "name": "Elon Musk",
                  "normal_followers_count": 153112066,
                  "notifications": false,
                  "profile_banner_url": "https://pbs.twimg.com/profile_banners/44196397/1690621312",
                  "profile_image_url_https": "https://pbs.twimg.com/profile_images/1683325380441128960/yRsRRjGO_normal.jpg",
                  "protected": false,
                  "screen_name": "elonmusk",
                  "show_all_inline_media": false,
                  "statuses_count": 29441,
                  "time_zone": "",
                  "translator_type": "none",
                  "url": "",
                  "utc_offset": 0,
                  "verified": false,
                  "withheld_in_countries": [],
                  "withheld_scope": "",
                  "is_blue_verified": true
                }
              }
            }
          },

EDIT : Maybe you meant a directly usable solution for an end user, and of course it's not, the snippet need to be adapted by a dev.

@paulamei
Copy link

paulamei commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

Not sure I understand ? It expose far more informations than needed and it does expose the date and all

Ok, thank you, I'll try this.

@jcmag
Copy link

jcmag commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

calling the syndication URL without being logged in twitter doesn't retrieve the most recent tweets. If I call this url in postman, I retrieve 100 tweets from 10/19/2018 to 07/31/2023; no tweets from august...

@null-routed
Copy link

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

calling the syndication URL without being logged in twitter doesn't retrieve the most recent tweets. If I call this url in postman, I retrieve 100 tweets from 10/19/2018 to 07/31/2023; no tweets from august...

It retrieves the tweets with the highest like count from that user, which doesnt sound good if your goal is retrieving the most recent tweets, as there's no guarantee new tweets will make it to the top 100 tweets from that user. And even if they did, it might take a considerable amount of time

@yuv418
Copy link

yuv418 commented Aug 15, 2023

I've noticed that for smaller accounts that have less than 100 tweets, that syndication URL does not load any tweets.

@nerra0pos
Copy link

Also, the syndication api for showReplies=true does not work anymore: https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true but showReplies=false still works, showing the tweets ordered by like count... https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

Not really. showReplies=false shows years-old content when not logged in.

That's because in that specific example, those tweets were years ago. Look again at the like count, notice anything?

No. That is the case for all big accounts. I am interested in the most recent Tweets and this approach will lead to nothing.

@kpopdev
Copy link

kpopdev commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

Not sure I understand ? It expose far more informations than needed and it does expose the date and all

Here's an example for one tweet only :

 {
            "type": "tweet",
            "entry_id": "tweet-1519480761749016577",
            "sort_index": "1691455400412446720",
            "content": {
              "tweet": {
                "id": 0,
                "location": "",
                "conversation_id_str": "1519480761749016577",
                "created_at": "Thu Apr 28 00:56:58 +0000 2022",
                "display_text_range": [
                  0,
                  52
                ],
                "entities": {
                  "user_mentions": [],
                  "urls": [],
                  "hashtags": [],
                  "symbols": [],
                  "media": []
                },
                "favorite_count": 4600599,
                "favorited": false,
                "full_text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "id_str": "1519480761749016577",
                "lang": "en",
                "permalink": "/elonmusk/status/1519480761749016577",
                "possibly_sensitive": false,
                "quote_count": 171975,
                "reply_count": 187438,
                "retweet_count": 649833,
                "retweeted": false,
                "text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "user": {
                  "blocking": false,
                  "created_at": "Tue Jun 02 20:12:29 +0000 2009",
                  "default_profile": false,
                  "default_profile_image": false,
                  "description": "Blades of Glory",
                  "entities": {
                    "description": {
                      "urls": []
                    },
                    "url": {}
                  },
                  "fast_followers_count": 0,
                  "favourites_count": 30569,
                  "follow_request_sent": false,
                  "followed_by": false,
                  "followers_count": 153112066,
                  "following": false,
                  "friends_count": 410,
                  "has_custom_timelines": false,
                  "highlightedLabel": {
                    "badge": {
                      "url": "https://pbs.twimg.com/profile_images/1683899100922511378/5lY42eHs_bigger.jpg"
                    },
                    "description": "X",
                    "userLabelType": "BusinessLabel",
                    "userLabelDisplayType": "Badge"
                  },
                  "id": 0,
                  "id_str": "44196397",
                  "is_translator": false,
                  "listed_count": 126597,
                  "location": "𝕏Ð",
                  "media_count": 1659,
                  "name": "Elon Musk",
                  "normal_followers_count": 153112066,
                  "notifications": false,
                  "profile_banner_url": "https://pbs.twimg.com/profile_banners/44196397/1690621312",
                  "profile_image_url_https": "https://pbs.twimg.com/profile_images/1683325380441128960/yRsRRjGO_normal.jpg",
                  "protected": false,
                  "screen_name": "elonmusk",
                  "show_all_inline_media": false,
                  "statuses_count": 29441,
                  "time_zone": "",
                  "translator_type": "none",
                  "url": "",
                  "utc_offset": 0,
                  "verified": false,
                  "withheld_in_countries": [],
                  "withheld_scope": "",
                  "is_blue_verified": true
                }
              }
            }
          },

EDIT : Maybe you meant a directly usable solution for an end user, and of course it's not, the snippet need to be adapted by a dev.

im using this for my bot and it working fine with cookies and headers.

@intuser
Copy link

intuser commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

calling the syndication URL without being logged in twitter doesn't retrieve the most recent tweets. If I call this url in postman, I retrieve 100 tweets from 10/19/2018 to 07/31/2023; no tweets from august...

Yes. And there is at least one tweet from August with more likes (>807K) than some older tweets which are included (e.g. <680K).

@Mr-Freewan
Copy link

is there any forecast for solving this problem?

@ghost
Copy link

ghost commented Aug 15, 2023

Looks like https://nitter.privacydev.net/ is working

@zedeus
Copy link
Owner

zedeus commented Aug 15, 2023

That one is a fork which uses account credentials. See #830

@ghost
Copy link

ghost commented Aug 15, 2023

I am aware but couldn't nitter implement a system that aurora uses with lots of accounts that rotate per user?

@ghost
Copy link

ghost commented Aug 15, 2023

I am aware but couldn't nitter implement a system that aurora uses with lots of accounts that rotate per user?

That's hard to maintain and simple for twitter to ban by just filtering "if number of accounts per IP > SOME_CONSTANT: ban all of them"

@ghost
Copy link

ghost commented Aug 15, 2023

Looks like https://nitter.privacydev.net/ is working

User feeds not working on this

@dawnerd
Copy link

dawnerd commented Aug 15, 2023

I switched to the privacydevel fork, credentials in but its still 404ing the same endpoint upstream is having problems with

@intuser
Copy link

intuser commented Aug 15, 2023

Strange. privacydev (without credentials) works more or less for @ElonMusk, but not for other users like for instance @BarackObama.

@animegrafmays
Copy link
Author

fellas, looks like twitter backpedaled something. instances on commits from back last August (before the guest account branch) are working fine

https://t.com.sb/dominickmatthew/status/1802031639792632297#m

4b28bd46a63024f8a942a41abfbb6dac82b9d63e6f1db68168a80abf808d7e3a

@animegrafmays
Copy link
Author

animegrafmays commented Jun 16, 2024

can confirm, I just rolled fresh deployment of d7ca353 with no guest accounts and it is working. I will have my users use this instance and see wat kind of limitations they've imposed and report back

https://nitter.nerv.st

search doesn't work, media tab doesn't load but going to specific users timelines, viewing their threads/comments are all fine.

edit: seems like they've reverted it again {"errors":[{"message":"Bad Authentication data","code":215}]}

@KingCh1ll
Copy link

funny timing, I was also looking into why my code from a year ago was suddenly working lmfao

@animegrafmays
Copy link
Author

Does this mean Nitter is back?

i can't claim to know what they were or are doing, but i was able to spawn a pre-guest account branch version of nitter and have it work reliably. here's hoping maybe they fully reverse their choice but at this time nitter is still "dead"

@cmj
Copy link

cmj commented Jun 16, 2024

Looks like they switched back on the old v1.1 timeline endpoint? It's working on a bunch of old instances right now...

# Latest tweet from NASA example:
curl -s "https://api.twitter.com/1.1/timeline/user.json?id=11348282&count=1" -H "Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFQODgEAAAAAVHTp76lzh3rFzcHbmHVvQxYYpTw%3DckAlMINMjmCwxUcaXbAN4XqJVdgMJaHqNOFgPMK0zN1qLqLQCF" | jq

@sclerometer
Copy link

sclerometer commented Jun 19, 2024

it looks like they fucked up something again. my old instance, running 2023.08.08-d7ca353, suddenly started working again.

@animegrafmays
Copy link
Author

Looks like they switched back on the old v1.1 timeline endpoint? It's working on a bunch of old instances right now...

# Latest tweet from NASA example:
curl -s "https://api.twitter.com/1.1/timeline/user.json?id=11348282&count=1" -H "Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFQODgEAAAAAVHTp76lzh3rFzcHbmHVvQxYYpTw%3DckAlMINMjmCwxUcaXbAN4XqJVdgMJaHqNOFgPMK0zN1qLqLQCF" | jq

this is definitely what's happened, they've turned it on and off randomly over the past several days so i was hesitant to comment. i don't want to speculate but I also don't believe they'd accidentally enable it again. bait, maybe?

@Yetangitu
Copy link

Yetangitu commented Jun 20, 2024

Now 'all' that needs to be done is to get video playback working again. TwiXXer videos can be played using 'any' media player, e.g.

mpv 'https://video.twimg.com/ext_tw_video/1800580469764833280/pu/pl/avc1/854x480/7DKqLwCEvmUiVj84.m3u8'

...shows you some knuckleheaded adherents of the climate doom cult putting their tribal mark on the Stonehenge monument. The solution should be fairly simple, I might even have a look at it myself once times arrives.

@canbringyouback
Copy link

...shows you some knuckleheaded adherents of the climate doom cult putting their tribal mark on the Stonehenge monument.

There is no need to mocking people's irrational action to a grim future.

@ImTheDeveloper
Copy link

Looks like v1.1 API opening up was temporary
https://status.d420.de/

Most instances are back to being down.

@nukeop
Copy link

nukeop commented Jun 24, 2024

Now 'all' that needs to be done is to get video playback working again. TwiXXer videos can be played using 'any' media player, e.g.

mpv 'https://video.twimg.com/ext_tw_video/1800580469764833280/pu/pl/avc1/854x480/7DKqLwCEvmUiVj84.m3u8'

...shows you some knuckleheaded adherents of the climate doom cult putting their tribal mark on the Stonehenge monument. The solution should be fairly simple, I might even have a look at it myself once times arrives.

All this great stuff I'm missing because I'm not on Twitter...

@Yetangitu
Copy link

...shows you some knuckleheaded adherents of the climate doom cult putting their tribal mark on the Stonehenge monument.

There is no need to mocking people's irrational action to a grim future.

<rant class='off-topic' intensity='sizzling'>

The future is quite bright as long as groups like JSO/XR (UK), Letzte Generation (Germany), Återställ Våtmarken (Sweden) and similar cookie-cutter activist collectivists are held in check. These are doom cults which, in contrast to the doom preachers of yore with their sandwich signs 'The End is Nigh, Repent!' who only rang their bells and shouted a bit use destructive tactics to proclaim their quasi-religious zeal. They do not help whatever cause they claim to adhere to, if anything they achieve the opposite. If you believe in the climate scare - which I do not - and want society to move away from fossil fuels - which I do, just not for those reasons - you should not root for these groups.

As to that 'grim future', do you have children? Do you think it a good idea to tell them they won't live to reach the age where they might have children themselves? Read up on how children react to that type of rhetoric, especially younger children. They actually believe it word for word, abject nonsense though it is. What a way to portray, nay destroy their future.

So yes, call those numbskulls for what they are.

</rant>

@canbringyouback
Copy link

If you believe in the climate scare - which I do not -

</rant>

I take this as you also don't believe in modern medicine(which use even worse methodology than those climate "scare") and never go to hospital.

Which is fine by me. Keep going. You are doing good for your children.

@cmj
Copy link

cmj commented Jun 25, 2024

Keep this on topic, please.

@ImTheDeveloper I've been watching this over the past 10 days. It seems all the endpoints were flipped on by accident last weekend after they realized the still left the v1.1 likes rest endpoint running since ... always.

For about a week (until Friday the 21st) they had all timelines open and various other endpoints that enabled old Nitter to operate.

My observations from this: https://gist.github.com/cmj/bdadb2c324e2022fffb2cf2ca0c3e7b8
See: https://github.com/BANKA2017/twitter-monitor-assets/tree/master/rate_limit

@jeveloper
Copy link

Twitter's fault for not providing an API for this. There's nothing wrong with scraping.

Plenty wrong with it. Most won't admit that they use scarped data, that's one thing wrong.
Asking is an act of respect.

@nukeop
Copy link

nukeop commented Aug 7, 2024

Asking is an act of respect.

I don't respect twitter

@jeveloper
Copy link

Asking is an act of respect.

I don't respect twitter

Thank you for your personal opinion. I am neutral to Twitter and don't have an attachment to what it was or may have been.
Now when you say , I don't respect twitter, aren't you just in the deficit? Shouldn't they say I don't respect nukeop or their work.

You're practicing the same attitude these tech companies you love to hate.

perhaps I am wrong and am supposed to act out in some way, but I'm not attached to it, I don't want to work for them, avoiding tech work that has anything to do with predatory practices (yes I do and will lose on job opportunities)

@nukeop
Copy link

nukeop commented Aug 8, 2024

I just want to scrape whatever I want and they should be obliged by law to allow me and others to do it.

@jeveloper
Copy link

I just want to scrape whatever I want and they should be obliged by law to allow me and others to do it.

You now fully sound like a child, this isn't judgement against children at all and not a judgement against adults that chose not to process their issues within. You are or might be a talented engineer, but you bring your unprocessed with you.

If we decide that X/twi/whatever is running an unethical platform with unethical policies, we don't need to act out. maturity damn it

@jeveloper
Copy link

@lukefromdc Hey Luke,
When was the last time you've donated or supported x.org?
Go ahead and organize a bunch of people, take time , take a year and figure out seeing Musk.
You have all the choices to bring up an issue.
We were talking about X , not elon musk (don't care about specific individual) and their product.

I have a feeling you have a difficulty staying on topic (so very common now, I'm guilty too at times). Forget Oracle and are you a common person directly affected by Oracle? I met James Gosling back in 2005 sun conference. I'm sure he wasn't happy about Oracle but continued his craft. Continue your craft or volunteer.

all that being said, I have no negative feelings toward anyone

@animegrafmays
Copy link
Author

this conversation is only tangentially related to nitter, can you stop shitting up our email inboxes?

@jeveloper
Copy link

Sorry about this @animegrafmays. Stopped

@RunlevelConsulting
Copy link

RunlevelConsulting commented Aug 19, 2024

Now that the moronic-talk is over. Questions about Nitter, specifically with regards to the regular accounts version.

For those that don't know, the guest_accounts version used 2 curl commands to generate temporary accounts, however there was recently a fork (which I can't find right now) that used real accounts instead.

  1. Can someone point me to the repository? It's lost under all the irrelevant talk
  2. Still working?
  3. Does it only take 1 account or is it like guest_accounts where you could add multiple credentials (i.e - Multiple real accounts)
  4. Any info on rate limits? Presumably it's the same rate limit as if you were using Twitter normally, e.g. If you scroll really fast for a while through someone's profile, it'll eventually fai and say it can't load anymore, I always assumed this was a rate limit.

Any info helpful, thank you!

@unixfox
Copy link
Contributor

unixfox commented Aug 19, 2024

@RunlevelConsulting literally the 7th result after typing "nitter" in the github search: https://github.com/sekai-soft/guide-nitter-self-hosting

@psegovias
Copy link

out of nowhere my instance started working again, anyone else?

@Yetangitu
Copy link

Mine never stopped working (except for video, that has been broken for a long time) but I'm using it with a real account, would you happen to have it configured with some of those as well?

@psegovias
Copy link

Yes, I'm working with some real accounts, but I remember that stopped working too, I used my own instance for scraping, now I migrated everything to a new system, I'm glad that nitter is still working.

Repository owner deleted a comment from shagunsharma6677 Sep 28, 2024
Repository owner deleted a comment from Bleach-pixel Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests