huge coppermine to gallery2 migration

BoBka_RU

Joined: 2007-12-09
Posts: 6
Posted: Sun, 2007-12-09 12:52

Hello :)

I have a coppermine gallery with ~800 users and more than 10 000 photo
When I decided to migrate to gallery2 2.2.3 I found this topic http://gallery.menalto.com/node/55920
There is a gallery2 plugin for migration from coppermine.

But I want to copy files in new gallery2 storage. It is important al least because of different charset encoding cp1251 and utf-8 in file names. My web server cannot wait 40 min for web-script execution.
There are some more reasons why I cant use those plugin. I didnt find any other solution and decided to make my own.

I have wrote a perl script that SATISFY MY DEMANDS. If anyone intrested in it - use it as you wish.

SOURCE DATA:
1. Guests can browse coppermine gallery, view albums and photo, view ratings, view comments.
Registred users can add albums and photos in their own album, view other albums and photos, view and add comment for all other photos, rate all other photos.
There is a lot of registred users of different quota groups (10Mb, 50Mb).

2. There is a 1 root category in my coppermine. Users category contains users albums with photos. Each photo have comments and ratings.
There is 4 admin's root category in my coppermine. Each category contains subcategory. Each subcategory contains albums with photos. Each photo have comments and ratings.
There is some (about 10) users private albums. 1 of this albums is password-protected, other just hidden for guests.

So, what I want in result...
DESTINATION:
1. Guests can browse coppermine gallery, view albums and photo, view ratings, view comments.
Registred users can add albums and photos in their own album, view other albums and photos, view and add comment for all other photos, rate all other photos.
Registred users moves to one quota groups (Registred users with 50Mb quota).

2. I want to save album strusture in gallery2. There will be 5 root albums. 1 of them is user storage. It contains user's albums with photos or subalbums. Each photo have comments and ratings.

Other 4 root albums are like those 4 categories in coppermine. Each contains albums (like subcats in coppermine) etc...

TOOLS:
For development and reseach I used perl with some packages from CPAN, MySQL server with coppermine database, mysqlclient utility, mysqldump, iconv, diff, grep, cp, rm and other primitives :) PHP and apache(backend) with nginx(frontend) is just for viewing results. I dont need them for conversion.
Oh, i forget something... There was also phpmyadmin for database explore!

RESEARCH METHODS:
1. Install gallery2, tune it. Make DB snapshot with sqldump. Restore this snapshot to rollback.
2. Write compare script that makes DB snapshot and compare it with any other snapshot with diff tool.
3. Encode result in perl using head and hands :)

IMPORTANT NOTES:
1. I am from Russia, so sorry for my english :)
2. I have made converter FOR MY GALLERY. This script WILL NOT convert your gallery!!! You must modify it!
3. Yes, this code is very dirty. Just close it, erase and forget :) When I finished, I had a result and lost my interest to this tool. Maybe it will be useful for someone else...
4. Those 10 private user albums script converts to gallery2 like other ones and I'll edit their permissions manually.
5. You must have installed gallery2 before using this script. Create root albums manually. Remember their IDs!! Assign one album as users storage. Look for category IDs of root coppermine categories.
6. Correct some constants at the start of script. You also must correct main code at the end of the script. Change the IDs of source categories, destination root albums, and number of "cat_explore" calls.
7. I could not sufficiently convert ratings. So, ratings are lost :( But there is still view counts for photos...
8. I did not want to make universal converter. I have made converter FOR MY GALLERY. If you want then use this code as you wish. You can write a best fully-functional converter, why not? :)

DOWNLOAD:
http://rapidshare.com/files/75456051/coppermine_to_gallery2.zip.html

The same in Russian:
Здрасте Ж:-)

У меня есть фотоальбом coppermine с 800 юзеров и более 10 000 фоток, хочу сконвертить все это хозяйство в gallery2 2.2.3. Нашел вот такую тему http://gallery.menalto.com/node/55920
Это плагин для gallery2.

Почему мне не подходит:
Свой coppermine альбом я веду уже очень долго. Он до сих пор у меня в cp1251, а для gallery2 нужно utf-8. Плюс имена файлов перекодировать надо...
Можно конечно модернизировать этот плагин, но копирование всех файлов займет не меньше часа, так что веб-сервер сбросит подключение, а пхп модуль убъет скрипт по таймауту. Нет, можно конечно извратиться... :)

Написал скрипт на перле для перевода СВОЕГО АЛЬБОМА. Понравится - пользуйтесь. Кстати, если у вас похожая структура данных в исходном копермайне, то вы очень близки к победе ;)

ИСХОДНЫЕ ДАННЫЕ coppermine альбома:
1. Гости могут лазить по всему альбому, смотреть фотки, читать комменты, смотреть рейтинги фоток. Зарегистрированные юзеры могут добавлять свои пользовательские альбомы, лазить по всему альбому, смотреть фотки, читать и добавлять комменты, смотреть и ставить рейтинги фоток.
Каждый юзер принадлежит к одной из двух групп с квотой 15 или 50 мегабайт.

2. В coppermine у меня 5 корневых категорий. Пользовательская категория содержит альбомы пользователей. В каждом альбоме фотки. У каждой фотки комменты и рейтинги.
Остальные 4 категории ведет админ. В них подкатегории. В каждой подкатегории альбомы. В каждом альбоме фотки. У каждой фотки комменты и рейтинги.
Среди пользовательских альбомов нашелся один запороленный и около 10 скрыты от просмотра гостей.

КОНЕЧНЫЕ ДАННЫЕ gallery2 альбома:
1. Пусть гости лазят по всему альбому, смотрят фотки, читают комменты, смотрят рейтинги. Зарегистрированные юзеры пусть ведут свои альбомы в отведенном для этого месте, лазят по всем альбомам смотрят фотки, добавляют и смотрят комменты, голосуют и смотрят рейтинги. Квота теперь у всех будет 50 мегабайт.

2. Структуру старого coppermine альбома надо сохранить. Та же иерархия, что и в исходных данных.

ИНСТРУМЕНТЫ ДЛЯ РАБОТЫ:
Для исследования и конвертирования используется перл с пакетами из CPAN, сервер mysql с базой coppermine альбома, клиент mysql, mysqldump, iconv, diff, grep и другие системные утилиты.
Чтоб удобней было лазить по базе - phpmyadmin. Чтоб смотреть результат - php и apache (у меня еще nginx стоит).

МЕТОДИКА ИССЛЕДОВАНИЯ:
1. Ставим gallery2, проводим базовую настройку. Делаем слепок базы gallery2 при помощи sqldump. Если чего накосячили - восстанавливаем базу из слепка. Я еще каталог для фоток восстанавливал, но это очевидно...
2. Пишем скрипт для поиска изменений в базе. Он делает слепок базы и ищет с помощью diff изменения.
3. Делаем слепок, изменяем что нужно в фотоальбоме, запускаем скрипт сравнения и смотрим как наш тык мышкой выглядит на языке SQL :) Кодим на перле то, что видим, естественно не бездумно.

ЗАМЕЧАНИЯ:
1. По Русски-то сумбурно, а англоговорящим вообще не завидую :)
2. Этот скрипт не сконвертит ваш coppermine в gallery2 даже случайно! Я его писал для себя, там мои константы, так что вам все равно придется его править.
3. Можете не ругаться, что код кривой. Я пытался повторить действия gallery2, тоесть писал что вижу в diff. А поскольку планировал запускать всего один раз, то не имел желания приводить его в порядок. Хотите - займитесь. Не нравится - поставьте на нем крест в правом верхнем углу окна.
4. Те 10 пользовательских альбомов (запароленный и скрытые от гостей) я перенесу в скрипте на общих основаниях. Нужные настройки проставлю вручную уже в gallery2. Не охота разбираться с флагами в обоих движках.
5. Перед работой скрипту нужна установленная gallery2. Проведите базовую настройку. Создайте корневые альбомы. Запомните их ID. Назначьте альбом для юзеров. Запомните ID корневых категорий в coppermine. (подсказка: ID в обоих движках можно смотреть в базе, а можно прямо в адресной строке)
6. Исправьте константы в начале скрипта. Поставьте свои. Исправьте код в конце скрипта. Поставьте туда свои ID, иначе ничего не заработает. Вызывайте "cat_explore" для каждой корневой категории coppermine.
7. Не удалось адекватно перенести рейтинги фоток :(
8. У меня не было цели писать конвертер для широкой общественности. Мне надо было свой альбом перенести и все. Хотите - займитесь, пока в мире подобного нету :)

СКАЧАТЬ СКРИПТ:
http://rapidshare.com/files/75456051/coppermine_to_gallery2.zip.html

AttachmentSize
coppermine_to_gallery2.zip5.64 KB
 
floridave
floridave's picture

Joined: 2003-12-22
Posts: 27300
Posted: Sun, 2007-12-09 18:02

Thanks for the contribution! Did you also post: http://www.gallery2.ru/ ? Because of different charset encoding, your script might be of interest there as well.

Dave
_____________________________________________
Blog & G2 || floridave - Gallery Team

 
BoBka_RU

Joined: 2007-12-09
Posts: 6
Posted: Sun, 2007-12-09 20:32

Done, thanks.

Script is updated. I forget about some details... If someone already download archive, just do it again :)

 
M3g4d37h
M3g4d37h's picture

Joined: 2007-02-03
Posts: 1
Posted: Mon, 2007-12-31 01:22

I am completely new to Gallery 2. Where do I put the file and how do I activate it? Is the re a help file on this subject?

 
pepemosca
pepemosca's picture

Joined: 2007-12-31
Posts: 3
Posted: Mon, 2007-12-31 12:41

Inside your shell (I'm using PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
what you have to do is this: http://wiki.dreamhost.com/Perl_modules

chmod a+x coppermine_to_gallery2.pl
./coppermine_to_gallery2.pl

But still, I have this problem:

Quote:
[server]$ ./coppermine_to_gallery2.pl
Can't locate Convert/Cyrillic.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./coppermine_to_gallery2.pl line 3.
BEGIN failed--compilation aborted at ./coppermine_to_gallery2.pl line 3.

I have DreamHost.com as webserver.
Help?

 
pepemosca
pepemosca's picture

Joined: 2007-12-31
Posts: 3
Posted: Mon, 2007-12-31 18:47

What do you mean by?

# coppermine user's category ID _!!! LOOK IN DB OR URL !!!_
my $CM_USERCAT_ID = 1;

and are you sure the order of these numbers are ok?

# gallery2 groups "everyone" and "registred". Each added user wil join this groups.
# _!!! LOOK IN DB `g2_Group` !!!_
my @G2_DEF_GROUPS = (2, 4);

I ask, because I have the numbers just in the opposite way: (4,2)

Thanks!

 
BoBka_RU

Joined: 2007-12-09
Posts: 6
Posted: Sun, 2008-01-06 13:23
M3g4d37h wrote:
I am completely new to Gallery 2. Where do I put the file and how do I activate it? Is the re a help file on this subject?

After all manipulations script should be started... There is constants inside, that points your CPG album directory, sets database names and authentications. Change them!! But first, make backup of your data :)

pepemosca wrote:
But still, I have this problem:

Quote:
[server]$ ./coppermine_to_gallery2.pl
Can't locate Convert/Cyrillic.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./coppermine_to_gallery2.pl line 3.
BEGIN failed--compilation aborted at ./coppermine_to_gallery2.pl line 3.

I have DreamHost.com as webserver.
Help?

Your hoster have no perl module Convert::Cyrillic installed. Script needs this module to change cp1251 to utf8 encoding. This module gives me only one function Convert::Cyrillic::cstocs You can install module or use your own method to change charset. Also you can cut cstocs function if you know what are you doing.

pepemosca wrote:
What do you mean by?

# coppermine user's category ID _!!! LOOK IN DB OR URL !!!_
my $CM_USERCAT_ID = 1;

Coppermine have a category which stores user albums. This category is one of root categories. Just look its ID. On my CPG "users" is first catecory with ID=1. I think it is default.

pepemosca wrote:
and are you sure the order of these numbers are ok?

# gallery2 groups "everyone" and "registred". Each added user wil join this groups.
# _!!! LOOK IN DB `g2_Group` !!!_
my @G2_DEF_GROUPS = (2, 4);

I ask, because I have the numbers just in the opposite way: (4,2)

Thanks!

The order in this list does not matter. I use it later just for enumeration.

PS: Its good idea to rebuild thumbnails from gallery2 admin's menu after conversion :)

 
pepemosca
pepemosca's picture

Joined: 2007-12-31
Posts: 3
Posted: Sun, 2008-01-06 22:06

Trully, I have no idea about "coding", so I'll have to try if DreamHost.com installs the Convert::Cyrillic.
Can I install it on my account? Do you know that?

Thanks for your reply!

 
BoBka_RU

Joined: 2007-12-09
Posts: 6
Posted: Tue, 2008-01-08 21:50

I dont know about DreamHost, ask their support.

 
drgonzo121

Joined: 2008-06-19
Posts: 21
Posted: Thu, 2008-06-19 04:55

i also think of migration:

20484 files in 403 albums en 24 categorieën met 0 commentaren en 4061713 keer bekeken

 
tpot

Joined: 2005-09-15
Posts: 4
Posted: Thu, 2008-07-17 20:11

im using hostmonster.com and i am receiving cp errors and chmod errors when running this script. Has anyone ranned it successfully? and can you post your modified code with your password and other sensitive info removed?

 
lingate
lingate's picture

Joined: 2003-08-21
Posts: 46
Posted: Mon, 2008-07-21 03:58

Tried to run your script

I get one error, dont spose you know what it means, I dont use perl that often

Quote:
# ./coppermine_to_gallery2.pl
-bash: ./coppermine_to_gallery2.pl: /usr/local/bin/perl: bad interpreter: No such file or directory

TT

 
BoBka_RU

Joined: 2007-12-09
Posts: 6
Posted: Sat, 2008-07-26 06:56

drgonzo121 forget it man.
IMHO gallery2 is too slow for large amount of visitors

 
tjoepke

Joined: 2009-08-23
Posts: 2
Posted: Sun, 2009-09-13 00:36

Is there a option for do it with gallery3 ?

 
nivekiam
nivekiam's picture

Joined: 2002-12-10
Posts: 16504
Posted: Sun, 2009-09-13 03:49
Quote:
Is there a option for do it with gallery3 ?

Not yet. You'd have to migrate to G2 first, then G3.
____________________________________________
Like Gallery? Like the support? Donate now!!! See G2 live here

 
herwig
herwig's picture

Joined: 2007-07-30
Posts: 6
Posted: Tue, 2010-03-09 11:35

Bonjour,

thank you