記事一覧
Popular & Latest Posts
タイアップ記事
Sponsored Content
2026年
04月
Island Store 様
家庭用防音マイク「ヴォイシーズ」
2026年
02月
WonderFox 様
HD Video Converter Factory Pro
2025年
10月
㈱NAKAGAMI 様
家庭用Bluetoothマイク「SM-KM21」
2025年
08月
㈱StoreHero 様
防音マスク OMBRA v2
2025年
06月
JTT Online 様
うるさくないカラOK!ミュートマイク3
📩 タイアップのお問い合わせはこちら
※PR記事には「提供」「広告」を明記し、実際の使用体験を基に執筆しています。
// ── RSS自動取得(新着記事) ──────────────────────────
(function() {
const RSS_URL = ‘https://outikaraoke.tasogarejam.com/feed/’;
// allorigins.win 経由でCORSを回避(無料プロキシ)
const API_URL = ‘https://api.allorigins.win/get?url=’ + encodeURIComponent(RSS_URL);
const listEl = document.getElementById(‘rss-list’);
const loadEl = document.getElementById(‘rss-loading’);
const errorEl = document.getElementById(‘rss-error’);
const moreWrap = document.getElementById(‘rss-more-wrap’);
const moreFb = document.getElementById(‘rss-fallback-more’);
// サムネイル抽出ヘルパー
function getThumbnail(content) {
const m = content.match(/
![]()
]+src=[“‘]([^”‘]+)[“‘]/i);
return m ? m[1] : null;
}
// 日付フォーマット
function formatDate(dateStr) {
const d = new Date(dateStr);
if (isNaN(d)) return ”;
return d.getFullYear() + ‘.’ + String(d.getMonth()+1).padStart(2,’0′) + ‘.’ + String(d.getDate()).padStart(2,’0′);
}
fetch(API_URL)
.then(function(res) {
if (!res.ok) throw new Error(‘Network error’);
return res.json();
})
.then(function(data) {
// allorigins はbase64またはテキストで返す
let xmlText = data.contents;
if (xmlText && xmlText.startsWith(‘data:’)) {
// base64デコード
const base64 = xmlText.split(‘,’)[1];
xmlText = atob(base64);
}
if (!xmlText) throw new Error(‘No contents’);
const parser = new DOMParser();
const xml = parser.parseFromString(xmlText, ‘text/xml’);
const items = Array.from(xml.querySelectorAll(‘item’)).slice(0, 5);
if (!items.length) throw new Error(‘No items’);
let html = ”;
items.forEach(function(item) {
const title = item.querySelector(‘title’) ? item.querySelector(‘title’).textContent : ‘(タイトルなし)’;
const link = item.querySelector(‘link’) ? item.querySelector(‘link’).textContent.trim() : ‘#’;
const pubDate = item.querySelector(‘pubDate’) ? item.querySelector(‘pubDate’).textContent : ”;
const encoded = item.getElementsByTagNameNS(‘http://purl.org/rss/1.0/modules/content/’, ‘encoded’)[0];
const description = item.querySelector(‘description’);
const content = (encoded ? encoded.textContent : ”) || (description ? description.textContent : ”);
const date = formatDate(pubDate);
const thumb = getThumbnail(content);
const thumbHtml = thumb
? ‘

‘
: ‘
♪
‘;
html += ‘
‘
+ ‘‘ + thumbHtml + ‘
‘
+ ‘‘
+ ‘
‘
+ (date ? ‘
📅 ‘ + date + ‘‘ : ”)
+ ‘
‘ + title + ‘
‘
+ ‘
‘
+ ‘
›
‘
+ ‘
‘
+ ‘‘;
});
listEl.innerHTML = html;
loadEl.style.display = ‘none’;
listEl.style.display = ‘flex’;
moreWrap.style.display = ‘block’;
moreFb.style.display = ‘none’;
})
.catch(function(err) {
console.warn(‘RSS取得失敗:’, err);
loadEl.style.display = ‘none’;
errorEl.style.display = ‘block’;
moreFb.style.display = ‘block’;
});
})();

