Вывод торрент-клиента в профиле

zxc

Пользователь
#1
Поделюсь с вами небольшим модом. У меня древняя ревизия R600, так что подгоняйте под себя. Очень жаль что разработчики решили отказаться от подержки старых версий движка.





Итак
В config.php добавляем
peer_id клиентов
PHP:
$bb_cfg['user_clients']['azureus'] = array(
//AZUREUS_STYLE_CLIENTS
    '7T' => 'aTorrent (Android)',
    'AB' => 'AnyEvent::BitTorrent',
    'AG' => 'Ares',
    'A~' => 'Ares',
    'AN' => 'Ares',
    'AR' => 'Arctic',
    'AV' => 'Avicora',
    'AT' => 'Artemis',
    'AX' => 'BitPump',
    'AZ' => 'Azureus',
    'BA' => 'µTorrent',
    'BB' => 'BitBuddy',
    'BC' => 'BitComet',
    'BE' => 'BareTorrent',
    'BF' => 'BitFlu',
    'BG' => 'BTGetit',
    'BH' => 'BitZilla',
    'BK' => 'BitKitten (libtorrent)',
    'BL' => 'BitBlinder',
    'BLZ' => 'Blizzard Downloader',
    'BM' => 'BitMagnet',
    'BN' => 'Baidu Netdisk',
    'BOWP' => 'BitsOnWheels',
    'BOW' => 'BitsOnWheels',
    'BP' => 'BitTorrent Pro (Azureus + Spyware)',
    'BR' => 'BitRocket',
    'BS' => 'BTSlave',
    //'BT' => 'BBtor',
    'BT' => 'BitTorrent',
    'BW' => 'BitWombat',
    'BX' => 'Bittorrent X',
    'CD' => 'Enhanced CTorrent',
    'CT' => 'CTorrent',
    'DE' => 'DelugeTorrent',
    'DP' => 'Propagate Data Client',
    'DNA' => 'BitTorrent DNA',
    'EB' => 'EBit',
    'ES' => 'Electric Sheep',
    'FC' => 'FileCroc',
    'FD' => 'Free Download Manager',
    'FG' => 'FlashGet',
    'FT' => 'FoxTorrent/RedSwoosh',
    'FX' => 'Freebox',
    'FL' => 'Flud',
    //'FL' => 'Folx',
    'G' => 'G3 Torrent',
    'GS' => 'GSTorrent',
    'GR' => 'GetRight',
    'HK' => 'Hekate',
    'HL' => 'Halite',
    'HM' => 'hMule',
    'HN' => 'Hydranode',
    'IL' => 'iLivid',
    'JS' => 'Justseed.it',
    'JT' => 'JavaTorrent',
    'KG' => 'KGet',
    'KT' => 'KTorrent',
    'LC' => 'LeechCraft',
    'LH' => 'LH-ABC',
    'LK' => 'Linkage',
    'LP' => 'Lphant',
    'LT' => 'LibTorrent',
    //'LT' => 'LibTorrent (Rasterbar)',
    //'lt' => 'LibTorrent (Rakshasa)',
    'LW' => 'LimeWire',
    'LIME' => 'LimeWire',
    'MK' => 'Meerkat',
    'ML' => 'MLDonkey',
    'MG' => 'MediaGet',
    'MO' => 'MonoTorrent',
    'MP' => 'MooPolice',
    'MR' => 'Miro',
    'MT' => 'MoonlightTorrent',
    'NB' => 'Net::BitTorrent',
    'NE' => 'BT Next Evolution',   
    'NX' => 'Net Transport',
    'OP' => 'Opera',
    'OS' => 'OneSwarm',
    'OT' => 'OmegaTorrent',
    'PB' => 'Protocol::BitTorrent',
    'pb' => 'pbTorrent',
    'PC' => 'CacheLogic',
    'PD' => 'Pando',
    'PE' => 'PeerProject',
    'PI' => 'PicoTorrent',
    'PT' => 'PHPTracker',
    'pX' => 'pHoeniX',
    'QB' => 'qBittorrent',
    'qB' => 'qBittorrent',
    'QD' => 'QQDownload',
    'QT' => 'QT',
    'QWOD' => 'QWOD',
    'RS' => 'Rufus',
    'RT' => 'Retriever',
    'RZ' => 'RezTorrent',
    
    'SB' => 'Swiftbit',
    'SD' => 'Thunder',
    'SG' => 'GS Torrent',
    'SM' => 'SoMud',
    'SP' => 'BitSpirit',
    'SS' => 'SwarmScope',
    'ST' => 'SymTorrent',
    'st' => 'sharktorrent',
    'SZ' => 'Shareaza',
    'S~' => 'Shareaza',
    'TB' => 'Torch',
    'TE' => 'Terasaur Seed Bank',
    'TI' => 'Tixati',
    'TIX' => 'Tixati',
    'TIXX' => 'Tixati',
    'TL' => 'Tribler',
    'TN' => 'TorrentDotNET',
    'TR' => 'Transmission',
    'TS' => 'TorrentStorm',
    'TT' => 'TuoTu',
    'UE' => 'µTorrent Embedded',
    'UL' => 'uLeecher!',
    'UM' => 'µTorrent (Mac)',
    'UT' => 'µTorrent',
    'VG' => 'Vagaa',
    'WT' => 'BitLet',
    'WW' => 'WebTorrent',
    'WY' => 'FireTorrent',
    'XBT' => 'XBT Client',
    'XF' => 'Xfplay',
    'XL' => 'Xunlei',
    'XS' => 'XSwifter',
    'XT' => 'XanTorrent',
    'XC' => 'Xtorrent',
    'XX' => 'Xtorrent',
    'ZT' => 'ZipTorrent',
    'ZO' => 'Zona',
    'ZT' => 'ZipTorrent',
    'ZZ' => 'Unknown client',
);

$bb_cfg['user_clients']['shadow'] = array(   
//SHADOW_STYLE_CLIENTS
    'A' => 'ABC',
    'O' => 'Osprey Permaseed',
    'Q' => 'BTQueue',
    'R' => 'Tribler',
    'S' => 'Shadow\'s client',
    'T' => 'BitTornado',
    'U' => 'UPnP NAT Bit Torrent ',   
);

$bb_cfg['user_clients']['mainline'] = array(   
//MAINLINE_STYLE_CLIENTS
    'M' => 'BitTorrent',
    'Q' => 'Queen Bee'
);

Кому интересно можете поковырятся в исходниках transmission

Please Login or Register to view hidden text.

и пополнить базу. Но большую часть я оттуда забрал


в function.php вставляем
PHP:
function get_user_client($uclient,$full=true){
    global $bb_cfg;
    
    //var_dump($uclient);
    if($uclient==false){return false;}
    
    $uclient=($uclient{0}=="-") ? $uclient : "-".$uclient;
    
    $uclient=str_replace('-TIX0','-TIX',$uclient);
    $uclient=str_replace('-MG-2.01.','-MG201',$uclient);
    
    
    
    
    preg_match('#^\-([a-z~]{1,4})([\d]{1}[\d\w]{1,4})\-?#i',$uclient,$match); //AZUREUS_STYLE_ENCODING
    preg_match('#^\-([a-z])(\d+)\-(\d+)\-(\d+)#i',$uclient,$match2); //BRAM's_STYLE_ENCODING
    preg_match('#^([a-z])(([a-z0-9]|-|\.){5})#i',$uclient,$match3); //SHADOW_STYLE_ENCODING
    
    $client=array();
    //vdn($match2);
    $type='azureus';
    if(isset($match[1])){$arr=$match;$type='azureus';}
    if(isset($match2[1])){$arr=$match2;$type='mainline';}
    if(isset($match3[1])){$arr=$match3;$type='shadow';}
    //vdn($uclient);
    switch($type){
        case 'azureus':
            $client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
            $client['ver']= (isset($arr[2])) ? $arr[2] : '';
        
        break;
        
        case 'mainline':
            $client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
            
            $client['ver'][] = $v1=(isset($arr[2])) ? $arr[2] : '';
            $client['ver'][] = $v2=(isset($arr[3])) ? $arr[3] : '';
            $client['ver'][] = $v3=(isset($arr[4])) ? $arr[4] : '';
            
            //$client['ver']= (isset($match[2])) ? $v1.'.'.$v2.'.'.$v3 '';
        break;   
        
        case 'shadow':
            $client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
            
            $client['ver'][] = $v1=(isset($arr[2])) ? $arr[2] : '';
            $client['ver'][] = $v2=(isset($arr[3])) ? $arr[3] : '';
            $client['ver'][] = $v3=(isset($arr[4])) ? $arr[4] : '';
        break;
        
        default:
            $client['id']= (isset($arr[1])) ? strtoupper($arr[1]) : 'ZZ';
            $client['ver']= (isset($arr[2])) ? $arr[2] : '';
    }
    
//vdn($client);

    if(isset($bb_cfg['user_clients'][$type][$client['id']])){
        $client['name']=$bb_cfg['user_clients'][$type][$client['id']];
        $client['format_ver']='';
        for($i=0;$i<3;++$i){
            $client['format_ver'].=(isset($client['ver'][$i]))?(($i==2)?$client['ver'][$i]:$client['ver'][$i]."."):0;
        }
    }
    else{
        $client['id']='ZZ';
        $client['name']='Unknown client';
        $client['format_ver']='';
    }
    
    if($client['format_ver']=='0.0.0') $client['format_ver'] ='';

    if($full==true){
        return '<img width="16" height="16" style="display:inline!important;vertical-align:middle" src="/images/clients/'.strtolower($client['id']).'.png" alt="'.$client['name'].'" title="'.$client['name'].' '.$client['format_ver'].' ('.$uclient.')" /><span style="display:inline!important;vertical-align:middle"> '.$client['name'].' '.$client['format_ver'].'</span>';
    }
    else{
        return '<img width="16" height="16" style="display:inline!important;vertical-align:middle" src="/images/clients/'.strtolower($client['id']).'.png" alt="'.$client['name'].'" title="'.$client['name'].' '.$client['format_ver'].' ('.$uclient.')" />';   
    }
}

в dispaying_torrent.php вставляем после

PHP:
'NAME'         => ($peer['update_time']) ? $name : "<s>$name</s>",
строку
PHP:
'PEER_ID'         => isset($peer['peer_id']) ? get_user_client($peer['peer_id']) : "-",
в viewtopic_torrent.php
после
PHP:
                <!-- BEGIN port -->
                <td class="hidden-xs hidden-sm">{sfull.srow.port.PORT}</td>
                <!-- END port -->
вставляем
PHP:
<td class="hidden-xs hidden-sm">{sfull.srow.port.PORT}</td>
в usercp_viewprofile.php

после
PHP:
'ALLOW_DLS'            => bf($profiledata['user_opt'], 'user_opt', 'allow_dls'),
вставляем
PHP:
'PEER_ID' => get_user_client($profiledata['peer_id']),
в usercp_viewprofile.tpl

после
PHP:
            <!-- IF BIRTHDAY -->
            <tr>
                <th>{L_BIRTHDAY}:</th>
                <td id="user_birthday"><b class="editable">{BIRTHDAY}</b></td>
            </tr>
            <tr>
                <th>{L_AGE}:</th>
                <td><b>{AGE}</b></td>
            </tr>
            <!-- ENDIF -->
вставляем

PHP:
            <!-- IF PEER_ID -->   
                    <tr>
                        <th>{L_TOR_CLIENT}:</th>
                        <td id="peer_id">{PEER_ID}</td>
                    </tr>
            <!-- ENDIF -->
В базе в таблице bb_bt_tracker у вас уже должно быть поле peer_id. Если его нет, то создайте. У меня стоит тип varchar так как есть фильтрация preg_match, но лучше делать его бинарным

папку с иконками прикрепил, кидайте в /images/clients/

Если у вас ничего не работает, значит я что-то забыл
 

Вложения

zxc

Пользователь
#3
Накосячил немного

после
PHP:
                <!-- BEGIN port -->
                <td class="hidden-xs hidden-sm">{sfull.srow.port.PORT}</td>
                <!-- END port -->
нужно было вставить
PHP:
<td>{sfull.srow.PEER_ID}</td>
Тоже самое надо повторить для списка личеров
после
PHP:
                <!-- BEGIN port -->
                <td class="hidden-xs hidden-sm">{lfull.lrow.port.PORT}</td>
                <!-- END port -->
вставляем
PHP:
<td>{lfull.lrow.PEER_ID}</td>
после
PHP:
                <!-- BEGIN porthead -->
                <th class="{sorter: 'digit'} hidden-xs hidden-sm"><b class="tbs-text">{L_DL_PORT}</b></th>
                <!-- END porthead -->
вставляем
PHP:
<th class="{sorter: 'text'}"><b class="tbs-text">Client</b></th>
 
Последнее редактирование:

zxc

Пользователь
#5
Вот файл анонсера

Please Login or Register to view hidden text.


Ищите там все что связано с peer_id (404,421, 422 строки)

Сорян за такую разрозненную инструкцию. Основной пост редактировать я не могу
 
Последнее редактирование:

Darkterror

Пользователь
#7
кто нибудь установил на тп 2.1.5 ? выдает ошибка на viewprofile.php на эту код.
Код:
[18-Apr-2018 00:56:24 Asia/Tashkent] PHP Notice:  Undefined index: peer_id in /var/www/user007/data/www/мойсайт/library/includes/ucp/viewprofile.php on line 200
Код:
'PEER_ID'                          => get_user_client($profiledata['peer_id']),
 
Сверху