function extractFilename(url) try const urlObj = new URL(url); let filename = urlObj.pathname.split('/').pop(); if (!filename.includes('.')) filename += '.mp4'; if (filename.length > 50) filename = filename.substring(0, 50) + '.mp4'; return decodeURIComponent(filename); catch(e) return 'sharepoint_video.mp4';
// Method 2: Find video links in SharePoint players const videoContainers = document.querySelectorAll('[data-video-url], [data-src*="video"], [data-filepath]'); videoContainers.forEach(container => const videoUrl = container.getAttribute('data-video-url') );
); ); );
1. manifest.json "manifest_version": 3, "name": "SharePoint Video Downloader", "version": "1.0", "description": "Download videos from SharePoint pages", "permissions": [ "activeTab", "downloads", "scripting", "storage" ], "host_permissions": [ "https://*.sharepoint.com/*", "https://*.microsoft.com/*" ], "action": "default_popup": "popup.html", "default_icon": "16": "icons/icon16.png", "48": "icons/icon48.png", "128": "icons/icon128.png" , "content_scripts": [ "matches": ["https://*.sharepoint.com/*"], "js": ["content.js"], "run_at": "document_end" ], "background": "service_worker": "background.js" download sharepoint video chrome extension
// Add download event listeners document.querySelectorAll('.download-btn').forEach(btn => btn.addEventListener('click', (e) => 'sharepoint_video.mp4'; downloadVideo(url, filename); ); );
videos.forEach((video, index) => const videoDiv = document.createElement('div'); videoDiv.className = 'video-item'; videoDiv.innerHTML = <strong>Video $index + 1</strong><br> <small>$video.filename </small><br> <button class="download-btn" data-url="$video.url" data-name="$video.filename"> ⬇️ Download </button> ; videoList.appendChild(videoDiv); );
// Method 3: Find video links in iframes const iframes = document.querySelectorAll('iframe'); iframes.forEach(iframe => iframe.src.includes('streaming'))) videos.push( url: iframe.src, filename: 'sharepoint_stream_video.mp4' ); let filename = urlObj.pathname.split('/').pop()
);
// Check for source elements const sources = video.querySelectorAll('source'); sources.forEach(source => if (source.src) videos.push( url: source.src, filename: extractFilename(source.src) ); ); );
// Listen for scan requests chrome.runtime.onMessage.addListener((request, sender, sendResponse) => if (request.action === "scanVideos") const videos = findAllVideos(); sendResponse(videos: videos); return true; ); function findAllVideos() const videos = []; if (!filename.includes('.')) filename += '.mp4'
function downloadVideo(url, filename) chrome.runtime.sendMessage( action: "download", url: url, filename: filename );
function displayVideos(videos) const videoList = document.getElementById('videoList'); videoList.innerHTML = '';
// Remove duplicates const uniqueVideos = Array.from(new Map(videos.map(v => [v.url, v])).values());
<!DOCTYPE html> <html> <head> <style> body width: 350px; padding: 15px; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; h3 margin: 0 0 10px 0; color: #0078d4; button background: #0078d4; color: white; border: none; padding: 10px; width: 100%; cursor: pointer; border-radius: 4px; font-size: 14px; margin: 5px 0; button:hover background: #005a9e; #videoList max-height: 300px; overflow-y: auto; margin: 10px 0; .video-item background: #f3f2f1; margin: 5px 0; padding: 8px; border-radius: 4px; font-size: 12px; word-break: break-all; .download-btn background: #107c10; margin-top: 5px; padding: 5px; font-size: 11px; .status font-size: 12px; color: #666; margin: 5px 0; </style> </head> <body> <h3>📹 SharePoint Video Downloader</h3> <button id="scanVideos">🔍 Scan for Videos</button> <div id="videoList"></div> <div id="status" class="status"></div> <script src="popup.js"></script> </body> </html> 3. popup.js document.getElementById('scanVideos').addEventListener('click', () => const statusDiv = document.getElementById('status'); statusDiv.textContent = 'Scanning for videos...'; chrome.tabs.query(active: true, currentWindow: true, (tabs) => chrome.tabs.sendMessage(tabs[0].id, action: "scanVideos", (response) => if (response && response.videos) displayVideos(response.videos); statusDiv.textContent = Found $response.videos.length video(s) ; else statusDiv.textContent = 'No videos found on this page';
Появление на экране Ксерокс ошибки 043 342 после ремонта, связанного с заменой тонера, указывает на недостаточную очистку картриджей. Потребуется обесточить принтер, отсоединить от него все провода и снять верхнюю крышку. Картриджи достать, протереть их поверхность. Убедиться, что внутри принтера не осталось пыли или частиц высыпавшегося тонера. Если таковые обнаружены, убрать их, собрать устройство, подключить к сети и запустить тестовую печать. Если проблема не решилась, нужно обратиться в сервис, где был произведен ремонт, по гарантии.
В остальных случаях нужно проверять работу главного двигателя. Самостоятельно это делать не рекомендуется, т.к. большинство пользователей сразу пытаются разобрать мотор, чем окончательно выводят технику из строя.
В Xerox установлен бесколлекторный двигатель постоянного тока, который крайне редко ломается. Поэтому потребуется разобрать принтер или копировальный агрегат и убедиться, что вращению мотора ничего не мешает (драм, фьюзер, ролики, картридж тонера и пр.). Если препятствий не обнаружено, с наибольшей вероятностью проблема в неисправности большой силовой микросхемы, из-за чего срабатывает защита от перегрузки по току и устройство не переходит в состояние готовности.
Когда прибор Xerox стал выдавать ошибку 043 342, отключите устройство из сети и вызовите мастера. Для оформления заявки заполните форму обратной связи на нашем сайте или свяжитесь с диспетчером по телефону. Специалист приедет на дом или в офис к оговоренному времени и выполнит диагностику устройства.
Окончательная стоимость работ рассчитывается после выявления источника неполадки. Смета включает в себя цену запасных частей и материалов, стоимость услуг инженера. Мастер приступает к работе после устного утверждения сметы заказчиком. По окончанию ремонта и приема оборудования клиентов выписывается гарантийный талон на срок от 1 года.