|
|
1번째 줄: |
1번째 줄: |
|
| |
|
| <div class="everest-rss">
| |
| <h6 class="nav">최근바뀜</h6>
| |
| <div class="Rssfeed-list" id="rssFeedList"></div>
| |
| [[특수:최근바뀜|<span class="text-xs label label-info bg-evewiki-main">더 보기</span>]]
| |
| </div>
| |
| <html>
| |
| <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&namespace=6&invert=1&formatversion=2';
| |
|
| |
| // 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('div');
| |
| var anchor = document.createElement('a');
| |
| listItem.setAttribute('class', 'w-full');
| |
| anchor.setAttribute('class', '');
| |
| anchor.setAttribute('href', link);
| |
| anchor.innerHTML = title;
| |
|
| |
| // 작성 시간을 표시하는 엘리먼트 생성
| |
| var timeElement = document.createElement('div');
| |
| timeElement.setAttribute('class', 'inline-block w-16 opacity-50 text-xs');
| |
| 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>
| |