웹사이트에 매체 및 YouTube RSS 피드를 삽입하는 방법
이 항목에서 살펴볼 내용:
이 튜토리얼에서 사용하고 있는 기술:
1. 웹사이트에 중간 RSS 피드를 삽입하는 방법
먼저 다음과 같이 mediumRSSFeed 변수를 해당 문자열 값(URL 링크)에 할당합니다.
const mediumRssFeed = “https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/@YOUR_MEDIUM_PROFILE_NAME_HERE”
이 링크가 올바른지 확인하려면 중간 프로필 이름과 함께 이 URL 링크를 빈 브라우저에 복사한 다음 Enter 키를 누르십시오. JSON 개체를 볼 수 있으면 이 링크가 올바른 것입니다. 이는 다음과 같이 표시되어야 합니다.
그런 다음 아래와 같이 기사 데이터를 가져옵니다.
const MAX_ARTICLES = 10;
const [articles, setArticles] = useState();
useEffect(() => {
const loadArticles = async () => {
fetch(mediumRssFeed, { headers: { Accept: “application/json” } })
.then((res) => res.json())
.then((data) => data.items.filter((item) => item.title.length > 0))
.then((newArticles) => newArticles.slice(0, MAX_ARTICLES))
.then((articles) => setArticles(articles))
.catch((error) => console.log(error));
};
loadArticles();
}, [MAX_ARTICLES]);
이 데모에 React Hook을 사용했기 때문에 useState() 및 useEffect() 함수를 사용하여 이 데이터를 가져오는 것을 볼 수 있습니다. 내 페이지에 표시되는 기사 수를 제한하기 위해 MAX_ARTICLES=10으로 설정했지만 원하는 대로 다른 수로 설정할 수 있습니다. max-count가 10을 초과하는 경우 rss2json에 "반환할 피드 항목의 수, 기본값은 10입니다.(이 매개변수를 사용하려면 api_key가 필요합니다.)"라고 되어 있으므로 API 키를 얻기 위해 가입/로그인해야 합니다.
그런 다음 map() 함수는 다음과 같이 기사 배열의 각 항목을 반환하는 데 도움이 됩니다.
{articles
? articles.map((item) => (
<a
className="link"
href={item.link}
target="_blank"
rel="nofollow noopener noreferrer"
title={item.title}
aria-label={item.link}
key={item.link}
>
<Card className={classes.root}>
<CardActionArea>
<CardMedia
className={classes.media}
image={item.thumbnail}
title={item.title}
/>
<CardContent>
<Typography gutterBottom variant="h5" component="h2">
{item.title}
</Typography>
<Typography
variant="body2"
color="textSecondary"
component="p"
>
{parseDate(item.pubDate)}
</Typography>
</CardContent>
</CardActionArea>
<CardActions>
<FacebookShareButton url={item.link}>
<FacebookIcon size={32} round={true} />
</FacebookShareButton>
<Button size="small" color="primary">
Learn More
</Button>
</CardActions>
</Card>
</a>
))
: "no article shown"}
In this Demo, I used the helper function parseDate() for item.pubDate to format the date for it easier to read. I added this function in the file name util.js such as below:
export const parseDate = (date) => {
const year = date.substring(0, 4);
const month = date.substring(5, 7);
const day = date.substring(8, 10);
switch (month) {
case "01":
return day + " January " + year;
case "02":
return day + " February " + year;
case "03":
return day + " March " + year;
case "04":
return day + " April " + year;
case "05":
return day + " May " + year;
case "06":
return day + " June " + year;
case "07":
return day + " July " + year;
case "08":
return day + " August " + year;
case "09":
return day + " September " + year;
case "10":
return day + " October " + year;
case "11":
return day + " November " + year;
case "12":
return day + " December " + year;
default:
return "No publication date";
}
};
필요에 따라 이 형식을 사용자 정의할 수 있습니다.
이제 귀하의 기사가 귀하의 페이지에 이와 같이 표시됩니다. 데모here를 참조하십시오.
2. 웹사이트에 YouTube RSS 피드를 삽입하는 방법
마찬가지로 데모에도 동일한 기술을 사용했습니다. 여기서 유일하게 다른 부분은 RSS 피드 URL 링크입니다. 이 데이터는 아래 구조와 같아야 합니다.
const youtubeRssFeed= “https://api.rss2json.com/v1/api.json?rss_url=https://youtube.com/feeds/videos.xml?channel_id=YOUR_CHANNEL_ID_HERE”
위의 방법에 따라 올바른 링크인지 확인할 수도 있습니다. 그런 다음 아래와 같이 YouTube 동영상의 데이터를 가져올 수 있습니다.
const MAX_VIDEOS = 10;
const [videos, setVideos] = useState();
useEffect(() => {
const loadVideos = async () => {
fetch(youtubeRssFeed, { headers: { Accept: “application/json” } })
.then((res) => res.json())
.then((data) => data.items.filter((item) => item.title.length > 0))
.then((newVideos) => newVideos.slice(0, MAX_VIDEOS))
.then((videos) => setVideos(videos))
.catch((error) => console.log(error));
};
loadVideos();
}, [MAX_VIDEOS]);
다시 한 번 MAX_VIDEOS=10으로 설정하여 내 페이지에 표시되는 동영상 수를 제한합니다. 선택에 따라 다른 번호로 설정할 수 있습니다. max-count가 10을 초과하는 경우 rss2json에 "반환할 피드 항목의 수, 기본값은 10입니다. (이 매개변수를 사용하려면 api_key가 필요합니다.)"라고 되어 있으므로 API 키를 얻기 위해 가입/로그인해야 합니다.
또한 map() 함수는 다음과 같이 비디오 배열의 각 항목을 반환하는 데 도움이 됩니다.
{videos
? videos.map((item) => (
<a
className="link"
href={item.link}
target="_blank"
rel="nofollow noopener noreferrer"
title={item.title}
aria-label={item.link}
key={item.link}
>
<Card className={classes.root}>
<CardActionArea>
<CardMedia
className={classes.media}
image={item.thumbnail}
title={item.title}
/>
<CardContent>
<Typography gutterBottom variant="h5" component="h2">
{item.title}
</Typography>
<Typography
variant="body2"
color="textSecondary"
component="p"
>
{parseDate(item.pubDate)}
</Typography>
</CardContent>
</CardActionArea>
<CardActions>
<FacebookShareButton url={item.link}>
<FacebookIcon size={32} round={true} />
</FacebookShareButton>
<Button size="small" color="primary">
Learn More
</Button>
</CardActions>
</Card>
</a>
))
이제 YouTube 동영상이 포함되어 다음과 유사하게 표시됩니다.
이 Demo .
귀하의 작업에 감탄하고 즐기십시오!
이 짧은 튜토리얼은 여기까지입니다. 도움이 되었기를 바랍니다. 이에 대한 추가 도움이 필요하면 알려주세요. 읽어주셔서 감사하고 즐거운 하루 보내세요!
더 많은 내 이야기 읽기here .
Reference
이 문제에 관하여(웹사이트에 매체 및 YouTube RSS 피드를 삽입하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hellojuninguyen/how-to-embed-medium-and-youtube-rss-feed-in-your-website-16oh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)