Publisks datu interfeiss

X Feed API dokumentācija

Vienkāršs, publiski pieejams JSON API, kas nodrošina @billiejs6 X profila saglabātās publikācijas un atbildes. Dati tiek sinhronizēti no X un piegādāti no Cloudflare D1 kešatmiņas.

Pieprasījuma adrese

Galvenais lasīšanas galapunkts. Tam nav vajadzīga API atslēga.

GEThttps://x-feed.blakusprojekts.lv/api/x-feed?limit=50

API servisa apraksts · Veselības pārbaude

Lapu ielāde

Pieprasījumā vari norādīt limit (1–100; pēc noklusējuma 50). Nākamajai lapai nodod iepriekšējās atbildes nextCursor vērtību. Ieraksti tiek kārtoti pēc created_at un tweet_id dilstošā secībā; limit attiecas uz posts un replies kopējo ierakstu skaitu.

GET /api/x-feed?limit=50
GET /api/x-feed?limit=50&cursor=<nextCursor>

Atbilde satur nextCursor (null, ja nākamās lapas nav) un hasMore (vai ir vēl ieraksti). Nederīgs limit vai cursor atgriež HTTP 400.

Atbildes struktūra

Veiksmīga atbilde satur profila identifikatoru, pēdējās sinhronizācijas laiku un divus masīvus.

{
  "service": "blakusprojekts-x-feed",
  "type": "api",
  "purpose": "data-retrieval",
  "profile": "billiejs6",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "limit": 50,
  "nextCursor": "eyJjcmVhdGVkQXQiOiIyMDI2LTExLTA0VDEwOjAwOjAwLjAwMFoiLCJ0d2VldElkIjoiMTIzNDU2Nzg5MDEyMzQ1Njc4OSJ9",
  "hasMore": true,
  "posts": [
    {
      "tweet_id": "1234567890123456789",
      "kind": "post",
      "text": "Publikācijas teksts",
      "created_at": "2026-11-04T10:00:00.000Z",
      "fetched_at": "2026-11-04T12:00:00.000Z"
    }
  ],
  "replies": []
}

Datu lauki

Katrs ieraksts satur tweet_id (X ieraksta ID), kind (post vai reply), text (teksts), created_at (publicēšanas laiks) un fetched_at (lejupielādes laiks).

Izmantošanas piemēri

JavaScript pārlūkā vai Node.js

const response = await fetch(
  'https://x-feed.blakusprojekts.lv/api/x-feed?limit=50',
  { headers: { Accept: 'application/json' } }
);

if (!response.ok) throw new Error(`API kļūda: ${response.status}`);

const feed = await response.json();
console.log('Publikācijas:', feed.posts);
console.log('Atbildes:', feed.replies);

cURL

curl -H "Accept: application/json" \
  https://x-feed.blakusprojekts.lv/api/x-feed

Vienkārša ierakstu attēlošana

const list = document.querySelector('#x-posts');
feed.posts.forEach((post) => {
  const item = document.createElement('article');
  item.textContent = post.text; // textContent novērš HTML ievadīšanu
  list.append(item);
});

CORS un piekļuve

Pārlūka pieprasījumi no citām izcelsmēm ir ierobežoti līdz blakusprojekts.lv domēniem. Servera puses integrācijas var izsaukt publisko GET galapunktu tieši. CORS nav autentifikācija — tas tikai kontrolē pārlūku piekļuvi.

Kešatmiņa un ierobežojumi

Atbilde tiek kešota 5 minūtes, ar stale-while-revalidate līdz 30 minūtēm. Pašreizējais labākās piepūles limits ir 120 lasīšanas pieprasījumi minūtē uz IP vienā Worker instancē. Lielākai slodzei jāizmanto Cloudflare WAF/rate limiting.

Drošība

Publisks ir tikai lasīšanas galapunkts. Datu sinhronizācijas galapunkts ir privāts un pieprasa Bearer noslēpumu; nekad neievieto šo noslēpumu pārlūka kodā. API atbildēs ir drošības un noindeksēšanas galvenes.

Kļūdas un dokumentācija

Neveiksmīgas atbildes izmanto HTTP statusa kodus un JSON error lauku. 429 atbilde satur Retry-After. Katra JSON atbilde un Link galvene norāda uz šo dokumentāciju.

  • 401 — neatļauta piekļuve iekšējam refresh galapunktam
  • 404 — galapunkts nav atrasts
  • 405 — neatbalstīta HTTP metode
  • 429 — sasniegts pieprasījumu limits; ievēro Retry-After
  • 503 — datu plūsma īslaicīgi nav pieejama

← Atgriezties sākumlapā