사용자:Hsl0/DiscussionRatings: 두 판 사이의 차이
보이기
< 사용자:Hsl0
편집 요약 없음 |
잔글편집 요약 없음 |
||
(사용자 2명의 중간 판 45개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
* [[mw:Extension:DiscussionTools]] 사용 전제 | |||
# 평가 대상이 될 이름공간을 정해둠. (문서에 자기 자신에 대한 평가 문단이 있는 문서의 이름공간과, 연결된 토론 문서에 평가 문단이 있는 문서의 이름공간을 구별함) | |||
# 사용자들이 평가를 남길 문단명을 정해둠. | |||
# 대상 이름공간에 평가 문단이 존재할 경우, 쉽게 평가할 수 있는 위젯을 해당 문단 제목 다음에 추가함. (위키텍스트에 존재하지 않고, 확장 기능이 렌더링 중 추가함. 원하면 위키텍스트로 추가 및 예외 설정 가능) | |||
# 대상 이름공간이 편집될 때, 수정된 문단 제목이 평가 문단 제목으로 정해진 것과 동일할 경우, DiscussionTools를 이용해 해당 문단에 포함된 각 하위 문단과 메시지를 집계함. | |||
# 집계한 평가 수를 VoteNY 호환 DB 테이블에 저장 (DB 테이블은 캐싱 역할만 하고 문서가 편집될 때마다 위키텍스트 내용을 기반으로 갱신됨) | |||
# SectionRatings에서 해당 데이터를 활용 | |||
= | == API: discussiontoolspageinfo == | ||
* 클라이언트 사이드 스크립트보다는 서버 사이드 확장기능이 더 유용하다. 각 게임별로 크롤링할 | action API에서 action=discussiontoolspageinfo&prop=threaditemshtml 사용 | ||
ID는 다음과 같은 구조임. | |||
* 문단: h-(제목)-(타임스탬프) | |||
* 의견: c-(작성자)-(타임스탬프) | |||
문단의 name은 다음과 같은 구조임. | |||
* h-(작성자)-(타임스탬프) | |||
하위에 속한 의견은 마지막에 -와 상위 요소가 문단일 경우 (제목)이, 상위 요소가 의견일 경우 (작성자)-(타임스탬프)가 ID에 붙음. | |||
하위에 속한 문단은 제목과 타임스탬프 사이에 상위 문단의 (제목)이 붙고 앞뒤에 -로 나뉨. | |||
뒤에 붙는 상위요소는 1단계 위까지만 붙음. | |||
문단명이나 사용자명의 -에 주의할것. | |||
문단명은 {{주석|escapeIDForLink|PHP: (static) MediaWiki\Parser\Sanitizer::escapeIDForLink / JS: mw.util.escapeIDForLink}} 처리됨. | |||
타임스탬프는 밀리세컨드 단위까지의 ISO 8601 Zulu Time(예: {{#time: Y-m-d"T"H:i:s.000"Z"}}) 또는 년월일시분초를 구분자 없이 숫자만 이어붙인 형태(예: {{#time: YmdHis}}) | |||
=== 구조 예시 === | |||
<syntaxhighlight lang="wikitext"> | |||
== 게임 평가하기 == | |||
어쩌구 --[[사용자:사용자1|사용자1]] 2025년 1월 27일 (월) 17:07 (KST) | |||
=== 하위 문단 === | |||
저쩌구 --[[사용자:사용자2|사용자2]] 2025년 1월 27일 (월) 17:07 (KST) | |||
:이러쿵 --[[사용자:사용자3|사용자3]] 2025년 1월 27일 (월) 17:07 (KST) | |||
</syntaxhighlight> | |||
* 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 | |||
* 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 | |||
== 설정 == | |||
* $wgDiscussionRatingsSelfRatedNamespaces: int(namespace id)[] | |||
* $wgDiscussionRatingsTalkRatedNamespaces: int(namespace id)[] | |||
* $wgDiscussionRatingsCommentIndentation: 'invisible'|'bullet'|'number' | |||
== 인터페이스 메시지 == | |||
* DiscussionRatings-section: 문서 평가하기 | |||
* DiscussionRatings-section-''n'' (n: 이름공간 ID): {DiscussionRatings-section} | |||
* DiscussionRatings-rating-1: 매우 나쁘다 | |||
* DiscussionRatings-rating-2: 나쁘다 | |||
* DiscussionRatings-rating-3: 보통이다 | |||
* DiscussionRatings-rating-4: 좋다 | |||
* DiscussionRatings-rating-5: 매우 좋다 | |||
== 고찰 == | |||
* 클라이언트 사이드 스크립트보다는 서버 사이드 확장기능이 더 유용하다. 각 게임별로 크롤링할 수는 없기 때문이다. action API 대신 사용할 수 있는 서버 사이드 API 필요 => [[mw:API:Calling internally]] | |||
* [[/문단 통계|가끔씩 문단 이름이 다른 경우]]가 있다. {{주석|시스템 메시지 기능|미디어위키 이름공간과 int 파서 함수}}이나 틀을 활용해 통일할 필요가 있다. | |||
*: 백괴게임 당시의 평론 문단과 현재 사용 중인 리버티게임의 평론 문단 제목이 다릅니다. 기존의 문단 제목은 현재 사용 중인 문단 제목으로 변경할 필요가 있습니다. --[[사용자:명진|명진]] ([[사용자토론:명진|토론]]) 2023년 9월 21일 (목) 16:33 (KST) | |||
* API 활용이 부적합하다면 DiscussionTools 확장기능을 그냥 포크해서 토론 파싱부분을 베이스로 다시 만들면 된다. | |||
* 토론란이 편집되지 않는 동안, 토론란을 분석해서 나온 평점을 캐싱해도 좋다. | |||
** 토론란이 편집됐을 때, 게임 평가 문단이 수정됐을 경우, 평가를 집계해 VoteNY 호환 DB 테이블에 캐싱한다. 그러면 SectionRatings에서 해당 데이터를 활용한다. |
2025년 1월 31일 (금) 22:30 기준 최신판
- 평가 대상이 될 이름공간을 정해둠. (문서에 자기 자신에 대한 평가 문단이 있는 문서의 이름공간과, 연결된 토론 문서에 평가 문단이 있는 문서의 이름공간을 구별함)
- 사용자들이 평가를 남길 문단명을 정해둠.
- 대상 이름공간에 평가 문단이 존재할 경우, 쉽게 평가할 수 있는 위젯을 해당 문단 제목 다음에 추가함. (위키텍스트에 존재하지 않고, 확장 기능이 렌더링 중 추가함. 원하면 위키텍스트로 추가 및 예외 설정 가능)
- 대상 이름공간이 편집될 때, 수정된 문단 제목이 평가 문단 제목으로 정해진 것과 동일할 경우, 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-02-17T08:40:00.000Z) 또는 년월일시분초를 구분자 없이 숫자만 이어붙인 형태(예: 20250217084000)
구조 예시[편집 | 원본 편집]
== 게임 평가하기 ==
어쩌구 --[[사용자:사용자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-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에서 해당 데이터를 활용한다.