사용자:Deathlime/Deredirection

< 사용자:죽음의 시간
/* 

설치 방향

  1. 직접 링크를 클릭하십시오. http://en.wikipedia.org/w/index.php?title=User:Deathlime/Deredirectification/script&action=raw&ctype=text/javascript
  2. 도구로 이동>이 사용자 스크립트 설치...

뭐? 왜? 어디?

이 대본은 헥토[WP:*] 링크가 실제로 어떤 링크와 연결되었는지 알 수 있는 유일한 방법은 클릭하는 것이라고 나를 괴롭혔기 때문에 작성되었다. 이제 잠시 동안 마우스를 움직이면 *real* 링크 대상이 뜬다. 일치하는 모든 리디렉션에서 작동함 /^[A-Z][A-Za-z]{0,2}:/.

내가 아는 한, 이것은 질의 API가 모든미디어위키에서자동으로 작동해야 하는데,나는"en"에서만 테스트해 보았다 있는.wikipedia.org". 제목 필터링을 위한 정규식은 아마도 변경되어야 할 것이다. Query API에 대한 자세한 내용은 http://en.wikipedia.org/wiki/User:Yurik/Query_APIhttp://meta.wikimedia.org/wiki/Query을 참조하십시오.

하쿠나 마타타

코드

*/ // ==UserScript== // @name WP:Deredirection //@description 리디렉션 대상의 제목으로 리디렉션되는 하이퍼링크 제목 변경 : //@htp://*.wikipedia.org/wiki/* //@htp:/*.wikimedia.org/wiki/* /=/userScript== ///json.js (에서 추출)http://www.json.org/json.js ) // 저작권 JSON.org (JSON.org 참조) String.prototype.parseJSON = 함수() { return !(/[^, montinu}\[\]0-9)을 시도하십시오.\-+Eaeflnr-u \n\r\t]/.test(이.replace(/"\"(\\. [^"\])*"/g, '') &&ev('') &&&ev('' + 이 + ''); } 캐치(e) {return false;}}; }; var 로깅 = GM_log 설사! var 타이틀 = []; var = 문서.getElementsByTagName()"A"; (var i = 0; i < A.length; i++)에 대해 (/^[A-Z][A-Z][A-Za-z]?:/.테스트(A[i]).제목)&&&(제목.indexOf(A[i])제목) < 0) 제목.push(A[i].제목);titles.sort(), //not지만 정말 필요한!GM_xmlhttpRequest 기능 BANZAI(반응)를 위해(벌목>0){GM_log(titles.length+""+타이틀).}//이것이onload 콜백 기능(벌목>1){GM_log("상태 텍스트:"+response.statusTex{만약(벌목>0){GM_log("상태:"+response.status).}.t=;}      만약(response.status!=200)(" 가진 Angered 더 카발!\n"+"트라이 어게인에서"+response.status"몇년."+)를 던진다면 만약(벌목>1){GM_log("응답 텍스트:\n"+response.responseText).}만약(벌목>1), var yurik)response.responseText.parseJSO{GM_log("응답 헤더:\n"+response.responseHeaders).}.N().      (yurik == false) 던질 경우("I Tream A Wumpus!\n" + "Response Isn't not JSON.") 던질 경우(yurik.error) 던질 경우("실제 배트를 휘두르는 개발자의 주의를 기울이십시오!\n" + "당신의 실수는 \" + 유릭.오류.* + "\"; var 리디렉션 = {}; (var id in urik.page) {var 제목 = yurik.pages[id].제목; if (internik.page[id])!= 정의되지 않은 &&urik.pages[id] 페이지를 리디렉션한다.redirect.to != 정의되지 않음) {var redirect = girik.pages[id].redirect.to.*; redirects[title] = redirect; if (loging > 2) {GM_log(title + " + " + redirection);} } var A = document.getElementsByTagName()"A"; (var i = 0; i < A.length; i++)에 대한 (redirections[redirects]A[i]!= 정의되지 않은 A[i]제목 = 리디렉션[리디렉션]A[i.title]; } var URL = "http:///" + document.domain + "/w/query.php" //query 올바른 서버!  URL += "?noprofile"; //Don't care  URL += "&format=json"; //JSON FTW  URL += "&what=redirects"; //important  URL += "&titles="; //This gets tacked on later ´    if (titles.length > 0) //avoid an empty query  {      //OK, so WP:WP에는 432개의 리디렉션 링크가 있는데 // 이 모든 것을 하나의 쿼리에 담으면 똥이 날아간다 // 이제 우리는 큰 쿼리를 청크로 나누고 여러 요청 var 청크 = 100; (var k = 0; k < 제목.lengt; k += 청크) {var 요청 = {method: "GET", onload: BANZAI}; 요청; 요청.헤더 = { "Accept": "application/json", }; request.url = 인코딩URI(URL + 제목)슬라이스(k, k + 청크)(loging > 1) {GM_log(request.url );} GM_xmlhttpRequest(request); } } /**/