사용자:Hsl0/DiscussionRatings
보이기
< 사용자:Hsl0
- 평가 대상이 될 이름공간을 정해둠. (문서에 자기 자신에 대한 평가 문단이 있는 문서의 이름공간과, 연결된 토론 문서에 평가 문단이 있는 문서의 이름공간을 구별함)
- 사용자들이 평가를 남길 문단명을 정해둠.
- 대상 이름공간에 평가 문단이 존재할 경우, 쉽게 평가할 수 있는 위젯을 해당 문단 제목 다음에 추가함. (위키텍스트에 존재하지 않고, 확장 기능이 렌더링 중 추가함. 원하면 위키텍스트로 추가 및 예외 설정 가능)
- 대상 이름공간이 편집될 때, 수정된 문단 제목이 평가 문단 제목으로 정해진 것과 동일할 경우, DiscussionTools를 이용해 해당 문단에 포함된 각 하위 문단과 메시지를 집계함.
- 집계한 평가 수를 VoteNY 호환 DB 테이블에 저장 (DB 테이블은 캐싱 역할만 하고 문서가 편집될 때마다 위키텍스트 내용을 기반으로 갱신됨)
- SectionRatings에서 해당 데이터를 활용
API: discussiontoolspageinfo[편집 | 원본 편집]
action API에서 action=discussiontoolspageinfo&prop=threaditemshtml 사용
ID는 다음과 같은 구조임.
- 문단: h-(제목)-(타임스탬프)
- 의견: c-(작성자)-(타임스탬프)
문단의 name은 다음과 같은 구조임.
- h-(작성자)-(타임스탬프)
하위에 속한 의견은 마지막에 -와 상위 요소가 문단일 경우 (제목)이, 상위 요소가 의견일 경우 (작성자)-(타임스탬프)가 ID에 붙음.
하위에 속한 문단은 제목과 타임스탬프 사이에 상위 문단의 (제목)이 붙고 앞뒤에 -로 나뉨.
뒤에 붙는 상위요소는 1단계 위까지만 붙음.
문단명이나 사용자명의 -에 주의할것.
문단명은 escapeIDForLink 처리됨.
타임스탬프는 밀리세컨드 단위까지의 ISO 8601 Zulu Time(예: 2025-04-03T06:02:37.000Z) 또는 년월일시분초를 구분자 없이 숫자만 이어붙인 형태(예: 20250403060237)
구조 예시[편집 | 원본 편집]
== 게임 평가하기 ==
어쩌구 --[[사용자:사용자1|사용자1]] 2025년 1월 27일 (월) 17:07 (KST)
=== 하위 문단 ===
저쩌구 --[[사용자:사용자2|사용자2]] 2025년 1월 27일 (월) 17:07 (KST)
:이러쿵 --[[사용자:사용자3|사용자3]] 2025년 1월 27일 (월) 17:07 (KST)
- h-사용자1-2025-01-27T08:07:28.000Z
- h-게임_평가하기-2025-01-27T08:07:28.000Z
- c-사용자2-2025-01-27T08:07:28.000Z-게임_평가하기
- h-사용자2-2025-01-27T08:07:28.000Z
- h-하위_문단-게임_평가하기-2025-01-27T08:07:28.000Z
- c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
- c-사용자3-2025-01-27T08:07:28.000Z-사용자2-2025-01-27T08:07:28.000Z
- c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
- h-사용자2-2025-01-27T08:07:28.000Z
- h-하위_문단-게임_평가하기-2025-01-27T08:07:28.000Z
- c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
- c-사용자3-2025-01-27T08:07:28.000Z-사용자2-2025-01-27T08:07:28.000Z
- c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
설정[편집 | 원본 편집]
- $wgDiscussionRatingsSelfRatedNamespaces: int(namespace id)[]
- $wgDiscussionRatingsTalkRatedNamespaces: int(namespace id)[]
- $wgDiscussionRatingsCommentIndentation: 'invisible'|'bullet'|'number'
인터페이스 메시지[편집 | 원본 편집]
- DiscussionRatings-section: 문서 평가하기
- DiscussionRatings-section-n (n: 이름공간 ID): {DiscussionRatings-section}
- 리버티게임에서: DiscussionRatings-section-0: 게임 평가하기
- DiscussionRatings-rating-1: 매우 나쁘다
- DiscussionRatings-rating-2: 나쁘다
- DiscussionRatings-rating-3: 보통이다
- DiscussionRatings-rating-4: 좋다
- DiscussionRatings-rating-5: 매우 좋다
고찰[편집 | 원본 편집]
- 클라이언트 사이드 스크립트보다는 서버 사이드 확장기능이 더 유용하다. 각 게임별로 크롤링할 수는 없기 때문이다. action API 대신 사용할 수 있는 서버 사이드 API 필요 => mw:API:Calling internally
- 가끔씩 문단 이름이 다른 경우가 있다. 시스템 메시지 기능이나 틀을 활용해 통일할 필요가 있다.
- API 활용이 부적합하다면 DiscussionTools 확장기능을 그냥 포크해서 토론 파싱부분을 베이스로 다시 만들면 된다.
- 토론란이 편집되지 않는 동안, 토론란을 분석해서 나온 평점을 캐싱해도 좋다.
- 토론란이 편집됐을 때, 게임 평가 문단이 수정됐을 경우, 평가를 집계해 VoteNY 호환 DB 테이블에 캐싱한다. 그러면 SectionRatings에서 해당 데이터를 활용한다.