onlyfart / elib2ebook Goto Github PK
View Code? Open in Web Editor NEWГенератор книг
License: GNU General Public License v3.0
Генератор книг
License: GNU General Public License v3.0
Нельзя ли добавить поддержку litsovet.ru?
Ссылки имеют вид:
https://litsovet.ru/books/771976-vrata-vovne
На @okoloskov пишет, что такого пользователя нет.
не качает книги с dark-novels.ru
Unhandled exception. System.Text.Json.JsonException: 'e' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
---> System.Text.Json.JsonReaderException: 'e' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& , ExceptionResource , Byte , ReadOnlySpan1 ) at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte ) at System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte ) at System.Text.Json.Utf8JsonReader.ReadSingleSegment() at System.Text.Json.Utf8JsonReader.Read() at System.Text.Json.Serialization.JsonConverter
1.ReadCore(Utf8JsonReader& , JsonSerializerOptions , ReadStack& )
--- End of inner exception stack trace ---
at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& , JsonReaderException )
at System.Text.Json.Serialization.JsonConverter1.ReadCore(Utf8JsonReader& , JsonSerializerOptions , ReadStack& ) at System.Text.Json.JsonSerializer.ReadCore[TValue](JsonConverter , Utf8JsonReader& , JsonSerializerOptions , ReadStack& ) at System.Text.Json.JsonSerializer.ReadCore[TValue](JsonReaderState& , Boolean , ReadOnlySpan
1 , JsonSerializerOptions , ReadStack& , JsonConverter )
at System.Text.Json.JsonSerializer.ContinueDeserialize[TValue](ReadBufferState& , JsonReaderState& , ReadStack& , JsonConverter , JsonSerializerOptions )
at System.Text.Json.JsonSerializer.ReadAllAsync[TValue](Stream , JsonTypeInfo , CancellationToken )
at System.Net.Http.Json.HttpContentJsonExtensions.ReadFromJsonAsyncCore[T](HttpContent , Encoding , JsonSerializerOptions , CancellationToken )
at Elib2Ebook.Logic.Getters.DarkNovelsGetter.Authorize() in D:\a\Elib2Ebook\Elib2Ebook\Elib2Ebook\Logic\Getters\DarkNovelsGetter.cs:line 50
at Elib2Ebook.Program.<>c.<
1 result, Func
2 action)можно билд exe в релизы
Ни одна из книг не генерируется. Постоянно ошибка "Object reference not set to an instance of an object." сразу после "Генерация книги {url} завершилась с ошибкой".
Версия Elib2Ebook 1.30.23 не скачивает с сайта remanga.org:
Начинаю генерацию книги "https://remanga.org/manga/a-infinite-wizard"
Загружена картинка https://remanga.org/media/titles/a-infinite-wizard/98a7d1dcb086de927833b07335b8bc55.jpg
Загружаю главу "Том 1. Глава 1"
Генерация книги https://remanga.org/manga/a-infinite-wizard завершилась с ошибкой. The JSON value could not be converted to Elib2Ebook.Types.Renovels.RenovelsPage. Path: $.content.pages[0] | LineNumber: 0 | BytePositionInLine: 555.
Начинаю генерацию книги "https://remanga.org/manga/dark-summoner"
Загружена картинка https://remanga.org/media/titles/dark-summoner/39a75e8b730560c4dd40865e4c39bc97.jpg
Загружаю главу "Том 1. Глава 0"
Генерация книги https://remanga.org/manga/dark-summoner завершилась с ошибкой. The JSON value couldnot be converted to Elib2Ebook.Types.Renovels.RenovelsPage. Path: $.content.pages[0] | LineNumber: 0 | BytePositionInLine: 956.
Начинаю генерацию книги "https://remanga.org/manga/reincarnation-plan"
Загружена картинка https://remanga.org/media/titles/reincarnation-plan/540948e6326b29834c7dbaa487edd4ae.jpg
Загружаю главу "Том 1. Глава 1"
Генерация книги https://remanga.org/manga/reincarnation-plan завершилась с ошибкой. The JSON value could not be converted to Elib2Ebook.Types.Renovels.RenovelsPage. Path: $.content.pages[0] | LineNumber: 0 | BytePositionInLine: 565.
Некоторые книги не качает, например:
Генерация книги https://ranobelib.me/lonely-attack-on-the-different-world/v0/c1 завершилась с ошибкой. Исключение Object reference not set to an instance of an object.
Типичный клон wuxiaworld.ru, но без бана ботов. Зашел на клоне старенького онлайн прокси (tedforcum.com/proxy.php), и успешно заработало.
При скачивании книги https://readli.net/deadushka-2/ на странице https://readli.net/chitat-online/?b=1185260&pg=36 строка выглядит:
«
(Не обязательная глава с эротической порнографической сценой. Чисто в виде бонуса для моих любимых читателей.)
»
«
(Не обязательная глава с
эротической
порнографической сценой. Чисто в виде бонуса для моих любимых читателей.)»В отличие от -f json
имеются следующие изменения:
JSON.parse(book.json).Cover
{
Cover : <EDIT: тут url вместо изображения в base64>
}
JSON.parse(book.json).Chapters[i].Images
{
Chapters: [
i : {
Images : [
{
Content : <EDIT: тут url вместо изображения в base64>
Headers : <NEW : тут новое свойство с headers, относящихся к url из свойства выше>
}
...
]
}
...
]
}
stdout
Начинаю генерацию книги "https://...
)Книга "book.json" успешно сохранена
, идет разделитель
(например, \n<JSON-DEV>\n
)json-dev
(файл book.json-dev
не создаётся, а выводится в stdout
)stdout
через stream считывать - заодно и данные через него же получать... тем более, когда вместо base64
будут url
с headers
содержимое выводимого файла самое большее 3MB
будет весить и RAM сильно жрать не будет даже при параллельной работе Elib2Ebook
в нескольких потоках)P.S. :
На мой взгляд, надо только определиться с разделителем
(любой бесполезный набор символов подойдёт).
Нельзя ли добавить поддержку bookinist.pw?
Ссылки имеют вид:
https://bookinist.pw/book/581396
https://bookinist.pw/book/601231
https://bookinist.pw/book/601234
https://bookinist.pw/book/602068
https://bookinist.pw/book/615092
https://bookinist.pw/book/634677
Команда: ./Elib2Ebook --url https://ranobelib.me/kagerou-daze --format epub
Версия dotnet: 6.0.102
Версия программы - последняя релизная - 1.3
os: Linux arch 5.17.5-arch1-1
Получившаяся в результате книжка - https://disk.yandex.ru/d/9gehp_xEtz83wA
Из файла видно, что из картинок только обложка, хотя, судя по выводу программы - она скачивает все изображения, но, почему-то, не добавляет в html файлы к тексту:
задать размер наибольшей стороны у каждого изображения в fb2|epub
(типа --max-image-size=600
)задать размер наименьшей стороны у каждого изображения в fb2|epub
(типа --min-image-size=300
)--min-image-size
, то оно выдаётся как есть
(без редактирования/уменьшения)ошибка после начала генерации книги.
Object reference not set to an instance of an object.
скачивал последнюю(1.30.29) версию где был исправлен этот сайт.
Нельзя ли добавить поддержку feisovet.ru?
Ссылки имеют вид:
Каталог: https://feisovet.ru/%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD/%D0%9C%D0%B5%D0%B6%D0%B3%D0%B0%D0%BB%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5-%D0%B1%D1%80%D0%B0%D1%87%D0%BD%D0%BE%D0%B5-%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%81%D1%82%D0%B2%D0%BE-%D0%9B%D1%8E%D1%82%D0%B8%D0%BA-%D0%9A%D1%81%D0%B5%D0%BD%D0%B8%D1%8F-%D0%9C%D0%B5%D0%B4%D0%B2%D0%B5%D0%B4%D0%B5%D0%B2%D0%B0
Купленная книга: https://feisovet.ru/online-reader?oid=289111421-286309254
Возможно ли сделать поддержку https://remanga.org/ ?
Добавьте поддержку noveltranslate.com пожалуйста. Сайт с мех. переводом, напоминает jaomix. Там real-time перевода нет. https://noveltranslate.com/ru/novel/paladins-of-asgard/ - пример. Спасибо за внимание)
Добрый день!
Возможно ли при парсинге книг с author.today изменить адрес скачиваемой картинки?
Из ссылок вида
«https://cm.author.today/content/2022/06/01/841eacb3db7649a3850d83088194787b.jpg?width=265&height=400&mode=max»
удалять часть
«?width=<число>&height=<число>&mode=max» полностью. Т.е. весь этот хвостик.
Программа прекрасно обходит cf и скачивает картинки из ранобе. Так почему бы не сделать граббер манги с таких сайтов как mangalib, manga.ovh или readmanga?
Можно ли добавить такую возможность?
Привет, можешь сделать поддержку ranobes.net. Это ж вроде тоже самое что и ranobes.com(или нет)
Provide instructions please.
Возможно ли сделать поддержку fictionbook.ru?
Примеры книг:
https://fictionbook.ru/author/dmitriyi_leonidovich/popavshiyi_v_nekromanta/
https://fictionbook.ru/author/dmitriyi_leonidovich/popavshiyi_v_nekromanta_2_syer_student/
Книга «Стоп. Снято! Фотограф СССР» Токсик Саша.
Строка на странице 42:
«<p><strong>История попаданца<strikethrough> в жопу ещё более глубокую... </strikethrough>в ещё больший медвежий угол, чем мой фотограф, причём в 1970 год.</strong></p>»
качается в виде:
«<p><strong>История попаданца<p> в жопу ещё более глубокую... </p>в ещё больший медвежий угол, чем мой фотограф, причём в 1970 год.</strong></p>»
Можно сделать андройд приложение по типу kotatsu , но с ранобэ
https://atata.io/
https://habr.com/ru/post/516104/ - статья с парсингом для самых маленьких
из-за клаудфеера картинки можно получать только из браузера
единственное адекватное решение это webdriver
./Elib2Ebook --version
Elib2Ebook 1.10.3
Пример книги:
https://ranobelib.me/ascendance-of-a-bookworm-novel
Выбираю перевод от Lunar group
Ссылка https://ranobelib.me/ascendance-of-a-bookworm-novel?bid=264§ion=chapters
Начинаю скачивать:
./Elib2Ebook --url "https://ranobelib.me/ascendance-of-a-bookworm-novel?bid=264§ion=chapters" --format epub
Основной домен https://ranobelib.me/ доступен. Работаю через него
Начинаю генерацию книги "https://ranobelib.me/ascendance-of-a-bookworm-novel?bid=264§ion=chapters"
Загружаю картинку "https://ranobelib.me/uploads/cover/ascendance-of-a-bookworm-novel/cover/v5vlHg0ThhJB_250x350.jpg"
Загружаю главу Том 1 Глава 1.0 Пролог
Загружаю главу Том 1 Глава 2.0 Новая жизнь
Загружаю главу Том 1 Глава 3.0 Исследование моего дома
Это названия глав от перевода Rulate Project YM, то есть программа игнорирует параметр ?bid=264 в ссылке и скачивает первый перевод по порядку.
Можно ли добавить поддержку выбора переводчика?
Хотелось бы подключать всю эту хрень в качестве библиотеки.
Я понятия не имею, как я это буду подключать к node.js
... но очень хочется))
Если вдруг "хрен тебе, золотая рыбка"
, то хотелось хотя бы иметь возможность: не "прога херачит в файл (fb2|epub)"
, а "прога выдаёт Readable Stream"
.
Если и тут "хрен тебе, перетопчешься"
, то хотя бы типа такого:
const cp = require('node:child_process')
cp.spawn( 'dotnet',
[
'Elib2Ebook.dll',
'-u', 'https://author.today/reader/1',
'-f', 'fb2',
'-O', '-' // на худой конец вывод чистого fb2 в stdout (а не логи)
// без всех этих "Загружаю главу "Пролог. За два дня до описываемых событий."
// эту хрень (логи) можно выводить в stderr (когда '-O -' задано)
]
);
вся проблема в названии, очень интересный проект хочу чтобы он работал!! удачи!!!
Возможно ли скачивать содержимое вкладки Доп. материалы (картинки, доки, etc.) с сайта author.today в отдельную папку рядом с книгой?
Или вывести список url этих файлов в лог.
И ещё косметика. Нельзя ли выводить название книги перед началом скачивания, а не в конце.
Не скачивает некоторые книги, выдает данную ошибку.
Начинаю генерацию книги "https://ranobelib.me/the-earth-is-online"
Загружена картинка https://ranobelib.me/uploads/cover/the-earth-is-online/cover/8KaJCmE68G5X_250x350.jpg
Загружаю главу Том 1 Глава 1 Дин Дон! 15 ноября, 2017 – Земля вышла онлайн
Генерация книги https://ranobelib.me/the-earth-is-online завершилась с ошибкой. Object reference not set to an instance of an object.
Можно ли сделать так, чтоб прога качала с "второго" сервера странички, вместо "сжатого"? А то при скачивании веб манхв, там качество сильно шакалится, а на "втором" на глаз лучше чем на "первом", и намного лучше чем в "сжатом".
и раньше можно было не только с mangalib.me но и hentailib.me качать, а теперь только с мангалиба ибо только там можно пароль не вводить и тянуть, можно и это как-то сделать? Типо в проге вбиваешь:
C:\Portable\Elib2Ebook-Windows\Elib2Ebook.exe -u https://hentailib.me/ -f cbz -l Vasya -p Pupkin
а он будет этот логг/пасс вводить уже в lib.social на который перебрасывают сайты, авторизовать там, и тянуть странички уже откуда надо.
Возникает ошибка
Начинаю генерацию книги "https://ranobelib.me/violet-evergarden-novel"
Загружаю картинку "https://staticlib.me/uploads/cover/violet-evergarden-novel/cover/eS8s0RCZus3v_250x350.jpg"
Загружаю главу Том 1 Глава 0 Пролог
Генерация книги https://ranobelib.me/violet-evergarden-novel завершилась с ошибкой. Исключение:
System.NullReferenceException: Object reference not set to an instance of an object.
at Elib2Ebook.Extensions.HttpClientExtensions.GetHtmlDocWithTriesAsync(HttpClient client, Uri url) in \Elib2Ebook\Extensions\HttpClientExtensions.cs:line 83
at Elib2Ebook.Logic.Getters.RanobeLibGetter.GetChapter(Uri url) in \Elib2Ebook\Logic\Getters\RanobeLibGetter.cs:line 95
at Elib2Ebook.Logic.Getters.RanobeLibGetter.FillChapters(WindowData data, Uri url) in \Elib2Ebook\Logic\Getters\RanobeLibGetter.cs:line 83
at Elib2Ebook.Logic.Getters.RanobeLibGetter.Get(Uri url) in \Elib2Ebook\Logic\Getters\RanobeLibGetter.cs:line 56
at Elib2Ebook.Program.<>c.<<Main>b__0_0>d.MoveNext() in \Elib2Ebook\Program.cs:line 48
Если скачать только определённые главы, то в оглавлении всё равно отображается с единицы.
То бишь 601 глава отображается как первая, а 750 как 150-ая. (было бы лучше если бы отображалось не 1-150, а индекс главы, как те что указывали в параметрах --start --end)
Ну а также было бы неплохо, если в оглавление отображалось название самой главы.
Running example.py
for purchased book 149497 fails:
$ python example.py
Authorized as XXX
Traceback (most recent call last):
File "D:\src\AuthorTodayToFB2Converter\example.py", line 68, in <module>
asyncio.get_event_loop().run_until_complete(main())
File "C:\Python39\lib\asyncio\base_events.py", line 642, in run_until_complete
return future.result()
File "D:\src\AuthorTodayToFB2Converter\example.py", line 27, in main
await book.GetBookFromUrl("work/149497")
File "D:\src\AuthorTodayToFB2Converter\Classes\Book.py", line 25, in GetBookFromUrl
await self.GetBookChapters()
File "D:\src\AuthorTodayToFB2Converter\Classes\Book.py", line 31, in GetBookChapters
await self.getMultipleChapters(user)
File "D:\src\AuthorTodayToFB2Converter\Classes\Book.py", line 49, in getMultipleChapters
await task
File "D:\src\AuthorTodayToFB2Converter\Classes\Book.py", line 69, in GetBookChapter
await chapter.GetChapterFromUrl(url)
File "D:\src\AuthorTodayToFB2Converter\Classes\Chapter.py", line 27, in GetChapterFromUrl
chapterResponse.raise_for_status()
File "D:\src\AuthorTodayToFB2Converter\venv\lib\site-packages\httpx\_models.py", line 1507, in raise_for_status
raise HTTPStatusError(message, request=request, response=self)
httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://author.today/reader/149497/chapter?id=1257445'
For more information check: https://httpstatuses.com/429
Помимо говнокодеров
(прошу меня к ним не причислять, ибо ещё не дорос),
есть ещё и говнописатели
, действующие по алгоритму:
- "А возьму-ка я, да под конец книги, перепишу-ка первые 5 глав..."
Понятно, что адекватный читатель спокойно скажет:
- "Вот сука!!!"
и не будет ни хрена перечитывать...
Моё видение "консенсуса в подобных высерах" следующее:
fb2|epub
, но и html поглавно (без всякой обработки)
(для будущего сравнения "а не подосрал ли нам говнописатель"
)-O -
прога сначала отдаёт в stdout html поглавно
в stdout книгу целиком в формате fb2|epub
маркером
(в stdout
) отмечать разделение между html-главами
, а каким между html и fb2|epub
- вопрос открытыйhtml поглавно
можно писать в stdout
,fb2|epub
в stderr
,exit code
+ <Название книги.err.log>
md5
для html-глав
и сохранять в базу (html + md5
)P.S.:
Очень не хочется гонять туда-сюда данные в файлах:
html поглавно в файлы
fb2|epub в файл
считывать в Readable Stream, по кусочкам загоняя в базу
, словно "Кощей" трясясь над "златом"/RAMДоброе время суток! Можешь подсказать новый бот для скачивания на телеге, если он есть. А то старый закрыли((( Заранее спасибо
Hi, after a recent dotnet
upgrade to 6.0.21
I'm now having this error (linux x64):
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at OnlineLib2Ebook.Extensions.HttpClientExtensions.GetHtmlDocWithTriesAsync(HttpClient client, Uri url) in /home/alex/src/OnlineLib2Ebook/OnlineLib2Ebook/Extensions/HttpClientExtensions.cs:line 56
at OnlineLib2Ebook.Logic.Getters.AuthorTodayGetter.Authorize() in /home/alex/src/OnlineLib2Ebook/OnlineLib2Ebook/Logic/Getters/AuthorTodayGetter.cs:line 82
at OnlineLib2Ebook.Logic.Getters.AuthorTodayGetter.Get(Uri url) in /home/alex/src/OnlineLib2Ebook/OnlineLib2Ebook/Logic/Getters/AuthorTodayGetter.cs:line 41
at OnlineLib2Ebook.Program.<>c.<<Main>b__0_0>d.MoveNext() in /home/alex/src/OnlineLib2Ebook/OnlineLib2Ebook/Program.cs:line 40
--- End of stack trace from previous location ---
at CommandLine.ParserResultExtensions.WithParsedAsync[T](ParserResult`1 result, Func`2 action)
at OnlineLib2Ebook.Program.Main(String[] args) in /home/alex/src/OnlineLib2Ebook/OnlineLib2Ebook/Program.cs:line 21
at OnlineLib2Ebook.Program.<Main>(String[] args)
Aborted (core dumped)
Thanks
Elib2Ebook.exe --url https://author.today/work/87156 --format epub
Начинаю генерацию книги "https://author.today/work/87156"
Генерация книги https://author.today/work/87156 завершилась с ошибкой. Object reference not set to an instance of an object.
Генерация любой книги вызывает ошибку.
Object reference not set to an instance of an Object.
(ficbook.net)
Предлагаю добавить раздел Discussions в репозиторий
Можете добавить возможность скачивать отрезок глав?
Например --start 10 --end 20
Если end не указывается, то скачивается до конца, а если start, то скачивается от первой главы.
С учётом возможных глав которые вместо номера содержат только имя, тогда указывается path.
Например из URL https://dark-novels.ru/read/722/427960 будет --start "304239" --end "427966", что будет с 1й по 7ю главу.
Ждать пока скачается 100500 прочитанных глав такое себе удовольствие как для меня так и для сервиса который отдает контент.
На странице «Государь» строка
«<p><span><span>[3]</span></span><span><span style="color:black"> </span></span><span><span style="color:black">Шерстяные</span></span><span><span style="color:black"> </span></span><span><span style="color:black">и полушерстяные</span></span><span><span style="color:black"> женские </span></span><span><span style="color:black">платки</span></span><span style="color:black">,<span> </span><span>украшенные</span><span> </span><span>традиционным</span><span> </span><span>красочным</span><span> </span><span>набивным</span><span> </span><span>орнаментом</span>,<span> </span><span>возникшим</span><span> </span><span>в подмосковном</span><span> </span><span>городе</span><span> </span></span><span><u><span>Павловский</span></u></span><span><u><span> </span></u></span><span><u><span>Посад</span></u></span></p>»
выводится в виде
«<p>[3] Шерстяные и полушерстяные женские платки, украшенные традиционным красочным набивным орнаментом, возникшим в подмосковном городе <p>Павловский</p><p> </p><p>Посад</p></p>»,
т.е. тэги <u> отрабатываются неверно.
Кроме того строки вида: «<p><span style="color:red">— Ступай.</span></p>»
желательно выводить в форме «<p style="color:red">— Ступай.</p>», а не «<p>— Ступай.</p>», как сейчас делается.
На странице «Покоривший СТЕНУ»
также есть цветные фрагменты вида «<span style="color: rgb(0, 176, 240)">…</span>» и «<span style="color: rgb(255, 80, 80)">…</span>».
Джруже, обьясни для хлебушка куда и что писать , я уже пол часа по вкладкам бегаю .
Тут что то скачать надо? Или онлайн писать .
Обьясни пожалуйста. Заранее благодарю.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.