You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.8 KiB
117 lines
4.8 KiB
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
|
import type { NextApiRequest, NextApiResponse } from 'next'
|
|
import Select from "../../../../../server/db/select";
|
|
|
|
|
|
const sql = "SELECT * FROM podcasts WHERE status=1 and podcasts='Поуехали'";
|
|
|
|
const title ='Поуехали';
|
|
const atom_link = 'https://blogbaster.xyz/api/podcasts/lets-go/';
|
|
const email = 'crapsh@gmail.com';
|
|
const nameCompanies= 'BlogBaster';
|
|
const description = 'Интервью с людьми, которые переехали за границу на ПМЖ. Аргентина, Америка, Турция, Грузия, Израиль… зачем, сколько и почему?';
|
|
const webSite = 'https://blogbaster.xyz';
|
|
const urlImg = 'https://blogbaster.xyz/img/poyexali.jpg';
|
|
const lastBuildDate = 'Fri, 06 May 2022 15:30:47 +0000';
|
|
|
|
interface Rows {
|
|
episode: number;
|
|
podcasts: string;
|
|
title: string;
|
|
description: string;
|
|
guid: string;
|
|
pubDate: string;
|
|
duration: number;
|
|
urlImg: string;
|
|
fileSize: number;
|
|
audio: string;
|
|
}
|
|
|
|
const item = (data: Rows) => {
|
|
let items =`
|
|
<item>
|
|
<itunes:episodeType>full</itunes:episodeType>
|
|
<itunes:episode>`+data.episode+`</itunes:episode>
|
|
<itunes:season>1</itunes:season>
|
|
<title><![CDATA[`+data.podcasts+': '+data.title+`]]></title>
|
|
<description><![CDATA[`+data.description+`]]></description>
|
|
<googleplay:description>`+data.description+`</googleplay:description>
|
|
<itunes:summary>`+data.description+`</itunes:summary>
|
|
<guid isPermaLink="false">`+data.guid+`</guid>
|
|
<pubDate>`+data.pubDate+`</pubDate>
|
|
<itunes:duration>`+data.duration+`</itunes:duration>
|
|
<link>`+webSite+'/podcast/'+data.guid+`</link>
|
|
<googleplay:image href="/img/`+data.urlImg+`"/>
|
|
<itunes:image href="/img/`+data.urlImg+`"/>
|
|
<googleplay:explicit>no</googleplay:explicit>
|
|
<itunes:explicit>false</itunes:explicit>
|
|
<enclosure url="'https://blogbaster.xyz/audio/`+data.audio+`" length="`+data.fileSize+`" type="audio/mpeg"/>
|
|
<media:title>`+data.podcasts+': '+data.title+`</media:title>
|
|
<media:content url="https://blogbaster.xyz/audio/`+data.audio+`" fileSize="`+data.fileSize+`" type="audio/mpeg" medium="audio" isDefault="true" expression="full" bitrate="320" channels="2" duration="`+data.duration+`" lang="ru"/>
|
|
<media:thumbnail url="/img/`+data.urlImg+`" width="150" height="150"/>
|
|
<media:copyright url="`+webSite+`">© 2022 `+nameCompanies+`</media:copyright>
|
|
<creativeCommons:license>https://creativecommons.org/licenses/by/4.0/</creativeCommons:license>
|
|
</item>`;
|
|
return(items)
|
|
}
|
|
|
|
const getRssXml = (data: Array<string>) =>
|
|
`<?xml version="1.0" encoding="UTF-8"?>
|
|
<rss version="2.0"
|
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
|
xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0/play-podcasts.xsd"
|
|
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
|
|
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
|
xmlns:media="http://search.yahoo.com/mrss/"
|
|
xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
|
|
>
|
|
<channel>
|
|
<title>`+title+`</title>
|
|
<atom:link href="`+atom_link+`" rel="self" type="application/rss+xml"/>
|
|
<googleplay:owner>`+email+`</googleplay:owner>
|
|
<itunes:owner>
|
|
<itunes:name>`+nameCompanies+`</itunes:name>
|
|
<itunes:email>`+email+`</itunes:email>
|
|
</itunes:owner>
|
|
<googleplay:author>`+nameCompanies+`</googleplay:author>
|
|
<itunes:author>`+nameCompanies+`</itunes:author>
|
|
<description>`+description+`</description>
|
|
<googleplay:description>`+description+`</googleplay:description>
|
|
<itunes:summary>`+description+`</itunes:summary>
|
|
<image>
|
|
<link>`+webSite+`</link>
|
|
<title>`+nameCompanies+`</title>
|
|
<url>`+urlImg+`</url>
|
|
</image>
|
|
<googleplay:image href="`+urlImg+`"/>
|
|
<itunes:image href="`+urlImg+`"/>
|
|
<itunes:category text="Society & Culture">
|
|
<itunes:category text="Places & Travel"/>
|
|
</itunes:category>
|
|
<itunes:category text="Science">
|
|
<itunes:category text="Social Sciences"/>
|
|
</itunes:category>
|
|
<language>ru</language>
|
|
<link>`+webSite+`</link>
|
|
<copyright>© 2023 `+nameCompanies+`</copyright>
|
|
<itunes:type>episodic</itunes:type>
|
|
<googleplay:explicit>no</googleplay:explicit>
|
|
<itunes:explicit>no</itunes:explicit>
|
|
<lastBuildDate>`+lastBuildDate+`</lastBuildDate>
|
|
<googleplay:block>yes</googleplay:block>
|
|
`+data.map((rows : any) => item(rows))+`
|
|
</channel>
|
|
</rss>`;
|
|
|
|
export default function handler(
|
|
req: NextApiRequest,
|
|
res: NextApiResponse
|
|
) {
|
|
const userAgent = req.headers['user-agent'];
|
|
console.log(userAgent);
|
|
Select(sql, function(data : any){
|
|
res.setHeader('Content-Type', 'text/xml');
|
|
res.status(200).send(getRssXml(data));
|
|
})
|
|
|
|
}
|
|
|