mantiss

mantiss

Пикабушник
Дата рождения: 31 марта
2602 рейтинг 21 подписчик 28 подписок 70 постов 3 в горячем
Награды:
10 лет на Пикабу
1

Расширение для chrome. youtube на полный экран с помощью deepseek

попросил deepseek написать код для расширения chrome, которое будет автоматически переключать видео на ютуб в полный экран после 10 секунд бездействия пользователя и обратно если пошевелить мышкой. сам я не программист ни разу, поэтому путь был долог и тернист. усугубляло ситуацию периодическое "сервер занят".

сначала не получалось вообще ничего, похоже гугл заблокировал автоматическое переключение в полный экран, а deepseek самостоятельно не смог придумать пути обхода или костыли. тут уже я нашел в интернете решение - автоматически можно открывать не во весь экран, но во все окно. ну хотя бы так. ниже приведу код манускрипта манифеста и скрипт.

  1. создайте файлы manifest.json и content.js в одной папке, вставьте в них соответствующий код

  2. Перейдите в Chrome → chrome://extensions.

  3. Включите "Режим разработчика".

  4. Нажмите "Загрузить распакованное расширение" и выберите папку.

{

"manifest_version": 3,

"name": "YouTube Auto Embed",

"version": "1.4",

"description": "Умное переключение режимов с учетом паузы",

"permissions": ["storage"],

"content_scripts": [

{

"matches": [

"*://*.youtube.com/watch?v=*",

"*://*.youtube.com/embed/*"

],

"js": ["content.js"],

"run_at": "document_idle"

}

]

}

(function() {

const isWatchPage = window.location.href.includes('/watch?v=');

const isEmbedPage = window.location.href.includes('/embed/');

if (!isWatchPage && !isEmbedPage) return;

let timeoutId;

let currentVideoTime = 0;

let videoElement;

let isPaused = false;

// Общие функции

function getVideoElement() {

return document.querySelector('video');

}

function storeCurrentTime() {

if (videoElement) {

currentVideoTime = Math.floor(videoElement.currentTime);

sessionStorage.setItem('ytAutoEmbedTime', currentVideoTime);

}

}

function handleUserActivity() {

clearTimeout(timeoutId);

if (isEmbedPage) return;

if (isWatchPage && !isPaused) {

timeoutId = setTimeout(switchToEmbed, 10000);

}

}

// Для watch-страницы

if (isWatchPage) {

videoElement = getVideoElement();

if (videoElement) {

videoElement.addEventListener('play', () => {

isPaused = false;

handleUserActivity();

});

videoElement.addEventListener('pause', () => {

isPaused = true;

clearTimeout(timeoutId);

});

}

function switchToEmbed() {

if (isPaused) return;

storeCurrentTime();

const videoId = new URLSearchParams(window.location.search).get('v');

const embedUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1&star...}`;

window.location.replace(embedUrl);

}

if (!isPaused) timeoutId = setTimeout(switchToEmbed, 10000);

}

// Для embed-страницы

if (isEmbedPage) {

videoElement = getVideoElement();

const storedTime = sessionStorage.getItem('ytAutoEmbedTime') || 0;

if (videoElement) {

videoElement.addEventListener('loadedmetadata', () => {

videoElement.currentTime = storedTime;

});

}

function switchToNormal() {

storeCurrentTime();

const videoId = window.location.pathname.split('/')[2];

const normalUrl = `https://www.youtube.com/watch?v=%24%7BvideoId%7D&t=%24%7...`;

window.location.replace(normalUrl);

}

const events = ['mousemove', 'keydown', 'mousedown', 'touchstart'];

events.forEach(event => {

window.addEventListener(event, () => {

if (!isPaused) switchToNormal();

});

});

if (videoElement) {

videoElement.addEventListener('play', () => {

isPaused = false;

sessionStorage.setItem('ytAutoEmbedPaused', 'false');

});

videoElement.addEventListener('pause', () => {

isPaused = true;

sessionStorage.setItem('ytAutoEmbedPaused', 'true');

});

}

}

const activityEvents = ['mousemove', 'keydown', 'scroll', 'mousedown', 'touchstart'];

activityEvents.forEach(event => {

window.addEventListener(event, handleUserActivity);

});

console.log('Extension initialized in', isWatchPage ? 'normal' : 'embed', 'mode');

})();

если кто понимает, что тут написано, можете прокомментировать по качеству

Показать полностью
0

Помогите определить

Вялил мясо, рецепт проверенный. Нитритная соль, все как надо, может чуть меньше чем по рецепту. В прошлый раз сушилось не так долго и плесени не было. В этот раз решил посушить подольше, ел прям с ветки, и на одном из последних кусков обнаружил плесень. Вроде как при таком способе приготовления(в специальном пакете для вяления) допускается образование плесени, но та ли образовалась у меня?

сфоткал поближе, может есть знатоки, помогите, можно ли есть? я, правда, уже килограмм съел, особо не приглядываясь, мож что пропустил раньше)

Показать полностью 5
1

Задачка по математике

Прислал тут сбермегамаркет промокод на 1000р на 95% оплаты, я обычно на озоне все заказываю, но от халявы отказываться не собираюсь. Заказал 2 банки пулек для пневматики по 564р. В посылке была только одна. После создания обращения, через 2 дня, вернули 64р и промокод на 200р на 50% оплаты.

Вопрос - на сколько меня наебали и наебали ли вообще?

12

Comgrow robo cnc

купил тут такой вот станочек, там стоит шпиндель на 120вт, подключен к разъему на картинке

Comgrow robo cnc Нужна помощь в ремонте, Cnc router, 3018, Длиннопост

в момент резки мотор встал, обломило фрезу. при подаче напряжения на мотор напрямую он работает. предохранитель на плате цел. все оси нормально работают. подскажите что и как проверить чтобы понять что вышло из строя?

еще хочу поменять шпиндель на другой

Comgrow robo cnc Нужна помощь в ремонте, Cnc router, 3018, Длиннопост

как считаете на плате есть выход на замыкание для внешнего питания?

и еще, для замены мотора надо ставить другую каретку и ходовой винт, который у меня есть 4х заходный в отличии от родного(2х). соответственно перемещение на оборот будет больше, я могу как-то это компенсировать? наверное можно в программе ставить величину съема материала в 2 раза меньше, а еще варианты есть?

Показать полностью 2
454

Трезвый водитель

нужна помощь лиги юристов. воспользовался вчера услугой "трезвый водитель" и столкнулся с проблемой - стоимость в конце поездки оказалась 8000р. сначала я позвонил в другую контору, мне озвучили стоимость поездки 1000р, но когда мне нужно было ехать водитель был занят и я позвонил в другое место. там сказали, что стоимость будет по таксометру.

Трезвый водитель Помощь, Лига юристов, Трезвый водитель, Обман, Длиннопост

вот все что я увидел при заказе. в рейтинг я не заходил, а зря, как оказалось там много таких жалоб. после приезда и озвучивания стоимости я вызвал полицию. они взяли объяснение причины отказа оплачивать и заявление у водителя. я написал, что стоимость поездки не была озвучена заранее, а водитель говорит, что все указано на каком то сайте, который я в глаза не видел.. что с этим можно сделать и есть ли смысл судиться?

Показать полностью 1
Отличная работа, все прочитано!