Konversation/Scripts/Import mIRC server list/uk: Difference between revisions

From KDE UserBase Wiki
(Created page with "== Користування ==")
(Updating to match new version of source page)
 
(24 intermediate revisions by 2 users not shown)
Line 3: Line 3:
=== Інформація ===
=== Інформація ===


Цей скрипт виконує читання списку серверів mIRC з «http://www.mirc.com/servers.ini» і імпортує дані до вашого списку серверів '''Konversation'''.
Цей скрипт виконує читання списку серверів mIRC зі [http://www.mirc.com/servers.ini сторінки mirc]» і імпортує дані до вашого списку серверів '''Konversation'''.


* It will NOT overwrite your existing servers, but will append the list to your existing list.
* Скрипт НЕ виконуватиме перезаписування вже створеного вами списку серверів, а просто допише сервери до поточного списку.
* It doesn't integrate: If you have a freenode group now, you will have two freenode groups once you run it.
 
* It sets all NEW servers to use your default profile.
* Скрипт не виконує інтеграції вже створених записів. Якщо у вас вже є запис групи freenode, після запуску скрипту у вас буде два записи груп.
* It assumes you want to connect on the first port listed in the mIRC config. ('''Konversation''' doesn't appear to have the concept of multiple ports).
 
* Скриптом визначається використання типового профілю для всіх НОВОСТВОРЕНИХ записів серверів.
 
* Скриптом припускається, що ви встановлюватимете з’єднання на першому з портів зі списку у файлі налаштувань mIRC. (У '''Konversation''' ще не передбачено можливості використання декількох різних портів).


== Користування ==
== Користування ==


Copy the script below into a new text document and <menuchoice>Save</menuchoice> it as 'konversation_servers' (or really any name you care, just change the following to suit!)
Скопіюйте вміст скрипту до нового текстового документа і скористайтеся дією <menuchoice>Зберегти</menuchoice>, щоб зберегти скрипт з назвою «konversation_servers» (або будь-якою іншою назвою, не забудьте однак виправити наведені нижче команди!)


Make sure you quit (not just close) '''Konversation''', and then run:
Переконайтеся, що роботу '''Konversation''' завершено (не просто закрито головне вікно) і віддайте команду:


:<code>    perl konversation_servers</code>
:<code>    perl konversation_servers</code>
or
або
:<code>    perl konversation_servers /path/to/konversationrc</code>
:<code>    perl konversation_servers /шлях/до/konversationrc</code>


To run it, you will need several perl modules installed:
Для запуску скрипту слід встановити декілька модулів perl:


* [http://search.cpan.org/search?query=Config%3A%3ATiny&mode=module Config::Tiny]
* [http://search.cpan.org/search?query=Config%3A%3ATiny&mode=module Config::Tiny]
Line 26: Line 29:
* [http://search.cpan.org/search?query=File%3A%3AHomeDir&mode=module File::HomeDir]
* [http://search.cpan.org/search?query=File%3A%3AHomeDir&mode=module File::HomeDir]


You can skip File::HomeDir if you include the path to your konversationrc in the command line call or if your KDEHOME environment variable is set and your konversationrc is where is should be.
Можете не встановлювати модуль File::HomeDir, якщо ви вкажете шлях до файла konversationrc у командному рядку або якщо встановлено змінну середовища KDEHOME, а файл konversationrc зберігається у типовій теці.


== Warranty ==
== Гарантійні зобов’язання ==


THIS SCRIPT COMES WITH NO WARRANTY AT ALL.
ВАМ НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙНИХ ЗОБОВ’ЯЗАНЬ ЩОДО ЦЬОГО СКРИПТУ.


== Support ==
== Підтримка ==


Any questions look for Woosta on Freenode or ask your local perl guru
Будь-які питання ви можете задати користувачеві Woosta у Freenode або вашому знайомому знавцеві perl.


== Licence ==
== Умови ліцензування ==


(c)2007 Rick Measham. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
©Rick Measham, 2007. Ця програма є вільним програмним забезпеченням, ви можете поширювати і/або вносити до неї зміни за дотримання тих самих ліцензійних умов, за якими розповсюджується ваш дистрибутив Perl.


== The Script ==
== Скрипт ==


{{Input|<syntaxhighlight lang="perl">
{{Input|<syntaxhighlight lang="perl">
Line 106: Line 109:
BEGIN {
BEGIN {


my $konvs = `ps ax | grep konversation | grep -v grep`;
my $konvs = `ps ax | grep konversation | grep -v grep`;
if ($konvs =~ /konversation/){
if ($konvs =~ /konversation/){
print "You need to quit konversation before running this script.\n";
print "You need to quit konversation before running this script.\n";
Line 112: Line 115:
}
}


my @mod_list = ('Config::Tiny', 'File::Copy', 'LWP::Simple');
my @mod_list = ('Config::Tiny', 'File::Copy', 'LWP::Simple');


# If there isn't a konversationrc in the ARGV, add File::HomeDir
# If there isn't a konversationrc in the ARGV, add File::HomeDir
push(@mod_list, 'File::HomeDir')
push(@mod_list, 'File::HomeDir')
unless ($ARGV[0] && -r $ARGV[0])
unless ($ARGV[0] && -r $ARGV[0])
|| ($ENV{KDEHOME} && -r "$ENV{KDEHOME}/share/config/konversationrc");
|| ($ENV{KDEHOME} && -r "$ENV{KDEHOME}/share/config/konversationrc");


foreach my $mod (@mod_list){
foreach my $mod (@mod_list){
eval {
eval {
(my $fn = $mod) =~ s|::|/|g;
(my $fn = $mod) =~ s|::|/|g;
Line 189: Line 192:
foreach my $s ( keys %{ $mIRC->{servers} } ){
foreach my $s ( keys %{ $mIRC->{servers} } ){


my ($name, $server, $port, $group)
my ($name, $server, $port, $group)
= $mIRC->{servers}{$s}
= $mIRC->{servers}{$s}
=~ /(.+?)SERVER:(.+?):(\d+).*?GROUP:(.+)/;
=~ /(.+?)SERVER:(.+?):(\d+).*?GROUP:(.+)/;


next unless $group && $server && $port;
next unless $group && $server && $port;


$name =~ s/^$group: //;
$name =~ s/^$group: //;


push(@{$group{$group}}, { name=>$name, server=>$server, port=>$port });
push(@{$group{$group}}, { name=>$name, server=>$server, port=>$port });


}
}
Line 207: Line 210:
foreach my $g ( sort keys %group ){
foreach my $g ( sort keys %group ){


$konv->{"ServerGroup $gcount"} = {
$konv->{"ServerGroup $gcount"} = {
AutoConnect        => 'false',
AutoConnect        => 'false',
AutoJoinChannels    => '',
AutoJoinChannels    => '',
Line 219: Line 222:
};
};


foreach my $s ( @{ $group{$g} } ){
foreach my $s ( @{ $group{$g} } ){


$konv->{"Server $scount"} = {
$konv->{"Server $scount"} = {
Password  => '',
Password  => '',
Port      => $s->{port},
Port      => $s->{port},
Line 228: Line 231:
};
};


$konv->{"ServerGroup $gcount"}{ServerList} =
$konv->{"ServerGroup $gcount"}{ServerList} =
($konv->{"ServerGroup $gcount"}{ServerList} || '')
($konv->{"ServerGroup $gcount"}{ServerList} || '')
.(($konv->{"ServerGroup $gcount"}{ServerList}) ? ',' : '')
.(($konv->{"ServerGroup $gcount"}{ServerList}) ? ',' : '')
."Server $scount";
."Server $scount";


$scount++;
$scount++;
}
}


$gcount++;
$gcount++;
}
}
$gcount--; $scount--;
$gcount--; $scount--;
Line 251: Line 254:
print "Completed. It is now safe to start konversation.\n";
print "Completed. It is now safe to start konversation.\n";
</syntaxhighlight>}}
</syntaxhighlight>}}
 
[[Category:Інтернет/uk]]
[[Category:Internet]]
[[Category:Досвідченим користувачам/uk]]
[[Category:Advanced Users]]

Latest revision as of 17:43, 23 February 2013

Other languages:

Інформація

Цей скрипт виконує читання списку серверів mIRC зі сторінки mirc» і імпортує дані до вашого списку серверів Konversation.

  • Скрипт НЕ виконуватиме перезаписування вже створеного вами списку серверів, а просто допише сервери до поточного списку.
  • Скрипт не виконує інтеграції вже створених записів. Якщо у вас вже є запис групи freenode, після запуску скрипту у вас буде два записи груп.
  • Скриптом визначається використання типового профілю для всіх НОВОСТВОРЕНИХ записів серверів.
  • Скриптом припускається, що ви встановлюватимете з’єднання на першому з портів зі списку у файлі налаштувань mIRC. (У Konversation ще не передбачено можливості використання декількох різних портів).

Користування

Скопіюйте вміст скрипту до нового текстового документа і скористайтеся дією Зберегти, щоб зберегти скрипт з назвою «konversation_servers» (або будь-якою іншою назвою, не забудьте однак виправити наведені нижче команди!)

Переконайтеся, що роботу Konversation завершено (не просто закрито головне вікно) і віддайте команду:

perl konversation_servers

або

perl konversation_servers /шлях/до/konversationrc

Для запуску скрипту слід встановити декілька модулів perl:

Можете не встановлювати модуль File::HomeDir, якщо ви вкажете шлях до файла konversationrc у командному рядку або якщо встановлено змінну середовища KDEHOME, а файл konversationrc зберігається у типовій теці.

Гарантійні зобов’язання

ВАМ НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙНИХ ЗОБОВ’ЯЗАНЬ ЩОДО ЦЬОГО СКРИПТУ.

Підтримка

Будь-які питання ви можете задати користувачеві Woosta у Freenode або вашому знайомому знавцеві perl.

Умови ліцензування

©Rick Measham, 2007. Ця програма є вільним програмним забезпеченням, ви можете поширювати і/або вносити до неї зміни за дотримання тих самих ліцензійних умов, за якими розповсюджується ваш дистрибутив Perl.

Скрипт

#!/usr/bin/perl

#  INFORMATION
#  ====================================================================
#  This script reads the mIRC server list from
#  'http://www.mirc.co.uk/servers.ini' and imports it into your
#  Konversation server list.
#
#  * It will NOT overwrite your existing servers, but will append the
#    list to your existing list.
#  * It doesn't integrate: If you have a freenode group now, you will
#    have two freenode groups once you run it.
#  * It sets all NEW servers to use your default profile
#  * It assumes you want to connect on the first port listed in the
#    mIRC config. (Konversation doesn't appear to have the concept of
#    multiple ports)

#  USAGE
#  ====================================================================
#  Make sure you quit (not just close) Konversation, and then run:
#
#     perl konversation_servers
#        OR
#     perl konversation_servers /path/to/konversationrc
#
#  To run it, you will need several perl modules installed:
#    * Config::Tiny
#    * LWP::Simple
#    * File::HomeDir
#
#  You can skip File::HomeDir if you include the path to your
#  konversationrc in the command line call or if your KDEHOME
#  environment variable is set and your konversationrc is where
#  is should be.
#

#  WARRANTY
#  ====================================================================
#  THIS SCRIPT COMES WITH NO WARRANTY AT ALL.
#  Any questions look for Woosta on Freenode
#

#  SUPPORT
#  ====================================================================
#  Any questions look for Woosta on Freenode or ask your local perl guru
#

#  LICENCE
#  ====================================================================
#  (c)2007 Rick Measham.  This program is free software; you can 
#  redistribute it and/or modify it under the same terms as Perl itself.
#


# Change this if it moves!
my $mirc_url = 'http://www.mirc.co.uk/servers.ini';


use warnings;
use strict;

BEGIN {

my $konvs = `ps ax | grep konversation | grep -v grep`;
	if ($konvs =~ /konversation/){
		print "You need to quit konversation before running this script.\n";
		exit(1);
	}

my @mod_list = ('Config::Tiny', 'File::Copy', 'LWP::Simple');

# If there isn't a konversationrc in the ARGV, add File::HomeDir
	push(@mod_list, 'File::HomeDir')
		unless ($ARGV[0] && -r $ARGV[0])
			|| ($ENV{KDEHOME} && -r "$ENV{KDEHOME}/share/config/konversationrc");

foreach my $mod (@mod_list){
		eval {
			(my $fn = $mod) =~ s|::|/|g;
			require $fn.'.pm';
		};
		if( $@ ){
			print "You are missing $mod. Please install this perl module and then try again.\n";
			exit(1);
		}
		import $mod;
	}
}



my $konvrc =
	($ARGV[0]) ? $ARGV[0]
	: ($ENV{KDEHOME} && -r "$ENV{KDEHOME}/share/config/konversationrc") ? "$ENV{KDEHOME}/share/config/konversationrc"
	: File::HomeDir->my_home . "/.kde/share/config/konversationrc";

print "Reading konversationrc from $konvrc\n";

if( ! -r $konvrc ){
	print "Unable to read konversationrc from $konvrc. Please include the path on the command line:\n";
	print "    /path/to/konversationrc\n";
	exit(1);
}


print "Getting server list from mirc\n";
my $servlist = get($mirc_url);
print "   done.\n";



print "Creating a backup of your current konversationrc to $konvrc.bak\n";
copy($konvrc, "$konvrc.bak");
print "   done.\n";



print "Reading INI files\n";
my $mIRC = Config::Tiny->read_string( $servlist );
my $konv = Config::Tiny->read( $konvrc );
print "   done.\n";



print "Counting existing servers\n";
my $scount = 0;
while( exists $konv->{"Server $scount"} ){
	$scount++;
}
print "   Next available server is $scount\n";



print "Counting existing server groups\n";
my $gcount = 0;
while( exists $konv->{"ServerGroup $gcount"} ){
	$gcount++;
}
print STDERR "   Next available group is $gcount\n";



print "Parsing mIRC's server list\n";
my %group;
foreach my $s ( keys %{ $mIRC->{servers} } ){

my ($name, $server, $port, $group)
		= $mIRC->{servers}{$s}
		=~ /(.+?)SERVER:(.+?):(\d+).*?GROUP:(.+)/;

next unless $group && $server && $port;

$name =~ s/^$group: //;

push(@{$group{$group}}, { name=>$name, server=>$server, port=>$port });

}
print "   done.\n";



print "Generating data for konversationrc\n";
foreach my $g ( sort keys %group ){

$konv->{"ServerGroup $gcount"} = {
		AutoConnect         => 'false',
		AutoJoinChannels    => '',
		ChannelHistory      => '',
		ConnectCommands     => '',
		EnableNotifications => 'true',
		Expanded            => 'false',
		Identity            => 'Default Identity',
		Name                => $g,
		NotifyList          => '',
	};

foreach my $s ( @{ $group{$g} } ){

$konv->{"Server $scount"} = {
			Password   => '',
			Port       => $s->{port},
			SSLEnabled => 'false',
			Server     => $s->{server},
		};

$konv->{"ServerGroup $gcount"}{ServerList} =
			($konv->{"ServerGroup $gcount"}{ServerList} || '')
			.(($konv->{"ServerGroup $gcount"}{ServerList}) ? ',' : '')
			."Server $scount";

$scount++;
	}

$gcount++;
}
$gcount--; $scount--;
print "   done. There are now $gcount groups and $scount servers.\n";



print "Writing konversationrc\n";
$konv->write($konvrc);
print "   done.\n";



print "Completed. It is now safe to start konversation.\n";