Добавляем номер книги в бд (Инструкция)
5 years 8 months ago - 5 years 8 months ago #2028
by arthas
arthas created the topic: Добавляем номер книги в бд (Инструкция)
Недавно столкнулся с необходимостью добавления в базу данных номера книги в серии. Ответа на форуме не получил, в итоге разобрался сам и решил другим помочь. Сразу говорю, из ЯП я изучал только obj-c и swift, по-этому все чем я пользовался - это логическое мышление + google. Если кто шарит больше и может что-то добавить - пишите в теме.
Все операции желательно делать перед загрузкой файлов на сервер.
1. Открываем файл ˜/opds_catalog/models.py
Добавляем строчкуСюда:
Строчкусюда:
2. Файл ˜/opds_catalog/migrations/0001_initial.py
Строчка
3. Файл ˜/book_tools/format/fb2sax.py
Строка
Тут поподробнее. В скобках "(('description','title-info'))" находится путь к данным в книге, которые нам нужны. Для примера откроем исходный код любой книги fb2.
Путь может быть любым, в зависимости от редактора, в котором создавалась книга, и в зависимости от нужных вам данных.
Строка
Строка
Строка
Строка
Много строкЕсли у вас другие данные, смотрите как сделана аннотация и делайте по аналогии.
И, забыл об этой, строка
4. Файл ˜/opds_catalog/feeds.py
Строка
Строка
Строка
Строка
Строка
Строка
5. Файл ˜/opds_catalog/opdsdb.py
Строка
Строка
Строка
6. Файл ˜/opds_catalog/sopdscan.py
Строка
Строка
Строка
Строка
7. Файл ˜/sopds_web_backend/views.py
Строка
Строка
8. Файл ˜/sopds_web_backend/sopds_books.html
Строка
9. Файл ˜/book_tools/fb2.py
Строка
Строка
Вроде это все. Если есть вопросы - пишите в телегу @anikin_dima
Все операции желательно делать перед загрузкой файлов на сервер.
1. Открываем файл ˜/opds_catalog/models.py
Добавляем строчку
SIZE_BOOK_SERIALNUM = 10000
Строчку
serialnum = models.CharField(max_length=SIZE_BOOK_SERIALNUM)
2. Файл ˜/opds_catalog/migrations/0001_initial.py
Строчка
('serialnum', models.CharField(max_length=10000)),
3. Файл ˜/book_tools/format/fb2sax.py
Строка
self.serialnum=fb2tag(('description','title-info'))
Тут поподробнее. В скобках "(('description','title-info'))" находится путь к данным в книге, которые нам нужны. Для примера откроем исходный код любой книги fb2.
Путь может быть любым, в зависимости от редактора, в котором создавалась книга, и в зависимости от нужных вам данных.
Строка
self.serialnum.reset()
Строка
self.serialnum.tagopen(name)
Строка
self.serialnum.tagclose(name)
Строка
self.serialnum.setvalue(data)
Много строк
def __detect_serialnum1(self):
res = 'Нету'
if len(self.fb2parser.series.attrss)>0:
s = self.fb2parser.series.attrss[0]
res = s.get('number')
if len(res) > 0:
return res
return None
И, забыл об этой, строка
self.serialnum1 = self.__detect_serialnum1()
4. Файл ˜/opds_catalog/feeds.py
Строка
'serialnum': strip_tags(row.serialnum),
Строка
<b>Series number: </b>%(serialnum)s<br/>
Строка
'serialnum':item['serialnum']
Строка
'serialnum': strip_tags(row.serialnum),
Строка
<b>Series number: </b>%(serialnum)s<br/>
Строка
'serialnum':item['serialnum']
5. Файл ˜/opds_catalog/opdsdb.py
Строка
SIZE_BOOK_SERIALNUM
Строка
serialnum
Строка
serialnum=p(serialnum,SIZE_BOOK_SERIALNUM)
6. Файл ˜/opds_catalog/sopdscan.py
Строка
serialnum=' '
Строка
serialnum
Строка
serialnum = book_data.serialnum1 if book_data.serialnum1 else ''
serialnum = serialnum.strip(strip_symbols) if isinstance(serialnum, str) else serialnum.decode('utf8').strip(strip_symbols)
Строка
serialnum
7. Файл ˜/sopds_web_backend/views.py
Строка
'serialnum': strip_tags(row.serialnum),
Строка
'serialnum': strip_tags(row.serialnum),
8. Файл ˜/sopds_web_backend/sopds_books.html
Строка
<b>{% trans "Номер в серии:" %}</b> {{ b.serialnum }} <br>
9. Файл ˜/book_tools/fb2.py
Строка
serialnum1 = self.__detect_serialnum1(tree)
if serialnum1:
self.serialnum1 = serialnum1.strip()
Строка
def __detect_serialnum1(self, tree):
res = tree.xpath('/fb:FictionBook/fb:description/fb:title-info/fb:sequence', namespaces=self.__namespaces)
if len(res) == 0:
res = tree.xpath('/FictionBook/description/title-info/sequence')
if len(res) > 0:
return etree.tostring(res[0], encoding='utf-8', method='text')
return None
Вроде это все. Если есть вопросы - пишите в телегу @anikin_dima
Last Edit: 5 years 8 months ago by arthas.
Please Войти or Create an account to join the conversation.
- arthas
-
Topic Author
- Offline
- Новый участник
-
Less
More
- Posts: 15
5 years 8 months ago - 5 years 8 months ago #2031
by mitshel
mitshel replied the topic: Добавляем номер книги в бд (Инструкция)
Спасибо за интерес к программе. Все было намного проще, на самом деле информация о серии уже была в БД.
Простите, что заставил долго ждать, однако сложности со свободным временем.
Вывод номера серии добавил в devel ветку проекта.
Порпробуйте установить и потестировать версию 0.44-dev с github:
git clone github.com/mitshel/sopds.git -b v0.44-devel
Простите, что заставил долго ждать, однако сложности со свободным временем.
Вывод номера серии добавил в devel ветку проекта.
Порпробуйте установить и потестировать версию 0.44-dev с github:
git clone github.com/mitshel/sopds.git -b v0.44-devel
Last Edit: 5 years 8 months ago by mitshel.
Please Войти or Create an account to join the conversation.
- mitshel
-
- Offline
- Администратор
-
Less
More
- Posts: 297
- Karma: 8
5 years 8 months ago #2033
by arthas
arthas replied the topic: Добавляем номер книги в бд (Инструкция)
Думаю по моей инструкции (хоть она далеко от идеальной) можно добавить какую-угодно информацию из книг, что немного упростит жизнь пользователей)
Please Войти or Create an account to join the conversation.
- arthas
-
Topic Author
- Offline
- Новый участник
-
Less
More
- Posts: 15
Time to create page: 0.161 seconds