code.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // ^((https?):\/)?\/?(vimeo.com)((\/\\w+)*\/)([0-9]+[^#?\s]+)(.*)?(#[\\w\\-]+)?$
  2. // https://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex
  3. const regex = new RegExp(`^((https?):\/)?\/?(vimeo.com)((\/\\w+)*\/)([0-9]+[^#?\s]+)(.*)?(#[\\w\\-]+)?$`);
  4. const inputWrapper = document.getElementById("input-wrapper");
  5. const inputField = document.getElementById("input-field");
  6. const button = document.getElementById("button");
  7. const qualitySelect = document.getElementById("selector");
  8. const tipText = document.getElementById("tip");
  9. var videoUrlText = document.getElementById("result-url-txt");
  10. var posterUrlText = document.getElementById("result-poster-txt");
  11. var videoUrlAnchor = document.getElementById("result-url-anchor");
  12. var posterUrlAnchor = document.getElementById("result-poster-anchor");
  13. var currentID = -1;
  14. function hideLinks() {
  15. tipText.classList.add("inactive");
  16. videoUrlAnchor.classList.add("inactive");
  17. posterUrlAnchor.classList.add("inactive");
  18. }
  19. function get() {
  20. if (currentID != -1) {
  21. hideLinks();
  22. const url = `https://vget.netlify.com/.netlify/functions/get?id=${currentID}&q=${qualitySelect.value}`;
  23. fetch(url)
  24. .then(data=>{
  25. return data.json();
  26. })
  27. .then(res=>{
  28. if (!res.video) {
  29. videoUrlAnchor.removeAttribute("href");
  30. videoUrlText.innerText = "(failed)";
  31. posterUrlAnchor.removeAttribute("href");
  32. posterUrlText.innerText = "(failed)";
  33. } else {
  34. videoUrlAnchor.href = (res.video);
  35. videoUrlText.innerText = "(video link)";
  36. posterUrlAnchor.href = (res.poster);
  37. posterUrlText.innerText = "(poster link)";
  38. }
  39. tipText.classList.remove("inactive");
  40. videoUrlAnchor.classList.remove("inactive");
  41. posterUrlAnchor.classList.remove("inactive");
  42. })
  43. .catch(error=>{
  44. videoUrlAnchor.removeAttribute("href");
  45. videoUrlText.innerText = "(failed)";
  46. posterUrlAnchor.removeAttribute("href");
  47. posterUrlText.innerText = "(failed)";
  48. });
  49. }
  50. }
  51. inputField.addEventListener("input", function (e) {
  52. var rr = regex.exec(inputField.value);
  53. if (rr && rr.length >= 7 && !isNaN(rr[6])) {
  54. inputWrapper.classList.add("regex-good");
  55. inputWrapper.classList.remove("regex-bad");
  56. button.disabled = false;
  57. button.classList.add("fill-good");
  58. button.classList.remove("fill-bad");
  59. currentID = rr[6];
  60. } else {
  61. inputWrapper.classList.add("regex-bad");
  62. inputWrapper.classList.remove("regex-good");
  63. button.disabled = true;
  64. button.classList.add("fill-bad");
  65. button.classList.remove("fill-good");
  66. currentID = -1;
  67. }
  68. });
  69. inputField.addEventListener("keypress", function (e) {
  70. if (e.keyCode == 13) {
  71. get();
  72. }
  73. });
  74. button.addEventListener("click", function(e) {
  75. get();
  76. });