MCPcopy Create free account
hub / github.com/Cicada000/VV / loadPreviewImage

Function loadPreviewImage

Web/script.js:914–1075  ·  view source on GitHub ↗
(card, result)

Source from the content-addressed store, hash-verified

912 }
913}
914async function loadPreviewImage(card, result) {
915 const episodeMatch = result.filename?.match(/\[P(\d+)\]/);
916 const timeMatch = result.timestamp?.match(/^(\d+)m(\d+)s$/);
917
918 if (!episodeMatch || !timeMatch) return;
919
920 const episodeNum = parseInt(episodeMatch[1], 10);
921 const minutes = parseInt(timeMatch[1]);
922 const seconds = parseInt(timeMatch[2]);
923 const totalSeconds = minutes * 60 + seconds;
924
925 const imgContainer = document.createElement("div");
926 imgContainer.className = "preview-frame-container";
927
928 const placeholder = document.createElement("div");
929 placeholder.className = "preview-frame-placeholder";
930 imgContainer.appendChild(placeholder);
931 card.insertBefore(imgContainer, card.firstChild);
932
933 try {
934 const imageBlob = await extractFrame(
935 episodeNum,
936 totalSeconds,
937 CONFIG.imageBaseUrl,
938 );
939 const imageUrl = URL.createObjectURL(imageBlob);
940 const img = new Image();
941 img.src = imageUrl;
942 img.className = "preview-frame";
943 img.decoding = "async";
944
945 img.onerror = () => {
946 console.error("Failed to load preview image");
947 imgContainer.remove();
948 URL.revokeObjectURL(imageUrl);
949 };
950
951 img.onload = () => {
952 const originalCanvas = document.createElement("canvas");
953 originalCanvas.width = img.width;
954 originalCanvas.height = img.height;
955
956 try {
957 const originalCtx = originalCanvas.getContext("2d");
958 if (!originalCtx) {
959 throw new Error("Failed to get canvas context");
960 }
961
962 originalCtx.drawImage(img, 0, 0);
963
964 const displayCanvas = document.createElement("canvas");
965 displayCanvas.width = img.width;
966 displayCanvas.height = img.height;
967 displayCanvas.className = "preview-frame";
968 displayCanvas.originalCanvas = originalCanvas;
969
970 const renderCanvas = () => {
971 const ctx = displayCanvas.getContext("2d");

Callers 1

displayResultsFunction · 0.85

Calls 2

extractFrameFunction · 0.85
renderCanvasFunction · 0.85

Tested by

no test coverage detected