? Editing: Post:21.body Save Delete Cancel
Initial sync in progress...

Newest topics

Follow in NewsfeedFollowing
+ Start new topic
Loading...
stickied

Title

Body
^1 ^2 added ━ started by user_name
More topics

 

Follow in NewsfeedFollowing

Импорт сообщений из Twitter'а

Отчасти из-за темы Flatfile-форума, отчасти как раз для Infonesy.

У Twitter есть проблема — прямой запрос к списку постов лимитирован 3200 твитами. Для того, кто пишет недавно и немного, это не проблема. А вот я обломался. Сейчас что-то около 4900 твитов :) Вышел из положения косым способом — теперь периодически просто читаю все сообщения, как есть, в JSON и кидаю в архив. Но всё равно дофига сообщений осталась недоступными. И это не выход для тех, кто захочет импортировать собственные ленты позже :)

Никто не сталкивался с решением проблемы? Ничего вменяемого нагуглить не получилось. Есть какие-то кривые способы через поиск, но там тоже не всё находится.

^1 ^2 balancer73 posted on May 07, 2018
Please sign innew comment
Sign in as...
Submit comment
You are running out of your allowed space, please contact the site's admin at unknown to raise your limit.
user_nameadded ^1 ^2
Reply
Body
x86128on May 13, 2018 ^1 ^2
Reply

Вот такой мой код, надо еще хождение по всем твитам сделать и ratelimit-ы учитывать.

req = require 'request'
fs = require 'fs'


username = 'x86128'
keys = JSON.parse fs.readFileSync 'keys.json'
auth = Buffer.from("#{keys.key}:#{keys.secret}").toString('base64')

get_auth_token = (keys, cb) ->

    opts =
        url: 'https://api.twitter.com/oauth2/token'
        headers:
            'Authorization': "Basic #{Buffer.from("#{keys.key}:#{keys.secret}").toString('base64')}"
        form:
            grant_type: 'client_credentials'

    req.post opts, (err, resp, body) =>

        if not err
            token = JSON.parse body
            cb(token)

get_twits = (token, cb) ->

    opts =
        url: 'https://api.twitter.com/1.1/statuses/user_timeline.json'
        qs:
            exclude_replies: true,
            screen_name: username,
            tweet_mode: 'extended'
        headers:
            'Authorization' : "Bearer #{token.access_token}"

    req.get opts, (err,res,body) =>

        if not err
            cb(JSON.parse body)

get_auth_token keys, (token) ->

    get_twits token, (twits) ->

        console.log "| ID | DATE | TEXT |"
        console.log "|---|---|---|"
        for t in twits
            console.log '| ',t.id_str,'| ', t.created_at,'| ', t.full_text, ' |'

В файл keys.json положить ключи от API твитора.

x86128on May 13, 2018 ^1 ^2
Reply

balancer73: Вот у него как раз и лимит :-/ [...]

Да я там дальше продвинулся. Просто сюда не написал.

tweet_mode=extended + надо после получения ответа вычислять max_id и если следующий запрос не дал результата, либо вернул один твит с этим max_id то значит их больше нет.

Ссылки даёт прямые на картинки и видео, которые скачиваются нормально без авторизации.

balancer73on May 13, 2018 ^1 ^2
Reply

x86128: Через инструмент twurl можно обращаться к API.

Вот у него как раз и лимит :-/

Еще там подлянка, что длинные твиты обезаны в ответе. :(

tweet_mode=extended попробуй.

x86128on May 10, 2018 ^1 ^2
Reply

Еще там подлянка, что длинные твиты обезаны в ответе. :(

x86128on May 10, 2018 ^1 ^2
Reply

Через инструмент twurl можно обращаться к API.

Но у меня твитов мало

twurl /1.1/statuses/user_timeline.json

Загрузил всю мою ленту с прямыми ссылками на картинки и видео, которые доступны без регистрации.

x86128on May 10, 2018 ^1 ^2
Reply

Дефолтный экспорт через профиль пользователя тоже ограничен?
Тут вот в самом низу https://twitter.com/settings/your_twitter_data "Request your data" правда там с картинками беда. Прямых ссылок не дают, но возможно в API есть что то для этого. Пока не смотрел.

This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More