fork download
  1. // 代替コード
  2.  
  3. /* { java.net.URL expandShortURL(java.net.URL|string) } */
  4. function expandShortURL(u)
  5. {
  6. if (u == null) {
  7. return null;
  8. }
  9. var su, u0 = u;
  10. if (u instanceof java.net.URL) {
  11. su = u.toString();
  12. } else if (u instanceof java.lang.String || typeof u === 'string') {
  13. su = new java.lang.String(u);
  14. try {
  15. u = new java.net.URL(su);
  16. } catch(e) {
  17. return u0;
  18. }
  19. }
  20.  
  21. var needExpand = java.util.regex.Pattern.compile(
  22. "https?://(?:(?:bit\\.ly|j\\.mp)/[-0-9A-Za-z]+|(?:t\\.co|tinyurl\\.com|u\\.nu|goo\\.gl(?:/\\p{Alnum}+)?|ow\\.ly|is\\.gd|tl\\.gd|twurl\\.nl|phpc\\.in|url4\\.eu|om\\.ly|tcrn\\.ch|(?:short|wong|abf|amzn|htn)\\.to|dlvr\\.it|su\\.pr|nxy\\.in|icio\\.us|wur\\.la|post\\.ly|ping\\.fm|awe\\.sm|i\\.s-a\\.cc|bkite\\.com|arst\\.ch|viigo\\.im|dld\\.bz|fb\\.me|tr\\.my|fwd4\\.me|mangk\\.us|digg\\.com|cot\\.ag|alturl\\.com|rdir\\.pl|(?:www\\.)?tumblr\\.com|tr\\.im|migre\\.me|zapt\\.in|shar\\.es|tynie\\.net|urlo\\.me|cli\\.gs|t\\.asahi\\.com|xap\\.vc|30m\\.in|gj\\.tc|lb\\.to|urx\\.nu|redir\\.ec)/\\p{Alnum}+|p\\.tl/[\\w-]+|ff\\.im/-?\\p{Alnum}+|wp\\.me/[-\\da-zA-Z]+|ustre\\.am/:?\\p{Alnum}+|goo\\.gl/\\p{Alnum}+\\.qr|ll\\.ly/[0-9A-Za-z!_*~]+)",
  23. 2).matcher(su).matches();
  24.  
  25. if (!needExpand) {
  26. return u0;
  27. }
  28. if (su.startsWith("http://t...content-available-to-author-only...r.com/")) {
  29. try {
  30. u = new java.net.URL("http://www." + su.substring(7));
  31. }
  32. catch(e) {}
  33. }
  34. else if(su.startsWith("http://g...content-available-to-author-only...o.gl/") && su.endsWith(".qr")) {
  35. try {
  36. u = new java.net.URL(su.substring(0, su.length() - 3));
  37. }
  38. catch(e) {}
  39. }
  40. var hr = v2c.createHttpRequest(u);
  41. if (hr.getHead()) {
  42. var rc = hr.responseCode;
  43. if (rc == 301 || rc == 302 || rc == 303 || rc == 307) {
  44. var u2, loc = hr.getResponseHeader("location");
  45. if (loc != null) {
  46. try {
  47. return new java.net.URL(u, loc);
  48. } catch(e) {
  49. v2c.println("u, loc: " + u + "," + loc);
  50. return u0;
  51. }
  52. }
  53. }
  54. else if (rc == 200) {
  55. var m;
  56. var contents = hr.getContentsAsString() + "";
  57. var host = u.getHost() + "";
  58. if (host == "url4.eu" || host == "om.ly" || host == "viigo.im" || host == "nxy.in") {
  59. m = (new RegExp("<iframe\\s[^>]*src=\"(https?://[!-~&&[^\">]]+)\"", "i")).exec(contents);
  60. if (m) {
  61. return new java.net.URL(m[1]);
  62. }
  63. if (host == "nxy.in") {
  64. m = (new RegExp("Redirect\\('(https?://[!-~&&[^\">]]+)'", "i")).exec(contents);
  65. if (m) {
  66. return new java.net.URL(m[1]);
  67. }
  68. }
  69. }
  70. else if (host == "i.s-a.cc") {
  71. m = (new RegExp("<iframe\\s[^>]*src=\"" + u.getPath() + "\\?([!-~&&[^\">]]+)\"")).exec(contents);
  72. if (!m) {
  73. return u0;
  74. }
  75. var re2 = new RegExp("[&<>\"']", "g");
  76. var dic = {"&":"&amp;","<":"&lt;",">":"&gt;",'"':'"',"'":"'"};
  77. var s2 = m[1].replace(re2,function(m0) {
  78. return dic[m0];
  79. });
  80. var m2 = (new RegExp("&utm_content=(http[^&]+)(?:&|$)")).exec(s2);
  81. if (!m2) {
  82. return u0;
  83. }
  84. return new java.net.URL(java.net.URLDecoder.decode(m2[1], "UTF-8"));
  85. }
  86. else if (host == "shar.es") {
  87. m = (new RegExp("window\\.location='(https?://[!-~&&[^\"'>]]+)'", "i")).exec(contents);
  88. if (m) {
  89. return new java.net.URL(m[1]);
  90. }
  91. }
  92. else if (host == "p.tl") {
  93. m = (new RegExp("\\bwindow\\.short_url *= *\"(https?://[!-~&&[^\"'>]]+)\"", "i")).exec(contents);
  94. if (m && m[1] == (u.toString()+"")) {
  95. m = (new RegExp("\\bwindow\\.long_url *= *\"(https?://[!-~&&[^\"'>]]+)\"", "i")).exec(contents);
  96. if (m) {
  97. return new java.net.URL(m[1]);
  98. }
  99. }
  100. }
  101. else if (host == "ll.ly") {
  102. m = (new RegExp("<a\\s[^>]*href=\"([^\"]+\\.axfc\\.net/uploader/[^\"]+)\"", "i")).exec(contents);
  103. if (m) {
  104. return new java.net.URL(m[1]);
  105. }
  106. m = (new RegExp("<h\\d>リンク先</h\\d>\\s*(?:<p>)?<a href=\"([^\"]+)\">")).exec(contents);
  107. if (m) {
  108. return new java.net.URL(m[1]);
  109. }
  110. }
  111. }
  112. }
  113. return u0;
  114. };
  115. /* { string prompt(string, string) } */
  116. function prompt(s, v)
  117. {
  118. var result = javax.swing.JOptionPane.showInputDialog(null,
  119. s,
  120. "Script alert " + v2c.getScriptSubFile("").getName(),
  121. javax.swing.JOptionPane.PLAIN_MESSAGE,
  122. null,
  123. null,
  124. v
  125. );
  126. return result + "";
  127. };
  128.  
  129.  
  130. var su = "http://content-available-to-author-only.tl/1PFk";
  131. var s = prompt('展開したURLはこちら', expandShortURL(su));
  132. v2c.println('戻り値:' + s);
  133.  
Runtime error #stdin #stdout #stderr 0.57s 323648KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
js: uncaught JavaScript runtime exception: ReferenceError: "v2c" is not defined.