
PSP에는 [인터넷 라디오]라는 기능이 있다.
이 기능은 PSP에 내장된 인터넷 브라우저로 전용 플레이어를 실행하여, SHOUTcast 또는 icecast2 프로토콜로 송출되는 MP3/AAC+ 규격의 오디오 스트림을 청취하는 기능이다.
플레이어를 실행하려면 XMB에서 '인터넷 라디오' 섹션으로 들어가 원하는 플레이어 아이콘을 선택해야만 한다.
[인터넷 라디오] 기능의 동작 원리

[인터넷 라디오] 기능을 이루는 주요 구성 요소는 다음과 같은 세 가지로 나뉜다.
- XMB(Ⓒ) 상에서 표시되는 플레이어 아이콘(Ⓕ).
- PSP의 인터넷 브라우저(Ⓓ)에서 GUI로 표시되는 플레이어(Ⓖ).
- 외부 서버(Ⓗ)로부터 오디오 데이터 스트림을 수신하는 프로토콜 핸들러(Ⓗ). (SHOUTcast 및 icecast2 프로토콜에 대응)
그리고 [인터넷 라디오] 기능의 핵심 로직은 보통 플레이어(Ⓖ)에 내장되어 아래 두 유형의 메소드를 동시에 활용하는 자바스크립트 코드로 구현된다.
- 인터넷 브라우저(Ⓓ) 차원에서 시스템 소프트웨어(Ⓑ)를 조작하는 메소드 (재생 상태 컨트롤 등의 목적)
- 프로토콜 핸들러(Ⓔ)가 가진 메소드
선택적인 구현 사항으로, 공식 플레이어 중 'Internet Radio Player Ⅰ/Ⅱ'의 경우 프로토콜별로 공식 운영되는 방송국 정보 DB(Ⓘ)에서 청취 가능한 공개 방송국들의 정보를 읽어오기도 한다.
- 'Internet Radio Player Ⅰ' — SHOUTcast directory에서 검색되는 방송국들의 정보를 읽어온다.
- 'Internet Radio Player Ⅱ' — Icecast directory에서 검색되는 방송국들의 정보를 읽어온다.
이러한 구조 위에서 [인터넷 라디오] 기능은 총 3가지의 시나리오로 동작할 수 있다.
시나리오 1: 스트리머가 직접 플레이어를 구성

고정된 스트리밍 주소로 단일 방송을 송출하는 개인 스트리머가 직접 플레이어를 제작하고 운영하는 경우이다.
이 경우는 접속 경로가 항상 일정하기 때문에 스트리밍 주소를 플레이어에 직접 하드코딩하거나 별도의 설정 파일로부터 읽어오도록 구현하는 것이 일반적이다.
별도의 DB를 구축하지 않고도 최소한의 리소스로 플레이어를 구축할 수 있는 방식.
시나리오 2: 스트리머, 방송 플랫폼과 분리된 제3자가 플레이어를 구성

스트리머, 방송 플랫폼 운영자, 플레이어 제작자가 각각 독립되어 있는 경우이다.
- 스트리머가 방송을 시작하면 방송 플랫폼 측에서는 이를 감지하고 방송국 정보 DB를 업데이트한다.
- 방송 플랫폼에서는 방송국 정보 DB를 통해 현재 청취 가능한 방송국들의 정보를 실시간으로 관리한다.
- 플레이어는 방송국 정보 DB에 API 요청을 보내 수신된 응답을 바탕으로 청취 가능한 방송을 선별하여 제공한다.
이러한 시나리오가 요즘에는 잘 와닿지 않을 수 있어서 비유를 첨언하자면, 현재 진행 중인 유튜브 라이브 목록에서 특정한 장르의 라이브만 뽑아서 보여주는 큐레이션 서비스를 제3자가 만들어 제공하는 상황과 비슷하다고 보면 된다.
시나리오 3: 방송 서버와 방송국 정보 DB의 운영 주체가 서로 별개

앞서 언급했던 'Internet Radio Player Ⅰ/Ⅱ'가 정확히 이런 방식으로 동작한다.
전반적인 특징은 시나리오 2와 비슷하지만, SHOUTcast와 icecast2는 개방형 프로토콜이기 때문에 기술적으로 방송 인프라와 방송국 정보 DB가 완전히 독립되어 있어 이 부분을 따로 고려한 시나리오이다.
공식 플레이어 일람


이전 단락에서도 짚고 넘어갔듯이, 당시 SCE가 제공했던 공식 플레이어들은 SHOUTcast directory 또는 Icecast directory와 같은 방송국 정보 DB에서 현재 청취 가능한 방송들의 정보를 읽고 이를 재생하는 로직을 갖추고 있다.
공식 플레이어는 기본적으로 SCE의 서버(radio.psp.dl.playstation.net)에 있는 웹 페이지를 기반으로 온라인 환경에서 서비스되는데, 놀랍게도 2026년 1월 현재까지 사이트 접속 및 스트림 재생이 멀쩡히 가능하다!
이는 SHOUTcast / icecast2 프로토콜로 송출되는 스트림 상당수가 보안 접속을 요구하지 않는 레거시 HTTP로 전송되고 있을 뿐만 아니라, 방송국 정보 DB와의 API 통신 구조도 마찬가지로 레거시 HTTP 기반에서 큰 변화 없이 그대로 유지되고 있기 때문이다.

공식 플레이어의 또다른 특징은 방송 서버 및 방송국 정보 DB와 완전히 독립적으로 작동한다는 점이다.
그 덕분에 플레이어의 HTML 소스를 메모리 스틱에 복사하여 로컬 환경에서 실행하더라도, SCE 서버에서 플레이어를 불러왔을 때와 마찬가지로 모든 기능을 정상적으로 이용할 수 있다. — 이러한 점을 이용해 공식 플레이어를 로컬에서 실행하는 자세한 방법은 ②편에서 더 자세히 다룰 예정이다.
그렇다면 당시 제공되었던 공식 플레이어들에는 어떤 것들이 있었을까? 이를 내려받을 수 있었던 공식 가이드 페이지는 현재 폐쇄되어 접속이 불가능하지만 다행히도 웹 아카이브를 통해 그 흔적을 확인해볼 수는 있었다.
아래부터의 내용은 공식 플레이어별로 다음과 같은 정보들을 정리한 것이다.
- 가이드 내 상세 설명
- 실제 웹 경로
- 플레이어 아이콘(.prs) 파일
- 플레이어의 핵심 로직
(※ 플레이어 아이콘 파일을 메모리 스틱의 /PSP/RADIOPLAYER/ 경로에 저장하면 XMB에서 해당 아이콘이 활성화된다.)
Internet Radio Player I
Internet Radio Player I은 SHOUTcast의 콘텐츠를 제공합니다.
50여 개의 장르 중에서 원하는 라디오 방송국을 선택할 수 있습니다.
원하는 장르를 선택하면 방송국 리스트 중에서 인기가 높은 방송국을 자동으로 골라 재생합니다.
http://radio.psp.dl.playstation.net/psp/radio/player/PLAYER_I/index.html
INTERNET RADIO PLAYER I
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 사용자가 장르 목록에서 임의의 장르를 선택하면 해당 값을 기억한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 기억한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱하여 얻어낸 상위 30개 방송을 재생 목록에 세트한다.
④ 사용자는 세트된 재생 목록 내에서 원하는 방송을 선택하여 들을 수 있다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var selectedGenre = -1;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 웹 사이트 상에서 선택 가능한 장르 목록
genreList = new Array(
"50s",
"60s",
"70s",
"80s",
"90s",
"2000s",
"Alt",
"Ambient",
"Ballade",
"Blues",
"Bossa Nova",
"British",
"Classical",
"Contempo",
"Country",
"Eclectic",
"Electronica",
"Euro",
"Folk",
"Game",
"HardRock",
"Hawaiian",
"House",
"Indie",
"International",
"Island",
"Jazz",
"JPOP",
"KPOP",
"Latin",
"Live",
"Metal",
"Modern",
"News",
"Oldies",
"Pakistani",
"Polskie",
"Pop",
"Progressive",
"Public",
"R&B",
"Reggae",
"Religious",
"Salsa",
"Talk",
"Techno",
"Top40",
"Turkish",
"Urban",
"Various"
);
// 웹사이트 내 임의 장르 클릭 시 쿼리 키워드 지정
function g_mouseDown(rowNum, colNum) {
var _selectedGenre = rowNum + numTableRaw * colNum;
if (_selectedGenre != selectedGenre)
selectedGenre = _selectedGenre;
}
if (0 <= selectedGenre)
var url = shoutcastYelloPageUrl_A + genreList[selectedGenre];
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Internet Radio Player II
Internet Radio Player II는 ICECAST(icecast.org)의 콘텐츠를 제공합니다.
50여 개의 장르 중에서 선택할 수 있습니다.
http://radio.psp.dl.playstation.net/psp/radio/player/PLAYER_II/index.html
INTERNET RADIO PLAYER II
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 사용자가 장르 목록에서 임의의 장르를 선택하면 해당 값을 기억한다.
② Icecast directory의 검색 페이지 URL 파라미터에 ①에서 기억한 장르의 키워드를 채워넣고, 완성된 URL로 GET 요청을 보내 검색 결과 페이지의 HTML 소스를 받아온다.
③ ②에서 받아온 HTML 소스를 파싱하여 상위 30개 방송에 대한 정보를 추출 후, 이를 재생 목록에 세트한다.
④ 사용자는 세트된 재생 목록 내에서 원하는 방송을 선택하여 들을 수 있다.
※ 2026년 1월 현재는 Icecast directory 웹 사이트의 구조가 변경되어 순정 코드에서 해당 로직이 정상적으로 동작하지 않는다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var selectedGenre = -1;
var icecastStreamDirectoryUrl_A = "http://dir.xiph.org/search?start=0&num=50&search="; // API 호출 경로 형식
// 웹 사이트 상에서 선택 가능한 장르 목록
genreList = new Array (
"50s",
"60s",
"70s",
"80s",
"90s",
"2000s",
"Alt",
"Ambient",
"Ballade",
"Blues",
"Bossa Nova",
"British",
"Classical",
"Contempo",
"Country",
"Eclectic",
"Electronica",
"Euro",
"Folk",
"Game",
"HardRock",
"Hawaiian",
"House",
"Indie",
"International",
"Island",
"Jazz",
"JPOP",
"KPOP",
"Latin",
"Live",
"Metal",
"Modern",
"News",
"Oldies",
"Pakistani",
"Polskie",
"Pop",
"Progressive",
"Public",
"R&B",
"Reggae",
"Religious",
"Salsa",
"Talk",
"Techno",
"Top40",
"Turkish",
"Urban",
"Various"
);
// 웹사이트 내 임의 장르 클릭 시 쿼리 키워드 지정
function g_mouseDown(rowNum, colNum) {
var _selectedGenre = rowNum + numTableRaw * colNum;
if (_selectedGenre != selectedGenre)
selectedGenre = _selectedGenre;
}
if (0 <= selectedGenre)
var url = icecastStreamDirectoryUrl_A + genreList[selectedGenre];
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Internet Radio Player "CLIP" 시리즈
1980년대에 판매되었던 SONY의 카드 라디오 "ONE-STATION RADIO CLIP"이 인터넷 라디오 플레이어로 돌아왔습니다.
Back to the 80's [장르: 80's]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_80s/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_80s/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "80s" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "80s";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
ROCK [장르: Rock]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_rock/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_rock/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "rock" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "rock";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
COUNTERCULTURE [장르: Alternative]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_alternative/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_alternative/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "alternative" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "alternative";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
BRITISH CULTURE [장르: British]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_british/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_british/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "british" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "british";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
All The Classic [장르: Classic]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_classic/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_classic/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "classical" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "classical";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Jazz in 246 [장르: Jazz]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_jazz/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_jazz/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "jazz" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "jazz";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
INDIA [장르: India]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_india/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_india/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "india" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "india";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
J-POP [장르: J-pop]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_jpop/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_jpop/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "jpop" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "jpop";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
K-POP [장르: K-pop]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_kpop2/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_kpop2/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "kpop" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "kpop";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
ANIME CAN [장르: Anime]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_anime/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_anime/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "anime" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "anime";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
GAME START [장르: Game]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_game/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_game/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "game" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "game";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Healing Time [장르: Healing]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_relax/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_relax/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "relax" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "relax";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Soundtrack [장르: Soundtrack]
http://radio.psp.dl.playstation.net/psp/radio/player/clip_soundtrack/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/clip_soundtrack/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① SHOUTcast directory에 API 요청을 보내 "soundtrack" 장르로 분류되는 모든 방송을 질의한다.
② API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID = "sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A = "http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
var searchKeyword = "soundtrack";
var url = shoutcastYelloPageUrl_A + searchKeyword;
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Internet Radio Player "ONE SWITCH RADIO" 시리즈
스위치를 바꾸는 것만으로 선국할 수 있는 인터넷 라디오 플레이어입니다.
TO JAZZ OR NOT TO JAZZ, THAT IS THE QUESTION
스위치를 [JAZZ]에 맞추면 재즈를, [NOT]에 맞추면 재즈 이외의 음악을 들을 수 있습니다.
http://radio.psp.dl.playstation.net/psp/radio/player/os_JazzOrNot/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/os_JazzOrNot/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 스위치의 ON/OFF 상태에 따라 주어진 풀 내에서 질의할 장르를 무작위로 결정한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 결정한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
스위치가 [ON]일 때:
‘Swing’, ‘Jazz’ 중 택1
스위치가 [OFF]일 때:
’Classical’, ‘International’, ‘Pakistani’, ‘Turkish’ 중 택1
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 스위치가 [ON]일 때 검색할 장르 키워드 풀
onKeywords = new Array ( "Swing", "Jazz" );
// 스위치가 [OFF]일 때 검색할 장르 키워드 풀
offKeywords = new Array ( "Classical", "Classical", "International", "Pakistani", "Turkish" );
var url = "";
switchState = switchState ? 0 : 1;
if ( switchState === 1 ) { // 스위치가 [ON]일 경우
var n = onKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + onKeywords [m];
}
else { // 스위치가 [OFF]일 경우
var n = offKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + offKeywords [m];
}
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Like On The Radio
과거의 라디오 프로그램과 흘러간 음악을 바꿔가며 들을 수 있습니다.
http://radio.psp.dl.playstation.net/psp/radio/player/os_LikeOnTheRadio/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/os_LikeOnTheRadio/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 스위치의 ON/OFF 상태에 따라 주어진 풀 내에서 질의할 장르를 무작위로 결정한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 결정한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
스위치가 [ON]일 때:
‘Big Band’
스위치가 [OFF]일 때:
‘Old Time’
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 스위치가 [ON]일 때 검색할 장르 키워드 풀
onKeywords = new Array ( "Big Band" );
// 스위치가 [OFF]일 때 검색할 장르 키워드 풀
offKeywords = new Array ( "Old Time" );
var url = "";
switchState = switchState ? 0 : 1;
if ( switchState === 1 ) { // 스위치가 [ON]일 경우
var n = onKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + onKeywords [m];
}
else { // 스위치가 [OFF]일 경우
var n = offKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + offKeywords [m];
}
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
LATIN ON
LATIN 스위치를 [ON]에 맞추면 라틴 음악 방송국이 선국됩니다.
http://radio.psp.dl.playstation.net/psp/radio/player/os_LatinOn/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/os_LatinOn/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 스위치의 ON/OFF 상태에 따라 주어진 풀 내에서 질의할 장르를 무작위로 결정한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 결정한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
스위치가 [ON]일 때:
‘Bossa’, ‘Salsa’, ‘Brazil’, ‘Rumba’, ‘Samba’
스위치가 [OFF]일 때:
‘Baroque’, ‘Piano’, ‘New Age’
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 스위치가 [ON]일 때 검색할 장르 키워드 풀
onKeywords = new Array ( "Bossa", "Salsa", "Brazil", "Rumba", "Samba" );
// 스위치가 [OFF]일 때 검색할 장르 키워드 풀
offKeywords = new Array ( "Baroque", "Piano", "New Age" );
var url = "";
switchState = switchState ? 0 : 1;
if ( switchState === 1 ) { // 스위치가 [ON]일 경우
var n = onKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + onKeywords [m];
}
else { // 스위치가 [OFF]일 경우
var n = offKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + offKeywords [m];
}
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Hip Me, Hop You
스위치를 [HIP]에 맞추면 힙합, [HOP]에 맞추면 랩 음악을 들을 수 있습니다.
http://radio.psp.dl.playstation.net/psp/radio/player/os_HipMeHopYou/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/os_HipMeHopYou/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 스위치의 ON/OFF 상태에 따라 주어진 풀 내에서 질의할 장르를 무작위로 결정한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 결정한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
스위치가 [ON]일 때:
‘Hiphop’
스위치가 [OFF]일 때:
‘Hiphop’
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 스위치가 [ON]일 때 검색할 장르 키워드 풀
onKeywords = new Array ( "Hiphop" );
// 스위치가 [OFF]일 때 검색할 장르 키워드 풀
offKeywords = new Array ( "Hiphop" );
var url = "";
switchState = switchState ? 0 : 1;
if ( switchState === 1 ) { // 스위치가 [ON]일 경우
var n = onKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + onKeywords [m];
}
else { // 스위치가 [OFF]일 경우
var n = offKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + offKeywords [m];
}
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
Coffee Or Tea
[Coffee]와 [Tea]를 전환하면 편안함을 주는 서로 다른 종류의 음악을 들을 수 있습니다.
http://radio.psp.dl.playstation.net/psp/radio/player/os_CoffeeOrTea/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/os_CoffeeOrTea/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 스위치의 ON/OFF 상태에 따라 주어진 풀 내에서 질의할 장르를 무작위로 결정한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 결정한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
스위치가 [ON]일 때:
‘Downtempo’
스위치가 [OFF]일 때:
‘Chanson’, ‘Bossa’
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 스위치가 [ON]일 때 검색할 장르 키워드 풀
onKeywords = new Array ( "Downtempo" );
// 스위치가 [OFF]일 때 검색할 장르 키워드 풀
offKeywords = new Array ( "Chanson", "Bossa" );
var url = "";
switchState = switchState ? 0 : 1;
if ( switchState === 1 ) { // 스위치가 [ON]일 경우
var n = onKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + onKeywords [m];
}
else { // 스위치가 [OFF]일 경우
var n = offKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + offKeywords [m];
}
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
a way to relax
앰비언트 음악과 클래식 음악을 전환하여 들을 수 있습니다.
http://radio.psp.dl.playstation.net/psp/radio/player/os_AWayToRelax/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/os_AWayToRelax/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 스위치의 ON/OFF 상태에 따라 주어진 풀 내에서 질의할 장르를 무작위로 결정한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 결정한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
스위치가 [ON]일 때:
‘Classical’
스위치가 [OFF]일 때:
‘Ambient’
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 스위치가 [ON]일 때 검색할 장르 키워드 풀
onKeywords = new Array ( "Classical" );
// 스위치가 [OFF]일 때 검색할 장르 키워드 풀
offKeywords = new Array ( "Ambient" );
var url = "";
switchState = switchState ? 0 : 1;
if ( switchState === 1 ) { // 스위치가 [ON]일 경우
var n = onKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + onKeywords [m];
}
else { // 스위치가 [OFF]일 경우
var n = offKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + offKeywords [m];
}
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
FUNKACOPUNKA
PUNK 음악과 FUNK 음악을 스위치 하나로 전환할 수 있습니다.
http://radio.psp.dl.playstation.net/psp/radio/player/os_PUNKACOFUNKA/index.html
http://radio.psp.dl.playstation.net/psp/radio/player/os_PUNKACOFUNKA/index.html
radio.psp.dl.playstation.net
플레이어의 핵심 로직:
① 스위치의 ON/OFF 상태에 따라 주어진 풀 내에서 질의할 장르를 무작위로 결정한다.
② SHOUTcast directory에 API 요청을 보내 ①에서 결정한 장르로 분류되는 모든 방송을 질의한다.
③ API 응답을 파싱한 결과를 토대로 검색된 방송을 순차 선택하며 재생한다.
스위치가 [ON]일 때:
‘Funk’
스위치가 [OFF]일 때:
‘Punk’
var userAgentForHttpGet = "PSP-InternetRadioPlayer/1.00";
var size = 16384;
var devID="sh1ODSQoScMFgZWn"; // SCE에서 발급한 PSP용 공식 API 키
var shoutcastYelloPageUrl_A="http://api.shoutcast.com/legacy/stationsearch?k="+devID+"&search="; // API 호출 경로 형식
// 스위치가 [ON]일 때 검색할 장르 키워드 풀
onKeywords = new Array ( "Funk" );
// 스위치가 [OFF]일 때 검색할 장르 키워드 풀
offKeywords = new Array ( "Punk" );
var url = "";
switchState = switchState ? 0 : 1;
if ( switchState === 1 ) { // 스위치가 [ON]일 경우
var n = onKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + onKeywords [m];
}
else { // 스위치가 [OFF]일 경우
var n = offKeywords.length;
var m = Math.floor (Math.random () * (n + 1));
if ( n <= m ) m = n - 1;
url = shoutcastYelloPageUrl_A + offKeywords [m];
}
psp.sysRadioPrepareForHttpGet (url, userAgentForHttpGet, size, 0); // PSP 재생 플러그인 호출
'탐구' 카테고리의 다른 글
| PSP [인터넷 라디오] 기능 해부: ② 공식 플레이어를 메모리 스틱에서 실행 (0) | 2026.02.08 |
|---|
댓글