Force 720p Video Quality on Pixverse

Forces video quality to 720p for video creation requests on Pixverse (Targeting Video Creation Only)

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Force 720p Video Quality on Pixverse
// @namespace    http://tampermonkey.net/
// @version      1.5
// @description  Forces video quality to 720p for video creation requests on Pixverse (Targeting Video Creation Only)
// @author       Basco
// @match        https://app.pixverse.ai/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Override XMLHttpRequest to capture outgoing requests
    const originalOpen = XMLHttpRequest.prototype.open;
    const originalSend = XMLHttpRequest.prototype.send;

    // Intercept the open method to store request URL
    XMLHttpRequest.prototype.open = function(method, url) {
        this._url = url;  // Store URL
        return originalOpen.apply(this, arguments);
    };

    // Intercept the send method to modify the request body
    XMLHttpRequest.prototype.send = function(body) {
        // Focus only on the video creation requests (URLs that include /create or /i2v)
        if ((this._url.includes('/creative_platform/video/i2v') || this._url.includes('/creative_platform/video/create')) && body) {
            try {
                let requestBody = JSON.parse(body);
                // Modify the quality field to 720p if it's present
                if (requestBody.quality) {
                    console.log('[Debug] Modifying quality to 720p');
                    requestBody.quality = '720p'; // Force 720p quality
                } else {
                    console.warn('[Debug] No quality field found in request body.');
                }

                // Convert the modified body back to JSON string
                body = JSON.stringify(requestBody);
            } catch (error) {
                console.error('[Debug] Error parsing request body:', error);
            }
        }

        // Send the modified request
        return originalSend.apply(this, [body]);
    };

    // Add event listeners to capture the response and debug
    const originalXHRonload = XMLHttpRequest.prototype.onload;
    XMLHttpRequest.prototype.onload = function() {
        // Capture the response data for video creation requests
        if (this._url.includes('/creative_platform/video/i2v') || this._url.includes('/creative_platform/video/create')) {
            try {
                console.log('[Debug] XHR load event for:', this._url);
                console.log('[Debug] Response:', this.responseText);

                // Parse and log the response
                const response = JSON.parse(this.responseText);
                if (response.error) {
                    console.error('[Debug] Error in response:', response.error);
                } else {
                    console.log('[Debug] Video creation successful:', response);
                }
            } catch (error) {
                console.error('[Debug] Error handling response:', error);
            }
        }

        return originalXHRonload.apply(this, arguments);
    };

    // Error logging for debugging
    const originalXHRonerror = XMLHttpRequest.prototype.onerror;
    XMLHttpRequest.prototype.onerror = function() {
        console.error('[Debug] XHR Error for:', this._url);
        return originalXHRonerror.apply(this, arguments);
    };

})();