모듈 토크:Commons 링크
Module talk코드 리뷰?
@RexS: Mike Peel의 토크 페이지에서 했던 토론 기억나세요?여러 Wikidata 속성에 대해 크로스 체크를 수행하여 Commons 갤러리 또는 카테고리(또는 둘 다)를 검색하기 위해 Lua 코드를 구현했습니다.현재 {{commons and category} 및 {{commons and category-inline}에서 사용되고 있는 모듈입니다.{{commons-inline}}, 아마도 {{commons category}}에 사용하고 싶습니다.제가 무슨 일을 하기 전에 코드를 보시고 피드백을 주시겠습니까?여느 때처럼, 시험지는 여기 있습니다.도움이 되거나 제안해 주셔서 감사합니다!- hike395 (대화)2020년 3월 15일 (UTC)
- @Hike395: 모듈 토크에서 방금 결과를 확인했습니다.Commons 링크/테스트 케이스는 상당히 포괄적이고 정확해 보입니다.모듈에서의 코드도 확인했습니다.Commons 링크도 좋고 보기에도 좋습니다.코드의 대부분은 과거에 사용한 기능과 비슷하기 때문에 당신의 알고리즘이 정확하다고 확신합니다.제가 예상하는 유일한 문제는 에디터가 코드를 오용하는 경우입니다.또한 함수가 에러 메시지와 함께 실패하도록 내버려 둘 것인지, 아니면 에러를 포착하여 함수가 null로 계속되도록 할 것인지를 결정해야 합니다.예를 들어 다음과 같습니다.
{{#invoke:Commons link getGallery qid=Q0 search=}}→ ID "Q0"을 시스템에서 알 수 없습니다. 올바른 엔티티 ID를 사용하십시오(← 잘못된 엔티티 ID).{{#invoke:Commons link getGallery qid=Q68979196 search=}}→ [[일반:스페셜:검색/ ](← entity-id는 존재하지만 링크가 없음)
- 보통 15번 라인과 같은 지역 기능을 악용할 수 있는지 스스로 생각해 보아야 합니다.
qid = mw.wikibase.getEntityIdForCurrentPage()– 연결된 엔티티가 없는 페이지에서 코드가 실행될 수 있습니까?ID? 그렇다면 16행에서 qid가 0으로 반환되면 어떻게 됩니까?20행에서도 마찬가지로,mw.wikibase.sitelink(qid)어떻게든 0(시트링크 없음)을 반환한다.덧붙여서, 최신 콜을 사용하는 것을 추천합니다.mw.wikibase.getSitelink최신인 반면mw.wikibase.sitelink는 레거시 에일리어스이므로 새 코드에서는 사용할 수 없습니다(MW 단위:내선번호:Wikibase Client/Lua #레거시 에일리어스). - 어쨌든, 오류를 발견하는 편집자로부터 피드백을 받을 준비가 되어 있는 한, 프로덕션 환경에 코드를 도입하는 것에 대해서는 거리낌이 없습니다.폰 몰트케를 바꿔 말하면, "사용자와의 접촉에서 살아남는 코드는 없다."건배 --RexS (토크) 2020년 3월 15일 (UTC)응답
- @Hike395: 코드를 확인할 수 있는 충분한 Lua는 없지만, 다른 방법을 제안하고 싶다.이상적인 세계에서는 다음과 같은 행동을 원합니다.
- {Commons}, {{Commons category}, {{Commons and category}}의 결합을 의미한다고 생각합니다.이것들은 좋은 Lua 백엔드가 있으면 간단하게 실행할 수 있습니다.개인적으로는 시트링크를 위해 Commons 카테고리(P373)와 Commons Gallery(P935)에 대한 지원을 가능한 한 빨리 중단하고 싶지만, 현재로서는 예비 옵션을 유지하는 것이 좋을 것 같습니다.감사해요.마이크 필 (대화)2020년 3월 17일 (UTC[응답
- @Mike 필 및 RexxS:모듈의 함수를 사용하여 제안사항을 작성할 수 있습니다.(1), (2), (4)의 조합이 매우 마음에 듭니다.갤러리와 카테고리 링크 중 하나를 보여주려고 했는데 둘 다 존재한다면 둘 다 보여주자고 제안했다는 점만 빼면 {Commons-inline}에서 제가 하고 싶은 것과 거의 비슷합니다.아마 가장 쉬운 방법은 {Commons and category}와 {{Commons and category-inline}}의 동작을 당신의 제안을 반영하여 변경하는 것입니다.
- (1)과 (2)를 모두 수행하려면 Commons 카테고리(P373)와 Commons Gallery(P935)를 모두 유지해야 합니다.이것은 Commons sitelink를 보완하는 것이 필요하기 때문입니다.Commons sitelink는 갤러리 또는 카테고리만 저장할 수 있지만 둘 다 저장할 수는 없습니다.- hike395 (대화) 2020년 3월 18일 01:11 (UTC)
- @Mike 필 및 RexxS:재미삼아 Mike 아이디어의 일부를 실행했다[ (1) 、 ( 2 ) 、 ( 4 ) 。그것은 꽤 쉬웠다.샌드박스 모듈의 getGalleryAndCategory()에 넣고 {{Commons and category/sandbox}를 업데이트하여 사용하였습니다.이것을 채용하면, 갤러리와 카테고리 중 하나가 정확하게 있으면, 다른 하나를 검색하는 것이 아니라, {Commons and category}의 동작이 바뀝니다.둘 다 없는 경우 둘 다 검색할 수 있습니다.
- 추가 크레딧을 위해 {{Commons}와 {{Commons category}}}가 {{Commons and category}}의 포장지가 될 수 있도록 작성하였습니다.{{Commons}}의 동작이 변경됩니다(카테고리 링크가 표시될 수 있습니다).{{Commons category}} 동작이 변경됩니다(갤러리 링크가 표시될 수 있습니다).하지만 잘 될 거야
- WDYT? — hike395 (토크) 2020년 3월 18일 (UTC)
- @Hike395: 저는 이것이 마음에 듭니다.더 넓은 커뮤니티도 마찬가지였으면 좋겠습니다.갤러리와 카테고리의 양쪽 사이트 링크에서 Wikidata의 표준 설정은 Czarnca(Q2322184)와 같습니다(랜덤 예시로 어제 편집한 마지막 예).여기서 갤러리 사이트 링크를 Czarnca(Q2322184)에서 취득하고 토픽의 메인 카테고리(P910)에서 Category:Czarnca(Q87840009)까지 추적하여 카테고리 사이트 링크를 취득할 수 있습니다.카테고리에서는 카테고리의 메인토픽(P301)을 통해 역방향으로 네임스페이스 체크를 실시해야 합니다.이 경우 Commons 카테고리(P373)와 Commons Gallery(P935)를 유지할 필요가 없습니다(다른 항목은 아직 정리 중입니다).감사해요.Mike Peel (토크) 2020년 3월 18일 (UTC)
Lua 오류
일부 문서에는 "Lua error: bad 인수 #1 to 'getBest Statements'(string expected, got nero)가 표시되어 있습니다.예: 페이스트리, 리모트 컨트롤.그 이유는qid는 제로이다.mw.wikibase.getBestStatements(qid, "P373")184호선에 있습니다.하이크395가 조사해주길 바란다Johnuniq (대화) 10:28, 2021년 8월 2일 (UTC)
