431 |
432 |
433 |
日本の会社紹介スライドのまとめ
434 |
438 |
439 |
440 |
441 |
442 | {/* New Feed */}
443 |
449 |
450 |
554 | {mode === "embed_slide" ? (
555 |
556 |
557 |
558 |
559 | ) : (
560 |
561 | {company.map((slide) => {
562 | if (mode === "list") {
563 | return (
564 |
565 |
566 |
567 |
568 | );
569 | }
570 | return (
571 |
572 |
573 |
574 | );
575 | })}
576 |
577 | )}
578 |
630 |
631 | );
632 | }
633 |
634 | export default HomePage;
635 |
--------------------------------------------------------------------------------
/pages/rss/new.tsx:
--------------------------------------------------------------------------------
1 | import { GetServerSidePropsContext } from "next";
2 | import company from "../company.json";
3 | import { Feed } from "feed";
4 | import { getSlideImage } from "../index";
5 |
6 | const escapeXML = (unsafe: string) => {
7 | return unsafe.replace(/[<>&'"]/g, (c) => {
8 | switch (c) {
9 | case "<":
10 | return "<";
11 | case ">":
12 | return ">";
13 | case "&":
14 | return "&";
15 | case "'":
16 | return "'";
17 | case '"':
18 | return """;
19 | }
20 | });
21 | };
22 | const generateNewCompanyFeed = () => {
23 | const latest100 = company.slice().reverse().slice(0, 100);
24 | const feed = new Feed({
25 | title: "New - 日本の会社紹介スライドのまとめ",
26 | description: "日本の会社紹介スライドのまとめに新しく追加された会社のスライドです",
27 | id: "https://company-introduction-jp.vercel.app/rss/new",
28 | link: "https://company-introduction-jp.vercel.app/",
29 | image: "https://company-introduction-jp.vercel.app/ogp.jpeg",
30 | copyright: "https://company-introduction-jp.vercel.app/",
31 | updated: new Date(),
32 | generator: "https://company-introduction-jp.vercel.app/"
33 | });
34 | for (const company of latest100) {
35 | const list = company.slide_urls
36 | .map((url, i) => {
37 | return `