Glanceway Glanceway
所有信息源

Lobsters

开发者 v1.0.0

Hottest stories from Lobsters

@codytseng #news #tech #programming

配置项

名称 类型 必填 默认值 描述
Tag TAG list Filter by tag (e.g. programming, security, linux). Leave empty for all tags.

源代码

version: 1.0.0
name: Lobsters
description: Hottest stories from Lobsters
author: codytseng
author_url: https://github.com/codytseng
category: Developer
tags:
  - news
  - tech
  - programming

config:
  - key: TAG
    name: Tag
    type: list
    required: false
    description: Filter by tag (e.g. programming, security, linux). Leave empty for all tags.
module.exports = async (api) => {
  const tags = api.config.get("TAG");

  async function fetchData() {
    const url =
      tags && tags.length > 0
        ? `https://lobste.rs/t/${tags.join(",")}.json`
        : "https://lobste.rs/hottest.json";

    const response = await api.fetch(url);

    if (!response.ok || !response.json) {
      throw new Error(
        `Failed to fetch Lobsters stories (HTTP ${response.status})`,
      );
    }

    api.emit(
      response.json.map((story) => ({
        id: story.short_id,
        title: story.title,
        subtitle:
          story.description_plain ||
          `${story.score} points · ${story.comment_count} comments · ${story.tags.join(", ")}`,
        url: story.url || story.comments_url,
        timestamp: story.created_at,
      })),
    );
  }

  await fetchData();

  return {
    refresh: fetchData,
  };
};