obsidian-douban/douban/movie/Movie.ts

55 lines
1.3 KiB
TypeScript

import cheerio from 'cheerio';
import { DoubanExtract, doubanHeadrs } from 'douban/Douban';
import { get, readStream } from 'tiny-network';
import { ensureStatusCode } from 'douban/ResponseHandle';
interface DoubanMovieExtract extends DoubanExtract {
}
export const playing = (city:string) => {
return Promise
.resolve()
.then(() => get(`https://movie.douban.com/cinema/nowplaying/${city}/`))
.then(ensureStatusCode(200))
.then(readStream)
.then(cheerio.load)
.then(parsePlaying)
};
export const parsePlaying = (dataHtml:any) => {
return dataHtml('.list-item')
.get()
.map((i:any) => {
const item = dataHtml(i);
console.log("version 5");
const result = {
id: item.attr('id'),
title: item.attr('data-title'),
score: item.attr('data-score'),
duration: item.attr('data-duration'),
region: item.attr('data-region'),
director: item.attr('data-director'),
actors: item.attr('data-actors'),
poster: item.find('.poster img').attr('src'),
link: `https://movie.douban.com/subject/${item.attr('id')}`,
};
// console.log("content is " + JSON.stringify(result));
return result;
})
};