Мне тут залили fb2 (http://lib6.rus.ec/book/94050) без единой section, а потом удивлённо спрашивали, почему оно по кнопке (читать) не читается. И ведь не руками делали, программкой какой-то. Пришлось парсер подкручивать.
Поздно. Для книг, которые уже в библиотеке, надо парсить что есть, а не вываливаться с ошибкой. Можно, конечно, все их прогнать через валидатор. Когда-нибудь.
К вопросоу о "когда-нибудь"... Я в ближайшее время (неделю - две) собираюсь запустить индексацию либрусека. Индексация у меня идет со скоростью 1 книга в 5 минут, так что особой нагрузки я не создам.
Я читал, что ты переезжаешь на новый движек... В связи с этим вопрос такой: насколько сильно поменяются ссылки для скачивания и страница для поиска? И если поменяется, то схоранишь ли ты для обратной совместимости ридеректы?
Или не хочешь ли ты сейчас обсудить и реализовать какой-либо унифицированный способ каким бы тебя можно было индексировать, такой чтобы его можно было бы не ломать при переезде с одного движка на другой?
Запускай, не вопрос. Лучше на новом, который http://lib6.rus.ec - там доступны книги, снятые с основного. И сервер пока совершенно не занят, так что можешь особо не ограничивать, нагрузки он не боится пока. поиск - /booksearch?ask=..., как и был книги - /book/id/download авторы - /author/id жанры - /genre/code по возможности стараюсь старые ссылки поддерживать, но перловки (/pl/2.pl) больше не будет.
если надо, могу сделать спецвход для роботов. скажем, список только fb2
или возьми полный список - http://lib.rus.ec/sql/lib.libbook.sql.gz и выбирай из него. (единственное там неочевидное поле - Deleted, 1-удалён, 4-снят, 5- снят и удалён, тебе нужны те которые NOT (1&Deleted))
Лучше на новом, который http://lib6.rus.ec - там доступны книги, снятые с основного. И сервер пока совершенно не занят, так что можешь особо не ограничивать, нагрузки он не боится пока. Хорошо... Только у меня сервер стоит пока на узком канале. Его особо нагружать не хочется... Жена хозяина канала может обидиться... ;-)
если надо, могу сделать спецвход для роботов. скажем, список только fb2 В идеале была бы возможность забрать список книг в какой-то xml-ке. На вроде этих: fictionbook.ru/all_authors/ и fictionbook.ru/all_books/
Идеально было бы получить в XML виде 1. Полный список авторов 2. Полный список книг 3. Список новых книг за определенную дату ( i.e. http://lib6.rus.ec/xml/2007-12-11/new_books.xml) 4. Список орновленных книг за определенную дату (http://lib6.rus.ec/xml/2007-12-11/updated_books.xml для книг появившихся в течении 10 января) 5. Список исчезнувших по какой либо причине книг за определнную дату. 6. То же что 3,4,5 но для авторов.
меня собственно инересует только fb2 но я думаю, что кому-то еще могут понадобиться и другие форматы.
Все эти xml'ки можно генерить раз в сутки (например в полночь) и отдавать их как статический контент.
В списке книг и авторов меня интересует. 1. Внутренний id книги твоей библиотеки 2. Внутренний id автора товей библиотеки 3. Ссылка на скачивание fb2 файла 4. Ссылка на почитать 5. Ссылка на "обложку книги" где собсвенно обложка, аннотация, и пр. 6. В списке книг, для каждой книги списох id'ов авторов книги 7. Ссылка на страницу об авторе (в списке авторов). 8. В информации об авторе было бы неплохо если бы были все возмлжные алиасы, под которым автор известен 9. Не плохо бы было бы если в списке книг так же была информация о времени создания и размере файла. Это позволит лишний раз не загружать файл для перепроверки.
или возьми полный список - http://lib.rus.ec/sql/lib.libbook.sql.gz и выбирай из него. А он обновляемый? Его, честно гворя парсить -- запарюсь... А разворачивать его внутрь MySqlной базы -- неправильно, тем более что mysql мене на сервере совершенно не чему...
Оно есть в виде sql, генерится ежедневно в виде /sql/lib.$table.sql.gz $table: 1. libbook.sql 2. libavtorname.sql (SE) 3. /book/$id/fb2 (/book/$id/txt, /book/$id/html, /book/$id/rtf - если надо) 4. /book/$id/read 5. /book/$id 6. libavtor.sql 7. /author/$id 8. libavtoraliase.sql 9. в libbook.sql есть таймстамп. Но сейчас при загрузки новой версии файл не меняется, даётся новый id а старый метится как удалённый. Иначе проблемы с откатами. Так что можно тупо смотреть id>имеющегося, а максимальный брать из первой строчки /new/rss (там order by id desc). Ну или из sql.
А в чём сложность sql распарсить? Или ещё проще, поднимаешь мускул, всасываешь и генеришь любую выборку, как тебе захочется. Потом опускаешь, раз не нужен. Всяко из базы нужную информацию удобнее вынуть - она на то и придумана.
/etc/init.d/mysql start for i in libbook, libavtor, libavtorname, libavtoraliase; do wget http://lib.rus.ec/sql/lib.$i.sql.gz; zcat lib.$i.sql.gz | mysql database_name; rm lib.$i.sql.gz; done SELECT ....... /etc/init.d/mysql stop
Если всё-таки настаиваешь на XML, я в этом направлении подумаю. Как время будет. А вышеописанное уже работает. Фокус в том, что на даный момент sql надо брать с lib.rus.ec, а файлы - с lib6.rus.ec. Впрочем, когда они объединятся ничего не сломается, пути сохранятся. Просто это будет один ip.
Разворачивать mysql -- я счел не правильным решением, и решил что лучше по старинке парсить html'ки.
Видимо парсить сразу буду lib6.rus.ec, чтобы потом не мучатся с переходом... А шестерку из url'ов убрать будет не сложно.
Однако возни ряд вопросов:
> поиск - /booksearch?ask=..., как и был
А как он был? Там можно запросить все книги по заданному жанру и формату?
Я помню, что на текущей версии ты рассказывал про http://lib.rus.ec/download?genre=sf_humor&type=fb2&avtor=all Но только во-первых его на lib6 просто нету, а во вторых с ним будут небольшие проблемы по нахождению ссылки на страницу автора...
Прошу прощения, я еще раз спрошу. Мне это важно... После переезда библиотеки пропали sql-дампы http://lib.rus.ec/sql/lib.$i.sql.gz Скажи пожалуста, их больше не будет? Мне переписывать все занаво под парсинг html?
LibRusEc kit в качестве fb2-ID'а пишет текущую дату... Было бы крайне здорово, если кроме этой даты туда добавлялось еще какое-то кол-во (хотя бы 5-10) случайных букв и цифр. Иначе слишком велика вероятность, что две книги будут сочтены одной, по сравнению ID'ов... Это будет неприятно...
Librusec kit - это одноразовый скриптик, который своё отработал полгода назад и больше не используется. По общей неопытности в нём было пара ошибок, в частности эта. Надо бы проехать все fb2 и поправить. Как-нибудь сделаю.
Пытаюсь скачать http://lib.rus.ec/book/39081/download мне показывают пустую страницу с заголовком книги. Если залогиниться, то все работает нормально.
1. Правильно ли я понимаю, что не залогиненным скачивать не дают потому что язык книги не русский, и ее дают только залогиненым пользователям?
2. Можно ли при получении страницы этой незалогиненным пользователям передовать браузеру статус код не 200, как это сейчас, а 403 или что там больше подходит для таких случаев. А то у меня то что приходит с http://lib.rus.ec/book/39081/download, по документам проходит как brocken archive. Ведь вроде как скачать удалось успешно, а разархивировать нет.
3. Можно ли кроме п.2 уже для юзера написать текст о том, почему ему книгу не дают скачать... Ведь это мы с тобой знаем, что нерусские книги закрыты. А пользователь то не знает. Потому-что я впринципи могу проиндексировать нерусскую часть библиотеки (если ты конечно не против) LWP::Agent вполне позволяет залогиниться... Но если я потом дам пользователю линк на скачивание, то он пойдя по нему он получит пустую страницу и окажется в полном непонимании почему его сюда послали...
1. Правильно. Мне пока с русскими копирайтборценами проблем хватает, не хочется еще и с буржуями бодаться. 2. Наверное, можно. Лучше я тебе буду отдавать книгу - надо только договориться как твой робот узнавать. По юзер-агенту или IP или как проще? Или логинься, если это не трудно. 3. Напишу. 4. Можно :)
no subject
Date: 2007-12-11 06:17 pm (UTC)no subject
Date: 2007-12-11 06:22 pm (UTC)И ведь не руками делали, программкой какой-то.
Пришлось парсер подкручивать.
no subject
Date: 2007-12-11 06:46 pm (UTC)Там тег открывается и не закрывается :-/
no subject
Date: 2007-12-11 07:19 pm (UTC)а надо было руки откручивать.
как насчет валидации на входе?
no subject
Date: 2007-12-11 07:21 pm (UTC)no subject
Date: 2007-12-11 07:29 pm (UTC)validation
Turn validation on (or off). Defaults to off.
Это в LibXML::Parser
кажется именно это умеет включать валидацию...
no subject
Date: 2007-12-11 08:15 pm (UTC)Для книг, которые уже в библиотеке, надо парсить что есть, а не вываливаться с ошибкой.
Можно, конечно, все их прогнать через валидатор.
Когда-нибудь.
no subject
Date: 2007-12-11 08:25 pm (UTC)Я в ближайшее время (неделю - две) собираюсь запустить индексацию либрусека.
Индексация у меня идет со скоростью 1 книга в 5 минут, так что особой нагрузки я не создам.
Я читал, что ты переезжаешь на новый движек...
В связи с этим вопрос такой: насколько сильно поменяются ссылки для скачивания и страница для поиска? И если поменяется, то схоранишь ли ты для обратной совместимости ридеректы?
Или не хочешь ли ты сейчас обсудить и реализовать какой-либо унифицированный способ каким бы тебя можно было индексировать, такой чтобы его можно было бы не ломать при переезде с одного движка на другой?
no subject
Date: 2007-12-11 08:35 pm (UTC)Лучше на новом, который http://lib6.rus.ec - там доступны книги, снятые с основного. И сервер пока совершенно не занят, так что можешь особо не ограничивать, нагрузки он не боится пока.
поиск - /booksearch?ask=..., как и был
книги - /book/id/download
авторы - /author/id
жанры - /genre/code
по возможности стараюсь старые ссылки поддерживать, но перловки (/pl/2.pl) больше не будет.
если надо, могу сделать спецвход для роботов.
скажем, список только fb2
или возьми полный список - http://lib.rus.ec/sql/lib.libbook.sql.gz и выбирай из него.
(единственное там неочевидное поле - Deleted, 1-удалён, 4-снят, 5- снят и удалён, тебе нужны те которые NOT (1&Deleted))
no subject
Date: 2007-12-11 09:08 pm (UTC)Хорошо... Только у меня сервер стоит пока на узком канале. Его особо нагружать не хочется... Жена хозяина канала может обидиться... ;-)
если надо, могу сделать спецвход для роботов.
скажем, список только fb2
В идеале была бы возможность забрать список книг в какой-то xml-ке.
На вроде этих: fictionbook.ru/all_authors/ и fictionbook.ru/all_books/
Идеально было бы получить в XML виде
1. Полный список авторов
2. Полный список книг
3. Список новых книг за определенную дату ( i.e. http://lib6.rus.ec/xml/2007-12-11/new_books.xml)
4. Список орновленных книг за определенную дату (http://lib6.rus.ec/xml/2007-12-11/updated_books.xml для книг появившихся в течении 10 января)
5. Список исчезнувших по какой либо причине книг за определнную дату.
6. То же что 3,4,5 но для авторов.
меня собственно инересует только fb2 но я думаю, что кому-то еще могут понадобиться и другие форматы.
Все эти xml'ки можно генерить раз в сутки (например в полночь) и отдавать их как статический контент.
В списке книг и авторов меня интересует.
1. Внутренний id книги твоей библиотеки
2. Внутренний id автора товей библиотеки
3. Ссылка на скачивание fb2 файла
4. Ссылка на почитать
5. Ссылка на "обложку книги" где собсвенно обложка, аннотация, и пр.
6. В списке книг, для каждой книги списох id'ов авторов книги
7. Ссылка на страницу об авторе (в списке авторов).
8. В информации об авторе было бы неплохо если бы были все возмлжные алиасы, под которым автор известен
9. Не плохо бы было бы если в списке книг так же была информация о времени создания и размере файла. Это позволит лишний раз не загружать файл для перепроверки.
или возьми полный список - http://lib.rus.ec/sql/lib.libbook.sql.gz и выбирай из него.
А он обновляемый? Его, честно гворя парсить -- запарюсь... А разворачивать его внутрь MySqlной базы -- неправильно, тем более что mysql мене на сервере совершенно не чему...
no subject
Date: 2007-12-11 09:33 pm (UTC)$table:
1. libbook.sql
2. libavtorname.sql (SE)
3. /book/$id/fb2 (/book/$id/txt, /book/$id/html, /book/$id/rtf - если надо)
4. /book/$id/read
5. /book/$id
6. libavtor.sql
7. /author/$id
8. libavtoraliase.sql
9. в libbook.sql есть таймстамп. Но сейчас при загрузки новой версии файл не меняется, даётся новый id а старый метится как удалённый. Иначе проблемы с откатами. Так что можно тупо смотреть id>имеющегося, а максимальный брать из первой строчки /new/rss (там order by id desc). Ну или из sql.
А в чём сложность sql распарсить? Или ещё проще, поднимаешь мускул, всасываешь и генеришь любую выборку, как тебе захочется. Потом опускаешь, раз не нужен.
Всяко из базы нужную информацию удобнее вынуть - она на то и придумана.
/etc/init.d/mysql start
for i in libbook, libavtor, libavtorname, libavtoraliase; do
wget http://lib.rus.ec/sql/lib.$i.sql.gz;
zcat lib.$i.sql.gz | mysql database_name;
rm lib.$i.sql.gz;
done
SELECT .......
/etc/init.d/mysql stop
Если всё-таки настаиваешь на XML, я в этом направлении подумаю. Как время будет.
А вышеописанное уже работает.
Фокус в том, что на даный момент sql надо брать с lib.rus.ec, а файлы - с lib6.rus.ec. Впрочем, когда они объединятся ничего не сломается, пути сохранятся. Просто это будет один ip.
no subject
Date: 2007-12-18 02:43 pm (UTC)Разворачивать mysql -- я счел не правильным решением, и решил что лучше по старинке парсить html'ки.
Видимо парсить сразу буду lib6.rus.ec, чтобы потом не мучатся с переходом... А шестерку из url'ов убрать будет не сложно.
Однако возни ряд вопросов:
> поиск - /booksearch?ask=..., как и был
А как он был? Там можно запросить все книги по заданному жанру и формату?
Я помню, что на текущей версии ты рассказывал про http://lib.rus.ec/download?genre=sf_humor&type=fb2&avtor=all
Но только во-первых его на lib6 просто нету, а во вторых с ним будут небольшие проблемы по нахождению ссылки на страницу автора...
no subject
Date: 2007-12-18 03:02 pm (UTC)Лучше я sql попарсю... ;-)
no subject
Date: 2007-12-18 05:46 pm (UTC)no subject
Date: 2007-12-18 08:05 pm (UTC)Но идеологически мне эта идея очень сильно не нравиться...
no subject
Date: 2007-12-23 09:57 pm (UTC)После переезда библиотеки пропали sql-дампы http://lib.rus.ec/sql/lib.$i.sql.gz
Скажи пожалуста, их больше не будет? Мне переписывать все занаво под парсинг html?
Re:
Date: 2007-12-23 10:05 pm (UTC)Re:
Date: 2007-12-23 10:52 pm (UTC)К сведению
Date: 2007-12-24 11:54 am (UTC)Feature Request
Date: 2007-12-24 07:54 pm (UTC)Было бы крайне здорово, если кроме этой даты туда добавлялось еще какое-то кол-во (хотя бы 5-10) случайных букв и цифр. Иначе слишком велика вероятность, что две книги будут сочтены одной, по сравнению ID'ов... Это будет неприятно...
Re: Feature Request
Date: 2007-12-24 10:09 pm (UTC)По общей неопытности в нём было пара ошибок, в частности эта.
Надо бы проехать все fb2 и поправить.
Как-нибудь сделаю.
Re: Feature Request
Date: 2007-12-24 10:23 pm (UTC)Проехать надо бы. Мне уже попался один не well formed XML в котором & не был преобразован в & со всеми вытекающими...
Re: Feature Request
Date: 2007-12-24 10:23 pm (UTC)Книги на нерусском языке
Date: 2007-12-25 08:48 pm (UTC)Если залогиниться, то все работает нормально.
1. Правильно ли я понимаю, что не залогиненным скачивать не дают потому что язык книги не русский, и ее дают только залогиненым пользователям?
2. Можно ли при получении страницы этой незалогиненным пользователям передовать браузеру статус код не 200, как это сейчас, а 403 или что там больше подходит для таких случаев. А то у меня то что приходит с http://lib.rus.ec/book/39081/download, по документам проходит как brocken archive. Ведь вроде как скачать удалось успешно, а разархивировать нет.
3. Можно ли кроме п.2 уже для юзера написать текст о том, почему ему книгу не дают скачать... Ведь это мы с тобой знаем, что нерусские книги закрыты. А пользователь то не знает. Потому-что я впринципи могу проиндексировать нерусскую часть библиотеки (если ты конечно не против) LWP::Agent вполне позволяет залогиниться... Но если я потом дам пользователю линк на скачивание, то он пойдя по нему он получит пустую страницу и окажется в полном непонимании почему его сюда послали...
п. 2 и 3 так же актуальны для http://lib.rus.ec/book/39081/read и http://lib.rus.ec/book/39081 . Особенно 3, ибо я по этим ссылкам ничего не качаю. Хотя правильный статус код хорошо бы и пользователю отдавать...
4. Вообще я не думаю что с украинскими и белорусскими книгами буду такие же проблемы как с английскими... Может их исключить из списка нерусских? ;-)
Re: Книги на нерусском языке
Date: 2007-12-25 09:07 pm (UTC)2. Наверное, можно. Лучше я тебе буду отдавать книгу - надо только договориться как твой робот узнавать. По юзер-агенту или IP или как проще? Или логинься, если это не трудно.
3. Напишу.
4. Можно :)