Результатов поиска: 240: Biography

Поисковый запрос: biography

Re: Скрипты для foo_uie_wsh_panel_mod

Класс!
А из tmp_Biography можно научить подхватывать?
(опционно)
No_mad
20.02.2016, 00:23
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua, что-то именно в своем уменьшенном скрипте Макса не могу добится "цепляния"
вот скрипт:
Код: Выделить всё
DT_RIGHT = 0x00000002;
DT_VCENTER = 0x00000004;
DT_CALCRECT = 0x00000400;

//function StrFmt(alignH,alignV,trim,flag){ return ((alignH<<28)|(alignV<<24)|(trim<<20)|flag); }
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var WshShell = new ActiveXObject("WScript.Shell");
var ww, wh;

window.MinHeight = window.MaxHeight = 220;

function CoverShow( metadb ) {
   this.CachedPath = 0;
    this.CachedCoversNumber = 0;
   
   // Interval
   this.Interval           = 12000;
   
   // Metadb
   this.OutputMetadb = function() {
         return (  fb.GetNowPlaying() );
   }
   
    this.FormatMeta = function( meta, db ) {
        if ( db )  {
          s     = fb.TitleFormat("%" + meta + "%").EvalWithMetadb( db );
          s     = s.replace(/[\/\\\:\*\?\"\<\>\|]/g,'-');
            s     = s.replace(/(^\s+)|(\s+$)/g, "");
            return s;
        } else return '';
    }
   // Search for files
        this.Search = function( array, dir) {
      var e = new Enumerator( dir.Files );
      while( !e.atEnd() ) {
         var name = e.item().Name;
         if( name.match(/\.(jpg|jpeg|png|gif|bmp|tiff)$/i) ) {
            array.push( e.item().Path );
         }
         e.moveNext();
      }
   }
   // Find all covers in the folder
   this.GetExternalCovers = function( path ) {
      var files = [];
      var files_this = [];
      var files_subs = [];
      var covers = [];
      try {
         var dir  = FSO.GetFolder( path );
            var root = dir.ParentFolder;
         this.Search(files_this, dir);
            this.Search(files_this, root);
           //SubCovers
             var e = new Enumerator(dir.SubFolders );
             for(; !e.atEnd(); e.moveNext() ) {
                this.Search(files_subs, files_biography, e.item() );
             }
      } catch(e) {
            // fb.trace( 'this.GetExternalCovers / path: ' + e.message );
        }
      if ( files_this.length > 0 || files_subs.length > 0 ) {
            files_this.sort();
            files_subs.sort();
            files = files = files.concat(files_this, files_subs);
            var k = files.length;
            files.reverse();
            while (k--){
            var name = files[k];
                    if ( name.match(/.*(cover|front|folder)([^\\]*)\.(jpg|jpeg|gif|png|bmp|tiff)$/i) ) {
                        covers.push( name );
                        files[k] = null;
                    }
         }
         overall = covers;
         k = files.length;
            while (k--){
                var cur = files[k];
            if ( typeof( cur ) == 'string' ) overall.push( cur );
         }
         return overall;
      }
      else return new Array();
   }
   this.GetCovers = function( path ) {
                    var embedded  =  this.GetEmbeddedCovers( this.Metadb );
               var external  = this.GetExternalCovers( path );
               var allcovers = []; allcovers = allcovers.concat(external, embedded);
               this.Covers = allcovers;
      if ( this.Covers.length > 0 ) {
         try {
                var temp = this.Covers[0];
                return ( typeof temp == 'object' ? temp.Clone( 0, 0, temp.Width, temp.Height ) : gdi.LoadImageAsync( window.ID, temp ) );
         }
         catch(e) { return undefined; }
      }
      else {
         this.Covers = false;
         return 0;
      }
   }
   this.GetEmbeddedCovers = function( metadb ) {
            var embedded = [];
            var c = 5;
            while ( c-- ) {
                if ( c == 3 ) continue;
                var temp = utils.GetAlbumArtEmbedded( metadb.RawPath, c );
                if ( temp ) embedded.push( temp );
            }
            return embedded;
   }
   this.CompareDirs = function() {
        metadb = this.OutputMetadb();
        try {
            metapath = metadb.Path;
        }
        catch (e) { metapath = 0; }
        if ( metapath ) {
                        var embedded  =  this.GetEmbeddedCovers( this.Metadb );
                        var external  = this.GetExternalCovers( metapath );
                        var allcovers = [];
                            allcovers = allcovers.concat(external, embedded);
                        //this.Covers = allcovers;
         var allcovers = new Array();
            allcovers = allcovers.concat(embedded, external);
            return this.CachedCoversNumber == allcovers.length;
        }
    }
   this.ChangeImage = function( val ) {
      this.CurrentCover = val;
   }
   this.NextCover = function() {
      if ( this.Covers && this.Covers.length > 1 ) {
         this.CurrentCoverNumber = this.CurrentCoverNumber + 1 == this.Covers.length ? 0 : this.CurrentCoverNumber + 1;
         try {
                var temp = this.Covers[ this.CurrentCoverNumber ];
                var img = ( typeof temp == 'object' ) ? temp.Clone(0,0,temp.Width,temp.Height) : gdi.LoadImageAsync(window.ID, temp);
         } catch (e) { var img = undefined; }
            this.ChangeImage( img );
            window.Repaint();
      }
        else if ( !this.Covers ) { this.Update();  }
   }
    this.MultipleCovers = function() {
        return ( this.Covers && this.Covers.length > 1 );
    }
   this.PrevCover = function() {
      if ( this.Covers && this.Covers.length > 1 ) {
         this.CurrentCoverNumber = ( this.CurrentCoverNumber == 0 ) ? this.Covers.length - 1 : this.CurrentCoverNumber - 1;
         try {
                var temp = this.Covers[ this.CurrentCoverNumber ];
                var img = ( typeof temp == 'object' ) ? temp.Clone(0,0,temp.Width,temp.Height) : gdi.LoadImageAsync(window.ID, temp);
         } catch (e) { var img = undefined; }
            this.ChangeImage( img );
            window.Repaint();
      }
        else if ( !this.Covers ) { this.Update(); }
   }
   this.StopTimer = function() {
      this.CycleTimer ? window.ClearInterval(this.CycleTimer) : '';
   }
   this.StartTimer = function() {
        if ( this.CycleTimer ) window.ClearInterval( this.CycleTimer );
    this.CycleTimer = window.SetInterval( function() { Cover.NextCover() }, this.Interval);
   }
    this.Reset  = function() {
        this.Covers = false;
        this.CoverX = null;
        this.CoverY = null;
        this.CurrentCoverNumber = 0;
        this.CurrentCover = 0;
        this.CachedPath = '';
        this.CachedCoversNumber = 0;
        this.CachedArtist = '';
    }
   this.Update = function( metadb ) {
        this.Metadb = metadb ? metadb : this.OutputMetadb();
       
        artist = this.FormatMeta( 'artist', this.Metadb );
      try {
            dir = this.Metadb.Path;
            dir = dir.replace(/\\([^\\]*)$/g, '');
            this.MetaPath = dir;
        }
      catch (e) { this.MetaPath = 0; }
      if ( this.MetaPath ) {
            var artist_temp = fb.TitleFormat("%artist%").EvalWithMetadb( this.Metadb );
            var a = this.CachedPath ? this.CachedPath : ' ';
            var b = this.MetaPath;
            if ( a != b || ( this.CachedArtist != artist_temp ) ) {
                this.Covers             = false;
            this.CurrentCoverNumber = 0;
                this.CurrentCover       = this.GetCovers( this.MetaPath );
                this.CachedPath         = this.MetaPath;
                this.CachedCoversNumber = this.Covers != undefined ? this.Covers.length : 0;
                this.CachedArtist       = artist_temp;
                window.Repaint();
         }
      }
      else {
            this.Reset();
            window.Repaint();
        }
   }
   //this.Update( metadb);
    this.CachedArtist = '';
    this.CachedCoversNumber = this.Covers != undefined ? this.Covers.length : 0;
   this.CycleTimer = 0;
   this.TimerStarted = false;
    this.LbtnPressed = 0;
    this.CoverX = null;
    this.CoverY = null;
    this.Covers = undefined;
}
var Cover = new CoverShow();
function on_size() {
    ww = window.Width;
    wh = window.Height;
    if ( ww && wh ) { Cover.Reset(); Cover.Update(); }
}

function on_paint( gr ) {
        gr.FillGradRect(0, 0, ww, wh, 240,0xee708040,0xccf0eebb,.4);
           
        if ( Cover.Covers ) {
       
        window.MinHeight = window.MaxHeight = 220;
       
            // Check if it's corrupted or not loaded
            if ( !Cover.CurrentCover ) {

                Cover.CoverX = null;
                Cover.CoverY = null;

                var cov = Cover.Covers[ Cover.CurrentCoverNumber ];

                if ( typeof cov == 'object' ) {

                    Cover.CurrentCover = cov == null ? false : cov.Clone(0,0,cov.Width,cov.Height);
                    var image_name = 'вшито';
                    }   else {

                    Cover.CurrentCover = gdi.Image( cov );
                    if ( Cover.CurrentCover == null ) Cover.CurrentCover = false;
                    var image_name = 'Image';
                }

               // if ( !Cover.CurrentCover ) gr.GdiDrawText( 'Показ невозможен.', g_font, 0xffaaaaaa, 0, 0, ww, wh, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);               
            }

            if ( typeof Cover.CurrentCover == 'object' ) {

                var img = Cover.CurrentCover;

                // Width, height, coords
                var resulting_height = wh - 10;;
                    if ( img.Width > ww || img.Height > resulting_height ) {
                        var iw1 = ww;
                        var iw2 = img.Width / ( img.Height / resulting_height );
                        var ih1 = resulting_height;
                        var ih2 = img.Height / ( img.Width / ww );
                        var iw = Math.min(iw1, iw2);
                        var ih = Math.min(ih1, ih2);
                    }
                    else {
                        var iw = img.Width;
                        var ih = img.Height;
                    }
                img = img.CreateRawBitmap();
                var x = (iw < ih) ? ((iw < ww) ? ((ww - iw)/2) : 0 ) : ((iw >= ww) ? 0 : ((ww - iw)/2));
                var y = (iw > ih) ? ((ih < resulting_height) ? ((wh - ih)/2) : 5 ) : ((ih >= resulting_height) ? 5 : ((wh - ih)/2));
                Cover.CoverX = x;
                Cover.CoverY = y;
                // Draw cover
                gr.GdiDrawBitmap( img, x, y, iw, ih, 0, 0, img.Width, img.Height );

                // Release graphics
                var graphics = Cover.CurrentCover.GetGraphics();
                Cover.CurrentCover.ReleaseGraphics( graphics );
                Cover.CurrentCover.Dispose();
                Cover.CurrentCover = 0;

            }
           
            // Cover Number
          //  if (Cover.Covers.length>1) {
            gr.GdiDrawText( (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length, gdi.Font("Tahoma",10), 0xff111111, 1, wh - 10, ww, 11, DT_RIGHT | DT_CALCRECT), gr.GdiDrawText( (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length, gdi.Font("Tahoma",10), 0xffffffff, 0, wh - 11, ww, 11, DT_RIGHT | DT_CALCRECT);
           // }
         
        }
        else {
        window.MinHeight = window.MaxHeight = 1;

        }
}

function on_load_image_done(cookie, image) {
    Cover.CurrentCover = image == null ? false : image;
    window.Repaint();
}

function on_mouse_wheel( step ) {
    (step < 0) ? Cover.NextCover() : Cover.PrevCover();
}

function on_playback_dynamic_info_track() {
    Cover.Reset();
    Cover.Update();
}

function on_playback_stop( Reason ) {
   Cover.StopTimer();
}

function on_playlist_items_added(playlist) { Cover.Update(); }

function on_playlist_items_removed(playlist, new_count) { Cover.Update(); }

function on_playlist_switch() { Cover.Update(); }

function on_playback_new_track( metadb ){
    Cover.Update( metadb );
    Cover.StartTimer();
}

function on_mouse_lbtn_dblclk (x,y){
    //if (Cover) WshShell.run '"' + Cover.CurrentCover + '"' );
}


function on_notify_data( name, info) {
     if ( name == '314FBCC4-9383-48CD-B2DA-45593D3BE1FF' ) {
        Cover.CachePath = info;
        Cover.Reset();
        Cover.Update();
    }
}
Это я выложил без tmp_Biography добавок, да, ещё трабла - а как в нём организовать

function on_mouse_lbtn_dblclk (x,y){
//if (Cover) WshShell.run '"' + Cover.CurrentCover + '"' );
}
(Cover.CurrentCover "не доходит до этой функции"

===============================================
kgena_ua:В скрипте Биография в function on_timer(id) { добавил внизу
а зачем в биографии теперь таймер, если картинок нет? Я вообще убрал его и биография отлично работает, оставил только delay_timer
No_mad
14.02.2016, 16:16
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

No_mad, Скрипт Макса просто так и не увидит файлы (как и любой другой), его нужно "заставить". Я скрипт Макса знаю только в плане считывания файлов из папок, желания изучать его глубже нет, тем более, что я делаю свой скрипт для обложек.
Но в любом случай попробовал.
В скрипт Максима добавил внизу:
Код: Выделить всё
var tmp_b_path = fb.ProfilePath + "\\tmp_Biography\\";
var files_biography = [];

function get_files_from_b_dir() {
    files_biography = [];
    var e = new Enumerator( FSO.GetFolder(tmp_b_path).Files );
    while ( !e.atEnd() ) {
        var name = e.item().Name;
            files_biography.push(tmp_b_path + name);
        e.moveNext();
    }
}

function on_notify_data(name, info) {
    if(name == "b_images") {
        get_files_from_b_dir();
        window.Repaint();
     }
}

строку, у меня 174
Код: Выделить всё
   files = files.concat(files_this, files_subs);

заменил на
Код: Выделить всё
   files = files.concat(files_this, files_subs, files_biography);

В скрипте Биография в function on_timer(id) { добавил внизу
Код: Выделить всё
    window.NotifyOthers("b_images", step);
Начала подтягивать файлы, только на радио не хочет (вернее он видит их - массив files_biography не пустой, но отображать не хочет), наверное какая-то проверка стоит.
kgena_ua
14.02.2016, 14:24
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua, качественный продукт :)) спасибо! Сижу, ломаю, втискиваю в свою сборку. Суть "ломания"... - я, помнится, просил объединить текст и биографию (и это правильно), но вот теперь убираю показ картинок (а вот их поиск, загрузку оставил) - т.е. скрипт ищет и загружает и текст, и картинки во временную папку tmp_Biography (и удаляет их сам). А вот показ картинок пытаюсь организовать по другому - через скрипт Макса, переделал его, упростил максимально, он по идее так сейчас и работает - выводит в цикле вшитые, картинки рядом с треком, картинки в субпапках и должен "цеплять" tmp_Biography, но пока именно ее и не показывает - не хватает клепки довести, сможешь помочь (вышлю настроенную сборку), или отдохнешь после мегаскрипта?
Получается два независимых скрипта, общающихся через папку tmp_Biography (Дубровский сношался с Машей через дупло) :wink: как-то так .
No_mad
13.02.2016, 22:24
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua
seriousstas, не отображает. А загружает ?
Нет и не загружает . tmp_Biography пустая при этом .
ps
Удалось "повалить" Фубар и этим Rock, Blues, Rock & Roll - повторил пару раз .
Поставил 50 фото для загрузки вместо 5-ти и на 10-м переключении фубар так-же перестаёт грузить ..
MC Web
Тогда попробуй через прокси сервер (увеличь расстояние), если гипотеза верна, должно работать...
Развалилась :)
Брал здесь :
http://foxtools.ru/Proxy?al=True&am=True&ah=True&ahs=True&http=True&https=True
тот-же результат ..
seriousstas
11.02.2016, 02:44
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

seriousstas:Попробуй поклацай несколько штук (смени язык) и посмотри ,как
подгружает картинки(WSH Biography Text & Picture Llast.fm) ... Помогает только перезагрузка Фубара
Была проблема, но после правки автором - в последней версии скрипта все наладилось (на 32 странице скрипт). Проверяйте. У меня заработало.
Ошибка при двойном клике на картинку была в windows 10 из-за нового просмотрщика фотографий (нормализовалась, когда установил его программой по умолчанию для *jpg).
Вылез еще момент, запустил плеер на работе с флешки: ругается и не видит путь к картинкам. Сначала ругался на строку
251: var e = new Enumerator( fso.GetFolder(tmp_b_path).Files );
путь не найден, т.к. при установке на флешку не создавал папку tmp_Biography. Активировал припрятанную строку:
if(!fso.FolderExists(tmp_b_path)) {fso.CreateFolder(tmp_b_path)};, кстати в финальный релиз скрипта может ее все же включить?
Теперь не грузит туда картинки. Проверьте, чем флешка ему не угодила?!
В остальном все работает чудесно, спасибо мастер :wink:
Aum
10.02.2016, 11:05
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

MC Web
Ты наверное пропустил обсуждение , да и после аварии на foobar2000.ru ,здесь за пару дней сообщения исчезли после того , как сервер "подняли" .
Радио работает отменно , не переключаются картинки после перехода на другие станции . Попробуй поклацай несколько штук (смени язык) и посмотри ,как
подгружает картинки(WSH Biography Text & Picture Llast.fm) ... Помогает только перезагрузка Фубара .
Видео проблемы есть в моём сообщении выше
seriousstas
10.02.2016, 01:10
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

Тоже несколько суток поскакал по инет-станциям - полёт срипта биографии нормальный :)) и языки переключаю - без сбоев.
По русски - немало инфы отображается. А как можно сделать RU text дефолтным, но в случае отсутствия русского текста - переключиться автоматом на бритиш и повторить поиск, и только если и после этого ничего нет пойти за пивом вывести текст - ничего не найдено. И еще до краха сайта у меня был вопрос, и он пропал - можно ли в добавление к "штатной" папке tmp_Biography проводить поиск и в папке трека - тогда без интернета окно бы не пустовало (лучше чтобы не ИЛИ из той или другой папки, а И с той и другой.
No_mad
08.02.2016, 11:05
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

Просьба материализовалась :weirdface: (ну и слово) :
Изображение Надо почаще правой кнопкой пользоваться...

надо тестировать.
работает исправно .
Марковский кстати дубли делает . Вот так :
Oscar Peterson_c0135260d61d47af87811a2d74f8da97.jpg
Oscar Peterson_c0135260d61d47af87811a2d74f8da97.jpg.jpg
Для первой на серваке фотографии .
"Biography Text && Picture. www.last.fm" - не плодит дублей .
ps
изменил в thumbs.js
Код: Выделить всё
531  var filename = base + url.substring(url.lastIndexOf("/") + 1) + ".jpg";
на
Код: Выделить всё
var filename = base + url.lastIndexOf (+1) + ".jpg";

Дублей нет .Названия теперь :
Ricardo Donoso_39.jpg
Ricardo Donoso_40.jpg
seriousstas
05.02.2016, 05:13
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

MC Web
kgena_ua почти закончил WSH Biography Text & Picture Llast.fm, так что одна замена Biography View есть.
Сам оч. жду ...
Может заинтересует ещё один Марковский гибрид картинок с биографией ...
Недавно обновил в сборке (работает на WSH , если "умрёт" со временем , можно попробовать заменить foobar2000\wsh_marc2003\js\thumbs.js на его) , которая вроде , как "доспела" сюда :
/viewtopic.php?t=5876&p=59842#p59842
Сделал там на AHK небольшой портабельный скриптик удаления кеша картинок (можно удалять любую папку по-аналогии )..
seriousstas
04.02.2016, 03:42
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

AHAPXICT, Biography View потихоньку загибается - биографию без скрипта не грузит, а картинку всего одну и неизвестно на долго ли.

kgena_ua почти закончил WSH Biography Text & Picture Llast.fm, так что одна замена Biography View есть.

Относительно скриптов marc2003 для панели WSH - посмотри темы DarkOne_v3.0 + 4.0_Rus NEW (BIO на WSH) / DarkOne_v3.0 + 4.0_Rus NEW (BIO на WSH в папке TEMP) здесь (вносил последние изменения, пока все работает).
MC Web
03.02.2016, 22:47
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

Всем привет! И я сюда же, как то пропустил эту тему в своё время. kgena_ua, спасибо работает супер. Сижу настраиваю отображение текста в меню свойства, а потом замечаю что он просто мышкой перетягивается по экрану, посмеялся сам над собой. Заменил gr.GdiDrawText на gr.DrawString для отображения &, поставил строку gr.SetTextRenderingHint(5); для рендеринга текста. Всё вроде бы получилось, но перестал работать DT_CENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS для исполнителя, при уменьшении размера сворачивается в несколько строк и налазит на основной текст. Экспериментировал с с теми производными от бегущей строки, но они вроде бы здесь не к чему?
MC Web, и я такие указатели хочу))) Этого сейчас так не хватает)))
kgena_ua, MC Web, Вы ведь эту тему пару месяцев назад развивали? Вот что хочу спросить. Для меня новые скрипты для js панели от marc2003 недоступны по понятной причине, поэтому одна надежда WSH. Вопрос в следующем: Можно ли подобное реализовать для стандартного плагина Biography View путём добавления External Scripts ? Так и в сборке нечего менять не надо, добавил скрипт и порядок. Не могу понять почему эту тему никто не развивает, ведь есть огромное количество старых хороших сборок на этом компоненте.
P.S. Пока писал - уже и видео есть))))
AHAPXICT
03.02.2016, 22:16
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

Aum, надо тестировать.
Безымянный.png

tmp_Biography.rar
(4.49 КБ) Скачиваний: 303

Папку tmp_Biography в корень.
Из папки download скрипт (script.txt) вставить в окно WSH панели.
kgena_ua
03.02.2016, 16:22
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua, то же с прошедшими праздниками!

Загляни в ЛС, написал по поводу скрипта "Biography Text. last.fm"...
MC Web
10.01.2016, 17:31
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua, заметил "глюк" в скрипте Biography Text last.fm у себя в панели DarkOne:

- при наличии текста биографии и разворачивания/сворачивания из оконного режима в полно-экранный или наоборот, происходит зависание проигрывателя, в остальном работает нормально
- удаляю этот скрипт (пустая панель WSH) разворачивание/сворачивание происходит нормально
- проверял в DUI, там вроде не глючит

В чем причина, не пойму...
MC Web
14.12.2015, 16:10
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua, у меня с Reload та же картина (ошибка) - но это не так важно, по сравнению с первым вариантом скрипта картинки грузятся.
Предложение, можно добавить загрузку No Cover, выбранного в настройках foobar2000, при отсутствии обложек?
Не всегда есть обложки, особенно при прослушивании WEB радиостанции и остается пустое поле. Это и в скрипте от marc2003 мне не нравится, в отличии от foo_uie_biography.
Может данный вариант и с этим поможет
kgena_ua:Пробую после выполнения запроса ждать ответа
MC Web
12.12.2015, 13:26
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131
  • 1

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua, спасибо, интересно.
Только сравнил с marc2003 (его панель справа), не все изображения показывает.
Скриншот
Изображение
Нажимаешь Reload - ошибка:
Код: Выделить всё
Ошибка: Панель WSH (модуль) (Picrure. www.last.fm): Ошибка выполнения Microsoft JScript:
Объект не поддерживает это свойство или метод
File: <main>
Ln: 235, Col: 9
<source text only available at compile time>
WSH Panel Mod (Picrure. www.last.fm): initialized in 19 ms
WSH Panel Mod (Picrure. www.last.fm): initialized in 17 ms
После перезапуска WSH Panel Mod начинает показывать.

Я сделал немного по другому: фото "бесследно качает" foo_uie_biography (правда одно), а для биографии использую Ваш скрипт WSH Biography Text Last.fm.
Получилось так и еще разделителем можно регулировать пропорции полей фото / текст:
Скриншот
Изображение
MC Web
10.12.2015, 19:53
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

Загрузка картинок с last.fm.
"бесследную" загрузку картинок сделать не получается.
Как вариант, создается папка tmp_Biography, где будут картинки только для одного, выбранного в данный момент, исполнителя.
Пока только тест.
Дополнительно ничего не надо ставить.
Код: Выделить всё
// ==PREPROCESSOR==                  
// @name "Picrure. www.last.fm"                  
// @feature "v1.4"                  
// @feature "watch-metadb"   
// ==/PREPROCESSOR==                  

function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }                  

var a_font = gdi.Font("Arial",12,1);                  
var b_font = gdi.Font("Arial",12,0);                  
var ww,wh;                  

DT_LEFT = 0x00000000;                  
DT_RIGHT = 0x00000002;                  
DT_CENTER = 0x00000001;                  
DT_VCENTER = 0x00000004;                  
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;
DT_WORDBREAK = 0x00000010;
DT_CALCRECT = 0x00000400;
DT_NOPREFIX = 0x00000800;

var bgcolor = RGB(40,40,40);
var a_color = RGB(255,255,230);
var b_color = RGB(255,255,230);

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var doc = new ActiveXObject("htmlfile");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var objADOStream = new ActiveXObject("ADODB.Stream");

var tmp_b_path = fb.ProfilePath + "\\tmp_Biography\\";
if(!fso.FolderExists(tmp_b_path)) {fso.CreateFolder(tmp_b_path)};

var artist, old_artis;
var files = [], selected = 0;

var col = 20;
var row = 50;

var limit = window.GetProperty("limit",5);

var metadb;
on_item_focus_change();

function on_paint(gr){   
   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);

    if(fso.FileExists(tmp_b_path + files[selected]) ) {
        g_img = gdi.Image(tmp_b_path + files[selected]); 

        var scale_w = ww / g_img.Width;
        var scale_h = wh / g_img.Height;
        var scale = Math.min(scale_w, scale_h);
        var pos_x = 0;
        var pos_y = 0;

        if (scale_w < scale_h) pos_y = (wh - g_img.Height * scale) / 2;
        else if (scale_w > scale_h) pos_x = (ww - g_img.Width * scale) / 2;
   
        g_img = g_img.CreateRawBitmap();
        gr.GdiDrawBitmap(g_img, pos_x, pos_y, g_img.Width * scale, g_img.Height * scale, 0, 0, g_img.Width, g_img.Height);
    }

    gr.GdiDrawText(artist, a_font, bgcolor, col + 1, 10 + 2, ww - col + 1, wh + 2, DT_LEFT | DT_WORD_ELLIPSIS );   
    gr.GdiDrawText(artist, a_font, a_color, col, 10, ww - col, wh, DT_LEFT | DT_WORD_ELLIPSIS );
   
    gr.GdiDrawText(selected + 1 + " (" + files.length + ")", a_font, bgcolor, col + 1, 30 + 2, ww - col + 1, wh + 2, DT_LEFT | DT_WORD_ELLIPSIS );   
    gr.GdiDrawText(selected + 1 + " (" + files.length + ")", a_font, a_color, col, 30, ww - col, wh, DT_LEFT | DT_WORD_ELLIPSIS );   

}   

function on_mouse_wheel(delta) {   
    if (delta < 0) {selected = selected <= 0 ? files.length - 1 : selected -= 1}   
    if (delta > 0) {selected = selected >= files.length - 1 ? 0 : selected += 1}   
    window.Repaint();
}

function on_mouse_move(x, y) {
    on_mouse = true;
    window.SetCursor(32649);
    window.Repaint();
}

function on_mouse_leave() {
    on_mouse = false;
    window.SetCursor(32512);
    window.Repaint();
}

function on_size(){   
    ww = window.Width;      
    wh = window.Height;   
}   

function on_item_focus_change() {   
   metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
    if (metadb) on_metadb_changed();   
}   

function on_playlist_switch() {   
    on_item_focus_change();   
}   

function on_playback_new_track() {
    on_item_focus_change();
}

function on_playback_dynamic_info_track() {
    on_item_focus_change();
}

function on_playback_stop() {
    on_item_focus_change();
}

function on_selection_changed(metadb) {
   on_item_focus_change(); 
}

function Eval(field) {
    if (metadb) {
        path = fb.Titleformat("%path%").EvalWithMetadb(metadb);
        return path.indexOf('://') > 0 ? fb.TitleFormat("[" + field + "]").Eval(true) : fb.TitleFormat("[" + field + "]").EvalWithMetadb(metadb);
    }
}

function on_metadb_changed() {
    artist = Eval("%artist%");
    if (artist != old_artis){
     try {
        fso.deleteFile(tmp_b_path + "*.*" );
    } catch(e) {};
        get();
        selected = 0;
        old_artis = artist;
    }
    //window.Repaint();
}

function get(){
    if (artist == "" || artist == "?") {return};
   
    var url = ("http://www.last.fm/music/" + encodeURIComponent(artist) + "/+images");
    xmlhttp.open("GET", url, true);
    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xmlhttp.send();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                doc.open();
              var div = doc.createElement("div");
              div.innerHTML = xmlhttp.responsetext;
              var data = div.getElementsByTagName("img");
              var urls = [];
                for (i = 0; i < data.length; i++) {
                 if (data[i].src.indexOf("http://img2-ak.lst.fm/i/u/60x60/") == 0) urls.push(data[i].src.replace("60x60", "ar0"));
                }
              for (i = 0; i < Math.min(urls.length, limit); i++) {
                    get_p(urls[i],i);
                }
              doc.close();
                get_files_from_dir();

            } else {
                artist = ""
            }
            window.Repaint();
        }
    }
}

function get_p(url, i){
    if(!fso.FileExists(tmp_b_path + i + ".jpg") ) {
        xmlhttp.open("GET", url, true);   
        xmlhttp.send();   
          //xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {   
               var objADOStream = new ActiveXObject("ADODB.Stream");
               objADOStream.Open;
               objADOStream.Type = 1;
               objADOStream.Write(xmlhttp.ResponseBody);
               objADOStream.Position = 0;
                try {
                   objADOStream.SaveToFile(tmp_b_path + i + ".jpg");
                } catch(e) {};

               objADOStream.Close;
            //}   
            }
        }
    }
}

function get_files_from_dir() {
    files = [];
    var e = new Enumerator( fso.GetFolder(tmp_b_path).Files );
    while ( !e.atEnd() ) {
        var name = e.item().Name;
        name = name.toLowerCase(name);
        files.push(name);
        e.moveNext();
    }
}

function on_mouse_rbtn_up (x, y){     
    var _menu = window.CreatePopupMenu();
    var i = 1;

    MF_ENABLED = 0x00000000;
    MF_GRAYED = 0x00000001;
   
    _menu.AppendMenuItem(MF_ENABLED, i++, "...");
    _menu.AppendMenuItem(MF_ENABLED, i++, "...");
   
    ShiftDown = utils.IsKeyPressed(0x10) ? true : false;
   
//    if (ShiftDown) {
        _menu.AppendMenuItem(0x00000800, 0, 0);
        _menu.AppendMenuItem(0x00000000, 10, "Reload");
        _menu.AppendMenuItem(0x00000800, 0, 0);
        _menu.AppendMenuItem(0x00000000, 20, "Properties");
        _menu.AppendMenuItem(0x00000000, 30, "Configure ...");
//    }

    ret = _menu.TrackPopupMenu(x,y);

    switch (ret) {
    case 1:
        break;
    case 2:
        break;
    case 10:
        window.Reload();
        break;
    case 20:
        window.ShowProperties();
        break;       
    case 30:   
        window.ShowConfigure();   
        break;   
   }
    _menu.Dispose();   
    return true;   
}
kgena_ua
10.12.2015, 18:54
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

kgena_ua, спасибо, жалко только, что вся биография на английском и это все перечеркивает.
Для отображения полной биографии на английском, есть скрипт для foo_uie_biography.dll и там все прекрасно работает, а вот на русском, пока только скрипт от marc2003:
Два варианта вывода биогафии
Изображение

Пока тестировал, заметил, что иногда на русском выводит даже больше информации по биографии, чем на английском.
Иногда вообще нет информации на английском, на русском выдает, хотя группы американские, по радио:
Два варианта вывода биогафии
Изображение
MC Web
27.11.2015, 17:31
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131

Re: Скрипты для foo_uie_wsh_panel_mod

Накрылся плагин foo_uie_biography.dll: вместо 5 фотографий (как было раньше) показывает только одно фото.
В сборке нашёл WSH-скрипт от marc2003 для замены данного плагина. В скрипте есть команды контекстного меню для действий над фотками:
Спойлер
Изображение
Спойлер
Код: Выделить всё
if (im.trace(x, y) && im.images.length > 0 && (!this.check_feature("thumbs") || th.mode != "grid")) {
   _menu.AppendMenuItem(MF_STRING, 400, "Открыть папку с этими файлами");
   _menu.AppendMenuItem(MF_STRING, 401, "Открыть изображение");
   _menu.AppendMenuItem(MF_STRING, 402, "Удалить изображение");
   _menu.AppendMenuSeparator();
   _menu.AppendMenuItem(MF_STRING, 404, "Обрезать (фокусировать по центру)");
   _menu.AppendMenuItem(MF_STRING, 405, "Обрезать (фокусировать по верху)");
   _menu.AppendMenuItem(MF_STRING, 406, "Отцентровать");
   _menu.AppendMenuItem(MF_STRING, 407, "Растянуть");
   _menu.CheckMenuRadioItem(404, 407, im.type == "crop" ? 404 : im.type == "crop top" ? 405 : im.type == "centre" ? 406 : 407);
   _menu.AppendMenuSeparator();
}
Спойлер
Код: Выделить всё
case 400:
   this.run("explorer /select,\"" + im.files[im.index] + "\"");
   break;
case 401:
   this.run("\"" + im.files[im.index] + "\"");
   break;
case 402:
   im.delete_image();
   break;
case 403:
   im.update();
   break;
case 404:
case 405:
case 406:
case 407:
   im.type = idx == 404 ? "crop" : idx == 405 ? "crop top" : idx == 406 ? "centre" : "stretch";
   window.SetProperty("image_type", im.type);
   window.Repaint();
   break;

Как в меню добавить команду "Сохранить изображение", при выборе которого открывалось бы окно, типа такого?
Спойлер
Изображение
Крепыш
14.12.2013, 21:32
 
Раздел: Секреты foobar2000
Тема: Скрипты для foo_uie_wsh_panel_mod
Ответы: 2988
Просмотры: 574131
Пред.

Вернуться в: Скрипты для foo_uie_wsh_panel_mod