편집 요약 없음 |
편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
<html> | |||
<div class="everest-rss"> | |||
<div class="Rssfeed-header"> | |||
<div class="nav">자유게시판</div> | |||
</div> | |||
<div class="Rssfeed-content"> | |||
<ul class="Rssfeed-list" id="rssFeedList"></ul> | |||
</div> | |||
<div class="Rssfeed-footer"> | |||
<a href="https://evewiki.kr/everest/free" title="이브레스트 자유게시판"><span class="label label-info">더 보기</span></a> | |||
</div> | |||
</div> | |||
[[ | <script> | ||
// 현재 시간을 기준으로 작성 시간을 계산하는 함수 | |||
function calculateTimeDifference(pubDate) { | |||
var currentDate = new Date(); | |||
var postDate = new Date(pubDate); | |||
var timeDifference = Math.floor((currentDate - postDate) / (60 * 1000)); // 차이를 분 단위로 계산 | |||
if (timeDifference < 60) { | |||
return timeDifference + '분 전 '; | |||
} else if (timeDifference < 1440) { | |||
return Math.floor(timeDifference / 60) + '시간 전 '; | |||
} else { | |||
return Math.floor(timeDifference / 1440) + '일 전 '; | |||
} | |||
} | |||
// RSS 피드를 가져와서 표시하는 함수 | |||
function fetchAndDisplayRss() { | |||
// RSS 피드 URL | |||
var rss_url = 'https://evewiki.kr/w/api.php?action=feedrecentchanges&format=json'; | |||
// fetch API를 사용하여 RSS 피드를 가져오기 | |||
fetch(rss_url) | |||
.then(response => response.text()) | |||
.then(data => { | |||
// XML 데이터 파싱 | |||
var parser = new DOMParser(); | |||
var xmlDoc = parser.parseFromString(data, "text/xml"); | |||
// 표시할 최대 게시물 수 | |||
var max_posts = 10; | |||
// 중복 제목을 확인하기 위한 객체 생성 | |||
var titleSet = new Set(); | |||
// 리스트 아이템을 추가할 ul 엘리먼트 가져오기 | |||
var rssList = document.getElementById('rssFeedList'); | |||
// 표시된 게시글 수 | |||
var displayedPosts = 0; | |||
// 두 번째 항목부터 시작하여 다음 10개를 표시 | |||
for (var i = 1; i < xmlDoc.getElementsByTagName('title').length; i++) { | |||
var max_title_length = 20; | |||
var title = xmlDoc.getElementsByTagName('title')[i].innerHTML; | |||
var link = xmlDoc.getElementsByTagName('link')[i].innerHTML; | |||
var pubDate = xmlDoc.getElementsByTagName('pubDate')[i].innerHTML; // 작성 시간 가져오기 | |||
// 중복된 제목인지 확인 | |||
if (!titleSet.has(title)) { | |||
titleSet.add(title); | |||
// 작성 시간을 계산 | |||
var timeDifference = calculateTimeDifference(pubDate); | |||
// 리스트 아이템과 앵커 엘리먼트 생성 | |||
var listItem = document.createElement('li'); | |||
var anchor = document.createElement('a'); | |||
anchor.setAttribute('class', 'Rssfeed-item'); | |||
anchor.setAttribute('href', link); | |||
anchor.innerHTML = title; | |||
// 작성 시간을 표시하는 엘리먼트 생성 | |||
var timeElement = document.createElement('span'); | |||
timeElement.setAttribute('class', 'time-difference'); | |||
timeElement.innerHTML = timeDifference; | |||
// 앵커를 리스트 아이템에 추가하고 리스트 아이템을 ul 엘리먼트에 추가 | |||
listItem.appendChild(timeElement); | |||
listItem.appendChild(anchor); | |||
rssList.appendChild(listItem); | |||
// 표시된 게시글 수 증가 | |||
displayedPosts++; | |||
// 표시된 게시글이 최대 표시할 게시글 수에 도달하면 종료 | |||
if (displayedPosts === max_posts) { | |||
break; | |||
} | |||
} | |||
} | |||
}) | |||
.catch(error => console.error('RSS 피드 가져오기 오류:', error)); | |||
} | |||
// RSS 피드를 가져와서 표시하는 함수 호출 | |||
fetchAndDisplayRss(); | |||
</script> | |||
</html> |
2023년 12월 25일 (월) 19:02 판