나만의 방송국 만들기

자동화 방송 소프트웨어 관련 자료 및 정보 공유

Softwar_Tutorial/RadioDJ

RadioDJ 트랙 회전 [Tracks Rotations] 만들기

열목이 2021. 8. 19. 09:36
반응형

트랙 회전을 만들어 그것을 재생 목록으로 불러와 방송 일정 동안 노래를 중복 없이 재생하는데 사용되므로 이것은 자동화 라디오 방송에서 꼭 필요한 작업입니다.

 

데이터베이스에 등록된 노래들을 자동으로 회전 시켜주는 규칙을 만드는 곳입니다.

옵션 버튼을 클릭합니다.

구성창에서 트랙 로테이션을 선택합니다.

 

트랙 회전창에서 재생목록에서 회전할 아이템을 추가 저장하여 방송에 사용합니다.

 

아이템 추가

아이템 추가 버튼을 눌러 원하는 작업을 선택하십시오.

 

카테고리에서 추적

 

데이터베이스에 올린 트랙의 카테고리를 선택할 수 있습니다.

 

하위 카테고리 선택

 

장르 선택

 

분위기, 성별, 언어

트랙 가져오기로 설정된 경우에만 사용할 수 있습니다.

 

시작 유형 선택

 

종료 유형 선택

 

스위퍼 선택

 

선택 모드

 

트랙 회전 규칙

단일 규칙 또는 모든 규칙을 덮어쓸 수 있습니다!

전역 회전 규칙 설정

옵션 >> 옵션 >> 자동회전목록(AutoDJ) 이동...

 

SQL 쿼리에서 추적

 

쿼리 로드 시 폴더에서 .sql 파일을 선택할 수 있습니다.

"C:\RadioDJ\SQL Rotation Examples\"

예)

- 2 SONGS FROM THE SAME ARTIST.sql

- ADD 10 MOST PLAYED TRACKS.sql

- ADD 10 TRACKS OF AN ARTIST.sql

- ADD 3 TRACKS WITH SWEEPER FROM 1970 TO 1989.sql

- LOAD ALBUM.sql

 

1970 년에서 1989 년까지 3 개의 트랙을 추가하고 스위퍼 한 번을 나오게 하는 예입니다!

 

쿼리 실행을 클릭하면...

 

트랙이 발견된 모습입니다.

 

쿼리에 오류가 있으면 경고가 표시됩니다!

 

카테고리, 하위 카테고리 또는 장르에는 이름만 ID 번호를 사용할 수 없으므로 편리합니다!

 

 

회전 SQL 쿼리 예제

출처(https://radiodj.info/) ※ 번역에 오역이 있을 수 있습니다 잘못된 부분이 있으면 쪽지로 연락 주십시오.

회전 시 사용할 질의에 대한 설명

코드 작성: Jhonny

$TrackRepeatInterval$ 및 $ArtistRepeatInterval$ 를 새 버전 v.2.0.0.6에서 사용할 수 있는지 확실하지 않음

 

회전의 전체 쿼리:

SELECT * FROM (
      #Christmas
      (SELECT `songs`.`ID`, `songs`.`artist`, `songs`.`title`, `songs`.`date_played`, `songs`.`artist_played`,`songs`.`id_subcat`, `songs`.`weight`, 1 AS `preference` FROM `songs`
      LEFT JOIN `queuelist` ON ( `songs`.`artist` = `queuelist`.`artist`)
      WHERE `songs`.`enabled` = 1
      AND `songs`.`song_type` = 0
      AND `songs`.`id_subcat` = 59
      AND `songs`.`id_genre` = 99
      AND (TIMESTAMPDIFF(MINUTE, `songs`.`date_played`, NOW()) > $TrackRepeatInterval$)
      AND (TIMESTAMPDIFF(MINUTE, `songs`.`artist_played`, NOW()) > $ArtistRepeatInterval$)
      AND (MONTH(CURDATE()) = 12)
      AND (DAY(CURDATE()) >= 6)
      AND (DAY(CURDATE()) <= 31)
      AND  `queuelist`.`artist` IS NULL
      AND `weight`=75
      ORDER  BY RAND ()
      LIMIT 20)

   UNION
      #Summer
      (SELECT `songs`.`ID`, `songs`.`artist`, `songs`.`title`, `songs`.`date_played`, `songs`.`artist_played`,`songs`.`id_subcat`,  `songs`.`weight`, 2 AS `preference` FROM `songs`
      LEFT JOIN `queuelist` ON ( `songs`.`artist` = `queuelist`.`artist`)
      WHERE `songs`.`enabled` = 1
      AND `songs`.`song_type` = 0
      AND `songs`.`id_subcat` = 68
      AND `songs`.`id_genre` = 151
      AND (TIMESTAMPDIFF(MINUTE, `songs`.`date_played`, NOW()) > $TrackRepeatInterval$)
      AND (TIMESTAMPDIFF(MINUTE, `songs`.`artist_played`, NOW()) > $ArtistRepeatInterval$)
      AND (MONTH(CURDATE()) >= 6)
      AND (MONTH(CURDATE()) <= 8)
      AND (DAY(CURDATE()) >= 1)
      AND (DAY(CURDATE()) <= 31)
      AND  `queuelist`.`artist` IS NULL
      AND `weight`=75
      ORDER  BY RAND ()
      LIMIT 20)

   UNION
      #90 POP
      (SELECT `songs`.`ID`, `songs`.`artist`, `songs`.`title`, `songs`.`date_played`, `songs`.`artist_played`,`songs`.`id_subcat`,  `songs`.`weight`, 3 AS `preference` FROM `songs`
      LEFT JOIN `queuelist` ON ( `songs`.`artist` = `queuelist`.`artist`)
      WHERE `songs`.`enabled` = 1
      AND `songs`.`song_type` = 0
      AND `songs`.`id_subcat` = 68
      AND `songs`.`id_genre` = 99
      AND (TIMESTAMPDIFF(MINUTE, `songs`.`date_played`, NOW()) > $TrackRepeatInterval$)
      AND (TIMESTAMPDIFF(MINUTE, `songs`.`artist_played`, NOW()) > $ArtistRepeatInterval$)
      AND  `queuelist`.`artist` IS NULL
      AND `weight`=75
      ORDER  BY RAND ()
      LIMIT 20)
   ORDER BY `date_played` asc
   LIMIT 60
)
temp
ORDER BY `preference`, `date_played` asc
LIMIT 1;

UNION 이란 단어가 몇 번이나 지나가는 것을 보는 것처럼.. 2개의 'Unions' 사이의 모든 텍스트는 특정 노래 유형을 검색하고 있다. 잘 보면 3개의 블록을 볼 수 있음.

#Christmas
#Summer
#90 POP

모든 블록이 다 똑같고, 그리고 그것이 지어지는 모든 방법을 설명해 주고 것임.

첫 번째 (Christmas)에 대해 설명하고 다음과 같은 대사를 설명하겠다.

     #Christmas
    (SELECT `songs`.`ID`, `songs`.`artist`, `songs`.`title`, `songs`.`date_played`, `songs`.`artist_played`,`songs`.`id_subcat`, `songs`.`weight`, 1 AS `preference` FROM `songs`
    LEFT JOIN `queuelist` ON ( `songs`.`artist` = `queuelist`.`artist`)
    WHERE `songs`.`enabled` = 1
    AND `songs`.`song_type` = 0
    AND `songs`.`id_subcat` = 59
    AND `songs`.`id_genre` = 99
    AND (TIMESTAMPDIFF(MINUTE, `songs`.`date_played`, NOW()) > $TrackRepeatInterval$)
    AND (TIMESTAMPDIFF(MINUTE, `songs`.`artist_played`, NOW()) > $ArtistRepeatInterval$)
    AND (MONTH(CURDATE()) = 12)
    AND (DAY(CURDATE()) >= 6)
    AND (DAY(CURDATE()) <= 31)
    AND `queuelist`.`artist` IS NULL
    AND `weight`=75
    ORDER  BY RAND ()
    LIMIT 20)

설명은 다음과 같다.

#Christmas

이 곡은 어떤 곡이 선정될지 알기 위한 이름일 뿐입니다.

# 또는 -- 코멘트를 해보면 커맨트로 보이지 않을 것입니다.

(SELECT `songs`.`ID`, `songs`.`artist`, `songs`.`title`, `songs`.`date_played`, `songs`.`artist_played`,`songs`.`id_subcat`, `songs`.`weight`, 1 AS `preference` FROM `songs` LEFT JOIN `queuelist` ON ( `songs`.`artist` = `queuelist`.`artist`)

RadioDJ가 데이터베이스에서 검색해야 하는 모든 영역은 설명하기 복잡하지만, 가장 중요한 것은 노래를 로드하는 특정 명령을 내릴 것이기 때문에 "1 as `preference`"로 하는 것임(모든 곡 검색 시 기본 설정 번호가 다름).

    WHERE `songs`.`enabled` = 1
    AND `songs`.`song_type` = 0
    AND `songs`.`id_subcat` = 59
    AND `songs`.`id_genre` = 99

검색이 시작...

enabled = 1 (노래로 사용 가능)

song_type 0 = 음악(징글의 경우 1개)

id_subcat = 하위 카테고리 ID(이 경우 59 = Christmas)

id_genre = 장르의 ID(이 경우 99 = Pop)

(ID를 모르면 데이터베이스를 살펴보십시오. 거기서 모든 ID와 이름을 찾을 수 있습니다. 여기에선 목록을 만들어서 컴퓨터에 저장하는 겁니다.)

    AND (TIMESTAMPDIFF(MINUTE, `songs`.`date_played`, NOW()) > $TrackRepeatInterval$)
    AND (TIMESTAMPDIFF(MINUTE, `songs`.`artist_played`, NOW()) > $ArtistRepeatInterval$)

이것은 아티스트 분리입니다. RadioDJ의 옵션 화면에서 설정 한 것처럼 사용됩니다.

    AND (MONTH(CURDATE()) = 12)
    AND (DAY(CURDATE()) >= 6)
    AND (DAY(CURDATE()) <= 31)

이것이 가장 좋은 부분이며, 현재 날짜가 6-12 및 31-12 사이인 경우에만 노래를 로드합니다

 AND  `queuelist`.`artist` IS NULL

노래가 재생되지 않고 이미 로드되어 있는지 확인합니다 (로드 중인 회전에서 노래를 두 번 얻지 못함)

AND `weight`=75

weight는 취향입니다. 높은 회전에 75, 중간 회전에 50, 낮은 회전에 25를 사용합니다.

더 나은 노래를 계획할 수 있습니다. (75일만 사용하고 50일 밤에도 25일 동안 만 사용합니다.)

이것을 사용한다면. "재생 중, 우선순위 별 감소"가 0.0으로 설정되어 있는지 확인하십시오.

    ORDER  BY RAND ()
    LIMIT 20)

20 곡의 노래를 선택합니다. 스크립트에서 나중에 (끝에) 1을 사용하지 않습니다. 단지 1 개의 트랙을 제한으로 선택할 것입니다!

이게 전부입니다. 그러나 3 X 20이 아닌 회전에 1곡을 추가하고 싶다는 것을 알고 있습니다.

여기에 설명이 있습니다.

전체 쿼리의 거의 끝에서 이 텍스트를 찾을 수 있습니다.

    ORDER BY `date_played` asc
    LIMIT 60
)
temp
ORDER BY `preference`, `date_played` asc
LIMIT 1

다시 이 텍스트를 부분적으로 잘라 설명:

전체 쿼리의 맨 아래에 있습니다.

  ORDER BY `date_played` asc
    LIMIT 60

이전 부분에서는 20 개를 사용했습니다. 전체 쿼리에서 볼 수 있듯이 3 가지 곡 유형 (Christmas, Summer, 90 pop) 각각에서 20 개의 트랙을 검색합니다.

각 노래 유형에 대해 총 60 개의 노래에 대한 데이터베이스 검색을 허용합니다.

위의 텍스트에서 데이터베이스는 연주 날짜 순서로 60 개의 노래를 모두 배치합니다.

그것은 내가 선호하는 것 (노래 전에 보여진 것처럼)과 날짜로 잘 노래했다.

그리고 마지막으로 회전에 추가하기 위해 1 곡만 남았습니다!

    )
temp
ORDER BY `preference`, `date_played` asc
LIMIT 1

이벤트, 노래 시작 및 종료 날짜를 사용할 필요가 없습니다. 데이터베이스에서 불필요하게 노래를 비활성화하지 않고 현재 날짜가 올바른 경우 노래를로드합니다.

회전 SQL 쿼리 예제 부분은 RadioDJ 포럼 회원 : ruvo80님의 자료입니다.

반응형