From 904676251b8df24c2de54bb672ae92414de3276c Mon Sep 17 00:00:00 2001 From: Twin Karmakharm Date: Thu, 4 Jul 2024 17:05:32 +0100 Subject: [PATCH] Add service with instruction on how to download videos outside of assistant --- playwright.config.ts | 5 + .../NavBar/images/tools/fileDownload.png | Bin 0 -> 39140 bytes .../NavItems/Assistant/AssistantRuleBook.jsx | 39 ++++++- .../AssistantProcessUrlActions.jsx | 12 +- tests/e2e/assistant.spec.js | 109 ++++++++++++++---- 5 files changed, 136 insertions(+), 29 deletions(-) create mode 100644 src/components/NavBar/images/tools/fileDownload.png diff --git a/playwright.config.ts b/playwright.config.ts index 047b5a13e..9d001833f 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -29,6 +29,11 @@ export default defineConfig({ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', }, + timeout: 60 * 1000, + globalTimeout: 60 * 1000, + expect: { + timeout: 60 * 1000, + }, /* Configure projects for major browsers */ projects: [ diff --git a/src/components/NavBar/images/tools/fileDownload.png b/src/components/NavBar/images/tools/fileDownload.png new file mode 100644 index 0000000000000000000000000000000000000000..c9526e4107ede65a1e60ddcc7b3d070b37e43595 GIT binary patch literal 39140 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 OzYS|GOcGZ!j{hG6^D)N& literal 0 HcmV?d00001 diff --git a/src/components/NavItems/Assistant/AssistantRuleBook.jsx b/src/components/NavItems/Assistant/AssistantRuleBook.jsx index 66ad7bc1e..c8075eb77 100644 --- a/src/components/NavItems/Assistant/AssistantRuleBook.jsx +++ b/src/components/NavItems/Assistant/AssistantRuleBook.jsx @@ -6,6 +6,7 @@ import metadataIconOff from "../../NavBar/images/tools/metadataOff.png"; import videoRightsIconOff from "../../NavBar/images/tools/copyrightOff.png"; import forensicIconOff from "../../NavBar/images/tools/forensic_logoOff.png"; import videoIconOff from "../../NavBar/images/tools/video_logoOff.png"; +import downloadIconOff from "../../NavBar/images/tools/fileDownload.png"; export const NE_SUPPORTED_LANGS = ["en", "pt", "fr", "de", "el", "es", "it"]; @@ -138,8 +139,6 @@ export const ASSISTANT_ACTIONS = [ linksAccepted: [ KNOWN_LINKS.YOUTUBE, KNOWN_LINKS.FACEBOOK, - KNOWN_LINKS.DAILYMOTION, - KNOWN_LINKS.VIMEO, KNOWN_LINKS.YOUTUBE, KNOWN_LINKS.YOUTUBESHORTS, KNOWN_LINKS.LIVELEAK, @@ -223,7 +222,11 @@ export const ASSISTANT_ACTIONS = [ { title: "assistant_video_download_action", icon: videoIconOff, - linksAccepted: [KNOWN_LINKS.TELEGRAM, KNOWN_LINKS.FACEBOOK], + linksAccepted: [ + KNOWN_LINKS.TELEGRAM, + KNOWN_LINKS.FACEBOOK, + KNOWN_LINKS.TWITTER, + ], cTypes: [CONTENT_TYPE.VIDEO], exceptions: [], useInputUrl: false, @@ -231,6 +234,36 @@ export const ASSISTANT_ACTIONS = [ tsvPrefix: "assistant_video", download: true, }, + { + title: "assistant_video_download_generic", + icon: downloadIconOff, + linksAccepted: [ + KNOWN_LINKS.YOUTUBESHORTS, + KNOWN_LINKS.INSTAGRAM, + KNOWN_LINKS.FACEBOOK, + KNOWN_LINKS.VK, + KNOWN_LINKS.VIMEO, + KNOWN_LINKS.LIVELEAK, + KNOWN_LINKS.DAILYMOTION, + ], + cTypes: [CONTENT_TYPE.VIDEO], + exceptions: [], + useInputUrl: false, + text: "assistant_video_download_generic_description", + tsvPrefix: "assistant_video", + path: null, + }, + { + title: "assistant_video_download_tiktok", + icon: downloadIconOff, + linksAccepted: [KNOWN_LINKS.TIKTOK], + cTypes: [CONTENT_TYPE.VIDEO], + exceptions: [], + useInputUrl: false, + text: "assistant_video_download_tiktok_description", + tsvPrefix: "assistant_video", + path: null, + }, ]; export const selectCorrectActions = ( diff --git a/src/components/NavItems/Assistant/AssistantScrapeResults/AssistantProcessUrlActions.jsx b/src/components/NavItems/Assistant/AssistantScrapeResults/AssistantProcessUrlActions.jsx index 194909596..693df8c05 100644 --- a/src/components/NavItems/Assistant/AssistantScrapeResults/AssistantProcessUrlActions.jsx +++ b/src/components/NavItems/Assistant/AssistantScrapeResults/AssistantProcessUrlActions.jsx @@ -36,7 +36,9 @@ const AssistantProcessUrlActions = () => { dl.setAttribute("href", resultUrl); dl.setAttribute("download", ""); dl.click(); - } else if (resultUrl != null) { + } else if (action.path === null) { + return; // Do nothing if path is null + } else if (resultUrl !== null) { navigate( "/app/" + action.path + @@ -85,7 +87,13 @@ const AssistantProcessUrlActions = () => { } secondary={ - {keyword(action.text)} + +
+
} /> diff --git a/tests/e2e/assistant.spec.js b/tests/e2e/assistant.spec.js index 89f07b95f..60fb733f6 100644 --- a/tests/e2e/assistant.spec.js +++ b/tests/e2e/assistant.spec.js @@ -1,24 +1,6 @@ import { test, expect } from './fixtures'; -// test('example test', async ({ page }) => { -// await page.goto('https://example.com'); -// await expect(page.locator('body')).toHaveText('Changed by my-extension'); -// }); - -test('Assstant page', async ({ page, extensionId }) => { - // Navigate to the assistant page - await page.goto(`chrome-extension://${extensionId}/popup.html#/app/assistant/`); - // Accept local storage usage - await page.getByText("Accept").click(); - await expect(page.getByTestId("url-media-results")).not.toBeVisible(); - await page.getByTestId("assistant-webpage-link").click(); - await page.locator("[data-testid='assistant-url-selected-input'] input").fill("https://www.youtube.com/watch?v=WaaL75G0qu0"); - await page.getByTestId("assistant-url-selected-analyse-btn").click(); - await expect(page.getByTestId("url-media-results")).toBeVisible(); - -}); - const MediaType = { video: "video", image: "image" @@ -41,9 +23,24 @@ const MediaServices = { forensic: "navbar_forensic", ocr: "navbar_ocr", videoDownload: "assistant_video_download_action", + videoDownloadGeneric: "assistant_video_download_generic", + videoDownloadTiktok: "assistant_video_download_tiktok", }; [ + // Twitter image post + { + url: "https://twitter.com/vesinfiltro/status/1253122594976468993/photo/1", + mediaType: MediaType.image, + services: [MediaServices.analysisImage, MediaServices.magnifier, MediaServices.forensic, MediaServices.ocr] + }, + // Twitter video post + { + url: "https://twitter.com/NatGeo/status/1334635273888514048/video/1", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.noEmbed, + services: [MediaServices.metadata, MediaServices.videoDownload] + }, // Youtube video { url: "https://www.youtube.com/watch?v=UXrkN0iQmZQ", @@ -51,21 +48,35 @@ const MediaServices = { mediaStatus: MediaVideoStatus.iframe, services: [MediaServices.analysisVideo, MediaServices.keyframes, MediaServices.thumbnails, MediaServices.videoRights] }, + // Youtube shorts + { + url: "https://www.youtube.com/shorts/RMGOds6SxF0", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.noEmbed, + services: [MediaServices.videoDownloadGeneric] + }, // Facebook post with video { url: "https://www.facebook.com/natgeo/videos/10157990199633951", videoGridIndex: 0, mediaType: MediaType.video, mediaStatus: MediaVideoStatus.video, - services: [MediaServices.analysisVideo, MediaServices.keyframes, MediaServices.videoDownload] + services: [MediaServices.analysisVideo, MediaServices.keyframes, MediaServices.videoDownload, MediaServices.videoDownloadGeneric] }, // Telegram post with video { - url: "https://t.me/disclosetv/13970", + url: "https://t.me/WeAreBREITBART/13745", mediaType: MediaType.video, mediaStatus: MediaVideoStatus.video, services: [MediaServices.metadata, MediaServices.videoDownload] }, + // Telegram post with video - Fails, goes to the group page + // { + // url: "https://t.me/disclosetv/13970", + // mediaType: MediaType.video, + // mediaStatus: MediaVideoStatus.video, + // services: [MediaServices.metadata, MediaServices.videoDownload] + // }, // Instagram post with an image { url: "https://www.instagram.com/p/CI2b-3usJoH/", @@ -77,8 +88,58 @@ const MediaServices = { url: "https://www.instagram.com/p/C8JwcyOiFDD/", mediaType: MediaType.video, mediaStatus: MediaVideoStatus.noEmbed, - services: [] - } + services: [MediaServices.videoDownloadGeneric] + }, + // TikTok video post + { + url: "https://www.tiktok.com/@deeptomcruise/video/7223086851236646149", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.noEmbed, + services: [MediaServices.videoDownloadTiktok] + }, + // VK link with images + { + url: "https://vk.com/wall-57424472_432185", + mediaType: MediaType.image, + imageGridIndex: 0, + services: [MediaServices.magnifier, MediaServices.metadata, MediaServices.forensic, MediaServices.ocr] + }, + // VK link with embedded video + { + url: "https://vk.com/video-221416054_456296074", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.noEmbed, + services: [MediaServices.videoDownloadGeneric] + }, + // Vimeo video post + { + url: "https://vimeo.com/389685467", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.iframe, + services: [MediaServices.videoDownloadGeneric] + }, + // Dailymotion video post + { + url: "https://www.dailymotion.com/video/x91gv4a", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.iframe, + services: [MediaServices.videoDownloadGeneric] + }, + // Mastodon issues will be addressed very soon! + // // Mastodon link with youtube video link + // { + // url: "https://mstdn.social/@BBC/105203076554056414", + // mediaType: MediaType.video, + // mediaStatus: MediaVideoStatus.video, + // services: [] + // }, + // // Mastodon link with embedded video + // { + // url: "https://mstdn.social/@dtnsshow/112728823075224415", + // mediaType: MediaType.video, + // mediaStatus: MediaVideoStatus.video, + // services: [] + // }, ].forEach(({url, videoGridIndex, imageGridIndex, mediaType, mediaStatus, services}) => { test(`Test assistant media services for url: ${url}`, async ({ page, extensionId }) => { @@ -96,7 +157,7 @@ const MediaServices = { await page.getByTestId("assistant-url-selected-analyse-btn").click(); // Expecting a media post with images or video - await expect(page.getByTestId("url-media-results")).toBeVisible({timeout: 20000}); + await expect(page.getByTestId("url-media-results")).toBeVisible(); // If multiple images/videos exist, click on the media grid first if(Number.isInteger(videoGridIndex)) @@ -130,7 +191,7 @@ const MediaServices = { // Checks that expected services are shown for( const serviceId of services){ - await expect(page.getByTestId(serviceId)).toBeVisible({timeout: 10000}); + await expect(page.getByTestId(serviceId)).toBeVisible(); } // Ensure disabled services are not showing