import { fetchToutiaoMediaSnapshot, publishToutiaoArticle, } from "../../../../packages/publisher-platforms/src/toutiao"; import type { StoredPlatformState } from "../platforms"; import { connectedPlatform, disconnectedPlatform, fetchImageBlob, fetchJson, manageUrlResult, normalizeArticleHtml, uploadHtmlImages, } from "./common"; import type { AdapterContext, PlatformAdapter } from "./types"; async function detectToutiaohao(platform: StoredPlatformState): Promise { try { const media = await fetchToutiaoMediaSnapshot(fetchJson); if (!media?.platformUid || !media.screenName) { return disconnectedPlatform(platform, "未检测到头条号登录态"); } return connectedPlatform(platform, media.platformUid, media.screenName, media.avatarUrl); } catch (error) { return disconnectedPlatform(platform, error instanceof Error ? error.message : "头条号登录检测失败"); } } async function publishToutiaohao(context: AdapterContext) { const result = await publishToutiaoArticle( { title: context.article.title, html: normalizeArticleHtml(context.article), coverAssetUrl: context.article.cover_asset_url, publishType: context.article.publish_type, }, { fetchJson, fetchImageBlob, uploadHtmlImages, }, ); if (!result.success) { throw new Error(result.message); } return manageUrlResult( true, result.status, result.articleId, result.externalManageUrl, result.message, result.externalArticleUrl, ); } export const toutiaohaoAdapter: PlatformAdapter = { platformId: "toutiaohao", detect: detectToutiaohao, publish: publishToutiaohao, };