您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Video filters and UI manipulations
当前为
// ==UserScript== // @name Video Celebs Search And UI Tweaks // @namespace brazenvoid // @version 1.2.0 // @author brazenvoid // @license GPL-3.0-only // @description Video filters and UI manipulations // @include https://videocelebs.net/* // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js // @require https://greasyfork.org/scripts/375557-base-resource/code/Base%20Resource.js?version=877475 // @require https://greasyfork.org/scripts/416104-brazen-ui-generator/code/Brazen%20UI%20Generator.js?version=877457 // @require https://greasyfork.org/scripts/416105-brazen-base-search-enhancer/code/Brazen%20Base%20Search%20Enhancer.js?version=877459 // @grant GM_addStyle // @run-at document-end // ==/UserScript== GM_addStyle(`#settings-wrapper{background-color:#ffa31a;top:15vh;width:250px}input.form-input.check-radio-input{width:auto;margin:0 5px 1px 0}label.title{margin: 0}`) const PAGE_PATH_NAME = window.location.pathname const IS_VIDEO_PAGE = PAGE_PATH_NAME.endsWith('.html') const FILTER_VIDEOS_RATING = 'Rating' const FILTER_VIDEOS_YEAR = 'Year' const OPTION_MOVE_VIDEO_ATTRIBUTES_SECTION = 'Reposition Attributes Section' const OPTION_REMOVE_COMMENTS_SECTION = 'Remove Comments Section' const OPTION_REMOVE_IFRAME_SECTION = 'Remove Iframe Share Section' const OPTION_REMOVE_RELATED_VIDEOS_SECTION = 'Remove Related Videos Section' class VideoCelebsSearchAndUITweaks extends BrazenBaseSearchEnhancer { static getLastPageUrl () { if (IS_VIDEO_PAGE) { return window.location.href } else { let lastPaginationElement = $('.wp-pagenavi a:last') return lastPaginationElement.length ? lastPaginationElement.attr('href') : window.location.href } } constructor () { super({ scriptPrefix: 'vc-sui-', itemClasses: 'item', paginator: { enable: !IS_VIDEO_PAGE, listSelector: '.midle_div', lastPageUrl: VideoCelebsSearchAndUITweaks.getLastPageUrl(), getPageNo: (url) => url.includes('/page/') ? parseInt(url.split('/').pop()) : 1, getPageUrl: (newPageNo) => { let currentUrl = window.location.href if (currentUrl.includes('/page/')) { let currentUrlFragments = currentUrl.split('/') currentUrlFragments.pop() currentUrl = currentUrlFragments.join('/') } else { currentUrl += '/page' } return currentUrl + '/' + newPageNo }, afterPagination: (paginator) => { let currentPaginationElement = $('.wp-pagenavi span.current') currentPaginationElement.text(paginator.currentPageNo + '-' + paginator.paginatedPageNo) let paginatorLinksAfterCurrent = $('.wp-pagenavi span.current ~ a') if (paginator.paginatedPageNo === paginator.lastPageNo) { paginatorLinksAfterCurrent.remove() } else { paginatorLinksAfterCurrent.each((index, element) => { let paginationLink = $(element) if (paginator.getPageNo($(element).attr('href')) <= paginator.paginatedPageNo) { paginationLink.remove() } }) let nextPageUrl = paginator.getPageUrl(paginator.paginatedPageNo + 1) let nextPageLink = $('.wp-pagenavi a[href="'+ nextPageUrl +'"]') if (nextPageLink.length === 0) { let lastPageLink = $('.wp-pagenavi a:last') lastPageLink.clone().insertAfter(currentPaginationElement). text(paginator.paginatedPageNo + 1).removeClass('last').attr('href', nextPageUrl) } } } } }) this._configurationManager. addFlagField(OPTION_MOVE_VIDEO_ATTRIBUTES_SECTION, 'Move the video attributes section from below the screenshot area to under the description.'). addFlagField(OPTION_REMOVE_COMMENTS_SECTION, 'Remove comments area on video pages.'). addFlagField(OPTION_REMOVE_IFRAME_SECTION, 'Remove iframe share section under video player.'). addFlagField(OPTION_REMOVE_RELATED_VIDEOS_SECTION, 'Remove related videos section on video pages.'). addRangeField(FILTER_VIDEOS_RATING, 0, 100, 'Filter videos by ratings.'). addRangeField(FILTER_VIDEOS_YEAR, 0, new Date().getFullYear(), 'Filter videos by content release year.') // UI Events this._onBeforeUIBuild = () => { if (IS_VIDEO_PAGE) { this._moveVideoAttributesBelowDescription() this._removeCommentsSection() this._removeIFrameSection() this._removeRelatedVideosSection() } } this._onUIBuild = () => this._uiGen.createSettingsSection().append([ this._uiGen.createTabsSection(['Filters', 'UI', 'Stats'], [ this._uiGen.createTabPanel('Filters', true).append([ this._configurationManager.createElement(FILTER_VIDEOS_RATING), this._configurationManager.createElement(FILTER_VIDEOS_YEAR), this._uiGen.createSeparator(), this._configurationManager.createElement(OPTION_DISABLE_COMPLIANCE_VALIDATION), ]), this._uiGen.createTabPanel('UI').append([ this._configurationManager.createElement(OPTION_MOVE_VIDEO_ATTRIBUTES_SECTION), this._configurationManager.createElement(OPTION_REMOVE_COMMENTS_SECTION), this._configurationManager.createElement(OPTION_REMOVE_IFRAME_SECTION), this._configurationManager.createElement(OPTION_REMOVE_RELATED_VIDEOS_SECTION), this._uiGen.createSeparator(), this._configurationManager.createElement(CONFIG_PAGINATOR_THRESHOLD), this._configurationManager.createElement(CONFIG_PAGINATOR_LIMIT), this._configurationManager.createElement(OPTION_ALWAYS_SHOW_SETTINGS_PANE), ]), this._uiGen.createTabPanel('Stats').append([ this._uiGen.createStatisticsFormGroup(FILTER_VIDEOS_RATING), this._uiGen.createStatisticsFormGroup(FILTER_VIDEOS_YEAR), this._uiGen.createSeparator(), this._uiGen.createStatisticsTotalsGroup(), ]), ]), this._createSettingsFormActions(), this._uiGen.createSeparator(), this._uiGen.createStatusSection(), ]) this._onAfterUIBuild = () => { this._uiGen.getSelectedSection()[0].userScript = this } // Compliance Events this._onGetItemLists = () => $('.midle_div,.list_videos') this._complianceFilters = [ (videoItem) => this._validateRating(videoItem), (videoItem) => this._validateYear(videoItem), ] } _moveVideoAttributesBelowDescription () { if (this._configurationManager.getValue(OPTION_MOVE_VIDEO_ATTRIBUTES_SECTION)) { let videoInfoBlock = $('.entry-utility') videoInfoBlock.insertBefore(videoInfoBlock.prev().prev()) } } _removeCommentsSection () { if (this._configurationManager.getValue(OPTION_REMOVE_COMMENTS_SECTION)) { $('.comments-area').remove() } } _removeIFrameSection () { if (this._configurationManager.getValue(OPTION_REMOVE_IFRAME_SECTION)) { $('#tab_share').remove() } } _removeRelatedVideosSection () { if (this._configurationManager.getValue(OPTION_REMOVE_RELATED_VIDEOS_SECTION)) { $('.related').remove() } } /** * Validate video source release year * @param {JQuery} videoItem * @return {boolean} * @private */ _validateRating (videoItem) { let range = this._configurationManager.getValue(FILTER_VIDEOS_RATING) if (range.minimum > 0 || range.maximum > 0) { let rating = parseInt(videoItem.find('.rating').text().trim().replace('%', '')) return this._validator.validateRange(FILTER_VIDEOS_RATING, rating, [range.minimum, range.maximum]) } return true } /** * Validate video view count * @param {JQuery} videoItem * @return {boolean} * @private */ _validateYear (videoItem) { let range = this._configurationManager.getValue(FILTER_VIDEOS_YEAR) if (range.minimum > 0 || range.maximum > 0) { let yearFragments = videoItem.find('.title a').text().trim().split('(') let year = parseInt(yearFragments[yearFragments.length - 1].replace(')', '')) return this._validator.validateRange(FILTER_VIDEOS_YEAR, year, [range.minimum, range.maximum]) } return true } } (new VideoCelebsSearchAndUITweaks).init()