diff --git a/src/components/NavBar/images/tools/fileDownload.png b/src/components/NavBar/images/tools/fileDownload.png new file mode 100644 index 000000000..c9526e410 Binary files /dev/null and b/src/components/NavBar/images/tools/fileDownload.png differ diff --git a/src/components/NavItems/Assistant/AssistantRuleBook.jsx b/src/components/NavItems/Assistant/AssistantRuleBook.jsx index 66ad7bc1e..3b14c60a7 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,28 @@ export const ASSISTANT_ACTIONS = [ tsvPrefix: "assistant_video", download: true, }, + { + title: "assistant_video_download_instagram", + icon: downloadIconOff, + linksAccepted: [KNOWN_LINKS.INSTAGRAM], + cTypes: [CONTENT_TYPE.VIDEO], + exceptions: [], + useInputUrl: false, + text: "You can download it here", + tsvPrefix: "assistant_video", + path: null, + }, + { + title: "assistant_video_download_tiktok", + icon: downloadIconOff, + linksAccepted: [KNOWN_LINKS.TIKTOK], + cTypes: [CONTENT_TYPE.VIDEO], + exceptions: [], + useInputUrl: false, + text: "

More analysis tools are available when uploading video files.

Weverify Assistant does not support the direct downloading of TikTok video but you can go to the TikTok page and right click the video to download it directly.

", + 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..c3569a991 100644 --- a/tests/e2e/assistant.spec.js +++ b/tests/e2e/assistant.spec.js @@ -41,9 +41,25 @@ const MediaServices = { forensic: "navbar_forensic", ocr: "navbar_ocr", videoDownload: "assistant_video_download_action", + videoDownloadInstagram: "assistant_video_download_instagram", + videoDownloadTiktok: "assistant_video_download_tiktok", }; [ + // Twitter image post + { + url: "https://twitter.com/vesinfiltro/status/1253122594976468993/photo/1", + mediaType: MediaType.image, + mediaStatus: MediaVideoStatus.noEmbed, + 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,6 +67,13 @@ 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: [] + }, // Facebook post with video { url: "https://www.facebook.com/natgeo/videos/10157990199633951", @@ -77,8 +100,41 @@ const MediaServices = { url: "https://www.instagram.com/p/C8JwcyOiFDD/", mediaType: MediaType.video, mediaStatus: MediaVideoStatus.noEmbed, + services: [MediaServices.videoDownloadInstagram] + }, + // TikTok video post + { + url: "https://www.tiktok.com/@deeptomcruise/video/7223086851236646149", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.noEmbed, + services: [MediaServices.videoDownloadTiktok] + }, + { + url: "https://vimeo.com/389685467", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.iframe, services: [] - } + }, + { + url: "https://www.dailymotion.com/video/x91gv4a", + mediaType: MediaType.video, + mediaStatus: MediaVideoStatus.iframe, + services: [] + }, + // 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 }) => {