Skip to content

Instantly share code, notes, and snippets.

@ci7lus

ci7lus/pdc-nicomanga.ts

Last active Sep 13, 2020
Embed
What would you like to do?
https://seiga.nicovideo.jp/manga/ の新規公式連載情報を取得
import { defineComponent } from "ironpipe"
import axios from "axios"
/**
* nicomanga.ts
* MIT License (c) 2020 ci7lus
*/
module.exports = defineComponent({
name: "nicomanga",
version: "0.0.1",
props: {
timer: {
type: "$.interface.timer",
default: {
cron: "30 2 * * *", // 11:30 JST
},
},
},
dedupe: "unique",
async run() {
try {
const r = await axios.get<NewConntents>(
`https://manga-api.nicoseiga.jp/api/v1/app/manga/attentions/new/contents?offset=0&limit=100`,
{ timeout: 5000 }
)
if (r.data.meta.status !== 200) throw new Error(JSON.stringify(r.data))
r.data.data.result
.filter((comic) => comic.meta.content_type === "official")
.reverse()
.map((comic) => {
const data = {
...comic.meta,
id: comic.id,
square_thumbnail_url: comic.square_thumbnail_url,
}
this.$emit(data, {
id: comic.id,
summary: `${data.title} / ${data.display_author_name}`,
ts: data.updated_at,
})
})
} catch (error) {
console.error(error)
}
},
})
type NewConntents = {
meta: { status: number }
data: {
result: {
id: number
square_thumbnail_url: string
meta: {
title: string
display_author_name: string
authors: {
nico_id: number
name: string
commet: string
thumbnail_url: string
}[]
promotion_text: string | null
description: string
content_type: "user" | "official"
official: {
id: number
meta: {
name: string
short_name: string
thumbnail_url: string
share_url: string
description: string
}
} | null
created_at: number
updated_at: number
}
}[]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.