Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Facebook плейлист на споделените връзки


a.bozhilov
 Сподели

Препоръчан отговор

След промяната на дизайна връзките във Facebook са леко забити и реших да си направя списък с последните връзки от приятелите ми и от моите.

Някой ако се нуждаее от подобна функционалност споделям потребителския скрипт.

// ==UserScript==
// @name            FBPlaylist
// @version         0.7.1
// @author          Asen Bozhilov 
// @license         MIT
// @description     Build playlist based on shared links by you and your friends
// @namespace 	    gm.asenbozhilov.com
// @include         http://www.facebook.com/*
// @exclude         http://www.facebook.com/?sk=messages*
// @resource loadingGif http://gm.asenbozhilov.com/fbplaylist/images/ajax-loader.gif
// ==/UserScript==


(function () {
    var 
        /**
        * Open http://www.facebook.com/posted.php?id=YOUR_FACEBOOK_ID and get the URL of your RSS feed
        **/
        MY_CHANNEL = 'http://www.facebook.com/feeds/share_posts.php?id=1618275997&viewer=1618275997&key=08b11eaedb&format=rss20', 
            
        /**
        * Open http://www.facebook.com/posted.php and get the URL of your friends RSS feed
        */ 
        FRIENDS_CHANNEL = 'http://www.facebook.com/feeds/share_friends_posts.php?id=1618275997&key=55889d9935&format=rss20',
        
        /**
        * Country code according ISO 3166
        * If country code is not correct or there is not entry for this language, the default language is English 
        */
        DEF_LANGUAGE = 'BG',
        
        /**
        * 0 - MY_CHANNEL
        * 1 - FRIENDS_CHANNEL
        */
        DEF_PLAYLIST = 1,
        
        TARGET_WIN = 'fbplaylist-win',
        
        LOADING_GIF = typeof GM_getResourceURL != 'undefined' ? GM_getResourceURL('loadingGif') : 'http://gm.asenbozhilov.com/fbplaylist/images/ajax-loader.gif'; 
    
    var LANG = {
        EN : {
           links : 'Frinds links', 
           myLinks : 'My links',
           by : 'By'     
        },
        
        BG : {
           links : 'Връзки от приятели',
           myLinks : 'Моите връзки',
           by : 'От' 
        }
    };

    var usrLang = LANG[DEF_LANGUAGE] || LANG.EN;
    
    var rightSide = document.getElementById('rightCol'),
        holder, playlist,
        title, select;

    if (rightSide) {  
        GM_addStyle(
            '#fbplaylist li a {display: block; padding: 5px 3px;}' +
            '#fbplaylistHolder {margin-bottom: 20px;}' + 
            '#fbplaylistHolder h4 {overflow: hidden;}' + 
            '#fbplaylistHolder select {width: 234px;}' + 
            '.loading-playlist {height: 100px; background: url(' + LOADING_GIF + ') no-repeat center;}'
        );        
        
        holder = document.createElement('div');
        holder.id = 'fbplaylistHolder';
        
        playlist = document.createElement('div');
        playlist.id = 'fbplaylist';
        playlist.className = 'loading-playlist';
        
        title = document.createElement('h4');
        title.className = 'uiHeader uiHeaderTopAndBottomBorder mbs uiSideHeader';
        
        select = document.createElement('select');
        select.addEventListener('change', changePlaylist, false);
        
        select.options[0] = new Option(usrLang.myLinks, MY_CHANNEL);
        select.options[1] = new Option(usrLang.links, FRIENDS_CHANNEL);
        select.options[DEF_PLAYLIST].selected = true;        
        
        title.appendChild(select);
        holder.appendChild(title);
        holder.appendChild(playlist);
        rightSide.insertBefore(holder, rightSide.firstChild);
        
        getPlaylist(DEF_PLAYLIST ? FRIENDS_CHANNEL : MY_CHANNEL);
    }    

    function getPlaylist(url) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 &&  xhr.status == 200) {
                buildPlaylist(xhr.responseXML);
            }
        };
        xhr.send(null);
    }

    function buildPlaylist(xmlTree) {
        var items = xmlTree.getElementsByTagName('item'),
            item, title, 
            url, author,
            htmlCode = '<ul>';
        for (var i = 0, len = items.length; i < len; i++) {
            item = items[i];
            title = item.getElementsByTagName('title')[0].textContent;
            author = item.getElementsByTagName('author')[0].textContent;
            url = item.getElementsByTagName('description')[0].textContent.match(/<a href="([^"]+)/)[1];       
            htmlCode += '<li><a style="background-color: #' + (i % 2 == 0 ? 'FFFFFF' : 'F2F2F2')  + ';" href="' + url + '" target="' + TARGET_WIN + '" title="' + usrLang.by  + ': ' + author + '">' + title + '</a></li>';
        }
        
        playlist.className = '';
        playlist.innerHTML = htmlCode + '</ul>';
    }
    
    function changePlaylist() {
        playlist.className = 'loading-playlist';
        playlist.innerHTML = '';
        getPlaylist(this.value);       
    }
})();

Ако някой желае последните версии на този скрипт, защото смятам да направя някои добавки може да вземе скрипта от репозиторито в github.

https://github.com/abozhilov/user-scripts/blob/master/fbplaylist/FBPlaylist.user.js

Идеи за допълнителна функционалност са добре дошли. Също така някой ако има проблеми с инсталацията може да пише тук. Тествал съм го с greasemonkey 0.9.0 с Firefox 3.6 под Debian. Тествано е и с Google Chrome 5.0 пак под същата операционна система. С Opera не би следвало да има проблеми.

Редактирано от asen.bozhilov (преглед на промените)
Линк към коментара
Сподели в други сайтове

Ако си с Firefox, инсталираш greasemonkey: https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/ Записваш горния код с разширение user.js. След това го отваряш този файл с Firefox и следваш инструкциите. Иначе какво представляват потребителските скриптове: http://en.wikipedia.org/wiki/Greasemonkey Най-общо казано по този начин инжектираш скрипт в определена страница. Така можеш да променяш съдържанието, изгледа и поведението на тази страница. Архитектурата на greasemonkey е такава че при реализиране на DOMContentLoaded събитието се изпълнява зададения скрипт. Също така скриптовете от страницата и потребителските по подразбиране не интерферират един с друг. Потребителските скриптове в greasemonkey поне в последните версии се изпълняват в Sandbox, което напълно изолира скрипта от тези в страницата. Все пак има пойнтър към глобалния обект на основната страница. `unsafeWindow' http://wiki.greasespot.net/UnsafeWindow Като цяло така може да предефинираш потребителски функции в Javascript-а в основната страница. Но също така, по този начин може да си отрежеш пръстите и да отвориш дупка в сигурността. Премахването на скрипта става през greasemonkey: Manage user scripts -> Uninstall

Редактирано от asen.bozhilov (преглед на промените)
Линк към коментара
Сподели в други сайтове

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

 Сподели

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване