- /// ==UserScript==
- // @name vk.com
- // @namespace http://use.i.E.your.homepage/
- // @version 0.25
- // @description Layout Design - bigger video and thumbs and Info on precent video and some navigation
-
- // @match *vk.com/*
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
- // @require https://greasyfork.org/scripts/386-waituntilexists/code/waitUntilExists.js?version=5026
- // @require http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js
-
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_deleteValue
-
- // @created 2014-09-27
- // @released 2014-00-00
- // @updated 2014-00-00
- // @history @version 0.25 - first version: @released - 2015-02-11
-
- // @compatible Greasemonkey, Tampermonkey
- // @license GNU GPL v3 (http://www.gnu.org/copyleft/gpl.html)
- // @copyright 2014+, Magnus Fohlström
- // ==/UserScript==
-
- /*global $, jQuery*/
- /*jshint -W014, -W030*/
- // -W014, laxbreak, Bad line breaking before '+'
- // -W030, Expected assignment or funtion call insted saw an expression
-
- //-----------------------------------------------------------------------------------------------------------------------------------------
-
- (function ($) {
-
- var timeThis = performance.now(),
- mainWidth = 1357,
- lstate = 0;
-
- function l( name, fn, showthis ){ if( showthis == 1 || lstate == showthis ) console.log( name, fn !== undefined ? fn : '' ); }
-
- String.prototype.formatString = function(){
- return this.toString()
- .split(/\s+/g).join(' ')
- .split('¤').join('')
- .split('{').join('{\n\t\t')
- .split('; ').join(';')
- .split(';').join(';\n\t\t')
- .split('*/').join('*/\n')
- .split('\t\t').join('\t')
- .split('}').join('}\n');
- };
-
- $( '<style id="InsertCssZoom"></style>' +
- '<style id="InsertCssBasic"></style>' +
- '<style id="inputPopupCss" ></style>' ).appendTo('head');
-
- function refreshElement( elem , speed ) //refreshElement('.videoPlayer','slow');
- {
- var data = $( elem ).html();
- $( elem ).hide().html( data ).fadeIn( speed );
- }
-
- function playerSize()
- {
- var sideWidth = 120,
- ContWidth = 1500,
-
- bodyWidth0 = window.innerWidth - sideWidth,
- bodyWidth1 = bodyWidth0 > ContWidth ? ContWidth : bodyWidth0,
- zoomWidth0 = bodyWidth1 / $('#video_player').width(),
-
- zoomWidth = zoomWidth0 < 1 ? 1 : zoomWidth0;
-
- $( '#InsertCssZoom' ).text( '#video_player { zoom:' + zoomWidth + '; }' );
- }
-
- function init(input)
- {
- var InsertCssBasic, insertReload, newWidth, divider, insertThis;
-
- insertReload =
- // '<div class="divider fl_r">|</div>' +
- '<div id="NormalizeThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="mv_top_button fl_r">Normalize</div>' +
- '<div id="MaximizeThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="mv_top_button fl_r">Maximize</div>' +
- '<div class="divider fl_r">|</div>' +
- '<div id="reloadThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="mv_top_button fl_r">Reload</div>' +
- '<div class="divider fl_r">|</div>' +
- '<div id="ChangeThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="mv_top_button fl_r">Change Title</div>';
-
- // $( insertReload ).appendTo('#mv_top_controls');
- // $( insertReload ).insertAfter('.mv_share_actions.fl_l .fl_r .mv_views_count.fl_r');
-
- insertThis = setInterval(function(){ $('.mv_info_block.fl_l').size() !== 0 && $('#NormalizeThis').size() === 0 && ( $( insertReload ).appendTo('.mv_info_block.fl_l'), clearInterval(insertThis) ); },8);
-
- divider = 4;
- newWidth = input !== undefined ? input : mainWidth;
- InsertCssBasic =
- '.mv_cont {'
- + ' top: 30px !important;'
- + ' }'
- + '#mv_box {'
- + ' background: #232430;'
- + ' }'
- + '.mv_top_button {'
- + ' background: transparent;'
- + ' color: rgb(119, 119, 119);'
- + ' margin-top: -4px;'
- + ' }'
- + '.video_box_wrap {'
- + ' width: initial !important;'
- + ' height: initial !important;'
- + ' }'
- + '#mv_min_layer {'
- + ' width: calc(100% - 250px);'
- + ' }'
- + '#mv_min_title {'
- + ' max-width: 100% !important;'
- + ' }'
- + '#mv_title {'
- + ' width: 100%;'
- + ' max-width: 100%;'
- + ' }'
- + '#mv_min_title:hover, .mv_top_button:hover {'
- + ' cursor: pointer;'
- + ' color: rgb(7, 7, 207) !important;'
- + ' }'
- + '.fl_r.mv_title_panel {'
- + ' width: calc(100% - 65px);'
- + ' }'
- + '.mv_info_block.fl_l {'
- + ' width: 100%;'
- + ' }'
-
- + '#page_layout {'
- + ' width: '+newWidth+'px !important;'
- + ' }'
-
- + '#page_body {'
- + ' width: calc(100% - 165px) !important;'
- + ' }'
- + '.video_compact_view #choose_video_rows .video_row, .video_compact_view #video_rows .video_row, '
- + '.video_compact_view #video_search_rows .video_row, .video_compact_view .search_media_rows.video_type .video_row {'
- + ' height: initial;'
- + ' margin-bottom: 20px;'
- + ' width: calc(('+newWidth+'px - 165px) / '+divider+' - 23px);'
- + ' }'
- + '.video_compact_view #choose_video_rows .video_row_thumb, .video_compact_view #video_rows .video_row_thumb, '
- + '.video_compact_view #video_search_rows .video_row_thumb, .video_compact_view .search_media_rows.video_type .video_row_thumb, '
- + '.video_compact_view #choose_video_rows .video_image_div, .video_compact_view .search_media_rows.video_type .video_image_div, '
- + '.video_compact_view #video_rows .video_image_div, .video_compact_view #video_search_rows .video_image_div {'
- + ' width: inherit;'
- + ' }'
- + '.video_compact_view #choose_video_rows .video_image_div, .video_compact_view #video_rows .video_image_div, '
- + '.video_compact_view #video_search_rows .video_image_div, .video_compact_view .search_media_rows.video_type .video_image_div, '
- + '.video_compact_view #choose_video_rows .video_row_thumb, .video_compact_view #video_rows .video_row_thumb, '
- + '.video_compact_view #video_search_rows .video_row_thumb, .video_compact_view .search_media_rows.video_type .video_row_thumb {'
- + ' height: calc((('+newWidth+'px - 165px) / '+divider+' - 23px) * (106/191));'
- + ' }'
- + '#search_content .video_row .video_row_info_name a, #video_content .video_row .video_row_info_name a, '
- + '#choose_video_content .video_row .video_row_info_name a, #pva_video_tags .video_row .video_row_info_name a {'
- + ' white-space: normal;'
- + ' overflow: hidden;'
- + ' text-overflow: ellipsis;'
- + ' width: calc(('+newWidth+'px - 165px) / '+divider+' - 23px) !important;'
- + ' display: -webkit-box;'
- + ' height: calc( 11px * 1.4 * 3 );'
- + ' font-size: 11px;'
- + ' line-height: 1.4;'
- + ' -webkit-line-clamp: 3;'
- + ' -webkit-box-orient: vertical;'
- + ' }';
-
- $( '#InsertCssBasic' ).html( InsertCssBasic.formatString() );
-
- $( '#InsertCssBasic' ).append( '#stl_side { left: '+( $( '#page_layout' ).offset().left )+'px !important; }'.formatString() );
- }
-
- init();
-
- $( window ).resize(function(){ init(); });
-
- $( '#NormalizeThis' ).waitUntilExists(function(){
-
- function Maximize()
- {
- GM_setValue('VK_playerState', 'Maximize' );
-
- playerSize();
-
- $(".mv_top_button:contains('Maximize')").hide();
- $(".mv_top_button:contains('Normalize')").show();
- }
- function Normalize()
- {
- GM_setValue('VK_playerState', 'Normalize' );
-
- $( '#InsertCssZoom' ).empty();
-
- $(".mv_top_button:contains('Normalize')").hide();
- $(".mv_top_button:contains('Maximize')").show();
- }
-
- GM_getValue('VK_playerState') == 'Maximize' ? Maximize() : Normalize();
-
- $("#NormalizeThis").on('click', Normalize );
-
- $("#MaximizeThis").on('click', Maximize );
-
- $('#reloadThis').on('click', function() {
- refreshElement('#mv_content .video_box_wrap', 2500 );
- });
-
- $('#ChangeThis, #ChangeThis font').on('mouseup', function(e){
- this == e.target && e.which == 1 && rewriteTitle();
- });
- });
-
- function runflashvars()
- {
- var flashvars,Seconds_1,Seconds,xformat,time;
-
- flashvars = $('embed').attr('flashvars');
- flashvars = flashvars !== undefined ? flashvars : '';
- Seconds_1 = flashvars.split('&duration=');
- Seconds = Seconds_1[1] === undefined ? '' : Seconds_1[1].split('&eid1=');
- Seconds = Seconds[0] === undefined ? 0 : Seconds[0];
- xformat = ( Seconds < 3600 ) ? 'mm:ss' : 'H:mm:ss';
- time = moment().startOf('day').seconds(Seconds).format(xformat);
-
- console.log('sec',Seconds);
- // Display how long the video clip are
- if( $('#VideoLength').size() === 0 )
- {
- $('<div id="VideoLength" class="mv_info mv_duration" style="margin-left: 20px;">Video Length:<span style="padding-left:22px;">' + time + '</span></div><br class="my"><div class="clear"></div>').insertAfter('.mv_info_panel.clear_fix');
- }
-
- // Show a list of Qualities that are playable for this clip
- window.qualities = '';
- function stp( qual,input ){ window.qualities += '<span class="mv_info mv_quality" style="float: none !important; margin-bottom: 10px;"><span>' + qual + '</span> - ' + input + '</span><br>'; }
-
- if ( flashvars.search('&url720=' ) > 0 ) { stp('720p','HD'); }
- if ( flashvars.search('&url480=' ) > 0 ) { stp('480p','SD'); }
- if ( flashvars.search('&url360=' ) > 0 ) { stp('360p','Normal'); }
- if ( flashvars.search('&url240=' ) > 0 ) { stp('240p','Almost'); }
- if ( flashvars.search('&url180=' ) > 0 ) { stp('180p','Lowest'); }
-
- $( '<div class="mv_info mv_quality_lable" style="margin-left: 20px; float:left;">Video Qualities:</div> <div class="mv_info mv_qualities" style="float:left; margin-left:15px;">' + window.qualities + '</div>' ).insertAfter('br.my');
-
- }
-
- $( '#video_player' ).waitUntilExists(function() { $( '#VideoLength' ).size() === 0 && runflashvars(); });
-
- // Re-sizing inputField
- function sizingInput( str )
- {
- str = str === undefined ? ' ' : str;
-
- var texLen = str.length,
- parLen = $('#toInputingThis').width() - 6,
- inputWidth = ( texLen * 5.2 ) + 21;
-
- // this makes sure that inputfield dont get bigger than avaible space
- inputWidth = inputWidth > parLen ? parLen : inputWidth;
-
- // check if string is longer than, then the field gets bigger, otherwise it vill stay the same as default.
- inputWidth = texLen > 34 ? inputWidth : 200;
-
- // makes the change as defined
- $( '#txtInputThis' ).width( inputWidth );
- }
-
- $( window ).resize(function() {
- playerSize();
- sizingInput( $( '#txtInputThis' ).val() );
- });
-
- // this is usefull when same page reloads, with new uniqe URL && only applicable within 10s from clicking reload.
- var mainTitleHead = '#mv_title',
- docLoc = window.location.href,
- lastUrl = GM_getValue('VK_lastUrl') === docLoc,
- ifReloaded = GM_getValue('VK_title_old') !== undefined && lastUrl;
-
- if( lastUrl && $.now() - GM_getValue('VK_date') < 10000 )
- {
- $( '#mv_title' ).waitUntilExists(function(){
- var changeTo = GM_getValue('VK_title');
- $( '#txtInputThis' ).val( changeTo );
- $( mainTitleHead + ', title').text( changeTo );
- });
- }
-
- function rewriteTitle()
- {
- function thePopup()
- {
- var inputPopup, inputPopupCss, thisTitle, author;
-
- inputPopup =
- '<div id="space"class="ymvy"></div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="CancelsNowThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">Cancel</div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="SaveReloadThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">Reload</div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="justupdateThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">Update</div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="toInputingThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">'
- + '<input id="txtInputThis" type="text" class="" value=""/>'
- + '</div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="LatestTextThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">Latest</div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="MostUseTxtThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">Most</div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="FavoritTxtThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">Favorits</div>'
- + '<div class="divider fl_r">|</div>'
- + '<div id="restsTextsThis" onmouseover="Videoview.activate(this, 2);" onmouseout="Videoview.deactivate(this, 2);" class="ymvy">Resets</div>'
- + '<div class="divider fl_r">|</div>'
- + ' ';
-
- inputPopupCss =
- '#inputPopup {'
- + ' width: calc(100% - 14px);'
- + ' background-color:#232430;'
- + ' position: fixed;'
- + ' z-index: 1000;'
- + ' height: 40px;'
- + ' margin:auto;'
- + ' top:0px;'
- + ' }'
- + '#space {'
- + ' width: 40px;'
- + ' }'
- + '.ymvy {'
- + ' float: right;'
- + ' color: #777777;'
- + ' cursor: pointer;'
- + ' padding: 12px 5px 12px;'
- + ' }'
- + '#toInputingThis {'
- + ' margin-top: -4px;'
- + ' width: calc(100% - (87px * 6) );'
- + ' }'
- + 'input#txtInputThis {'
- + ' width: 200px;'
- + ' padding-left: 3px;'
- + ' line-height: 15px;'
- + ' background-color: darkgray;'
- + ' }'
- + '#inputPopup .divider.fl_r {'
- + ' padding: 12px 5px;'
- + ' opacity: .5;'
- + ' }';
-
- $( '#inputPopupCss' ).html( inputPopupCss.formatString() );
-
- $('<div id="inputPopup" style="display:none;">' + inputPopup + '</div>').insertBefore('#mv_layer_wrap');
-
- author = $('.mv_author_name a').text();
- thisTitle = $( mainTitleHead ).text() + ( ifReloaded || ( mainTitleHead.search( author ) > -1 ) ? '' : ' - ' + author );
-
- if( ifReloaded )
- {
- $('#restsTextsThis').attr('data-thisTitle', GM_getValue('VK_title_old') );
- GM_deleteValue('VK_title_old');
- }
- else
- {
- $('#restsTextsThis').attr('data-thisTitle', thisTitle);
- }
-
-
- $('#txtInputThis').val( thisTitle );
- }
-
- function doThis()
- {
- $('#inputPopup').slideToggle( 1000 );
- }
-
- if( $('#inputPopup').size() < 1 )
- {
- thePopup();
- doThis();
- sizingInput( $( '#txtInputThis' ).val() );
- }
- else
- {
- doThis();
- }
-
- function handlestr( str )
- {
- var strArray = str.split(' ');
- }
-
- $('#CancelsNowThis').off().on('mousedown',function() {
- $('#inputPopup').slideUp( 1000 );
- });
-
- $('#SaveReloadThis').off().on('mousedown',function() {
-
- var NewurlThis,
- nowTime = $.now(),
- titleThis = $('#txtInputThis').val(),
- oldtitleThis = $('#restsTextsThis').attr('data-thisTitle'),
- urlThis = docLoc;
-
- // Stored so it can be checked and used later after page are reloaded.
- GM_setValue('VK_date', nowTime );
- GM_setValue('VK_title', titleThis );
- GM_setValue('VK_title_old', oldtitleThis );
-
- // Clean up earlier uniqe generated url
- if( urlThis.search('=ffff') > 0 )
- {
- NewurlThis = urlThis.split('=ffff');
- urlThis = NewurlThis[0].slice(0, -1 );
- }
-
- // Creat new uniqe generated url and store as value, so it can be check when page loads.
- // This needs to be done so that download button gets the new title
- urlThis = urlThis + '?=ffff' + nowTime;
- GM_setValue('VK_lastUrl', urlThis );
-
- // Reload with that newley created url.
- window.location.href = urlThis;
- });
-
- $('#justupdateThis').off().on('mousedown',function() {
- var changeTo = $('#txtInputThis').val();
- $( mainTitleHead + ', title').text( changeTo );
- });
-
- $('#restsTextsThis').off().on('mousedown',function() {
- var changeTo = $('#restsTextsThis').attr('data-thisTitle');
- sizingInput( changeTo );
- $('#txtInputThis').val( changeTo );
- $( mainTitleHead + ', title').text( changeTo );
- });
-
- $( '#txtInputThis' ).bind("input change paste keyup", function( target ) {
- sizingInput( target.currentTarget.value );
- });
- }
-
- $(document).on('click','*',function(e){ this == e.target && l('target',e.target,1); });
- console.log('timeThis', performance.now() - timeThis );
-
- }(jQuery));
-
-
-
-
-
-
-
-