Register Guidelines E-Books Today's Posts Search

Go Back   MobileRead Forums > E-Book Software > Calibre > Plugins

Notices

Reply
 
Thread Tools Search this Thread
Old 07-07-2021, 03:03 PM   #601
capink
Wizard
capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.
 
Posts: 1,196
Karma: 1995558
Join Date: Aug 2015
Device: Kindle
Quote:
Originally Posted by Hortensia View Post
Remove all formats except AZW3
Calibre Actions > Remove books > Remove files of a specific format.

Note: This step is interactive and will pop up a dialog asking you to choose the format you want to delete.


Quote:
Originally Posted by Hortensia View Post
Regenerate the cover (already set to be based on custom columns content)
I am not sure what you mean by cover based on custom column content. Anyway, check if this custom action does what you want (you need to copy paste it into the module editor). This action will extract the cover from the book.

Quote:
Originally Posted by Hortensia View Post
Embed metadata
I am not really sure how to do this. Maybe there is an option in calibre that does this automatically. Someone else might be able to help as I don't personally use devices with calibre.

Quote:
Originally Posted by Hortensia View Post
Send the ebook to the Kindle
Calibre Actions > Send to device > Send to main memory

Quote:
Originally Posted by Hortensia View Post
Modify the content of a custom column indicating the book status
Single Field Action
capink is offline   Reply With Quote
Old 07-07-2021, 03:26 PM   #602
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,982
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
Regenerate the cover - I assume they're using Generate Cover plugin. I actually have a chain to re-gen the cover + Polish Book, which would also cover Embed Metadata if they select the option.

The last one can be done with single-field edit. I highly suggest looking into the template language as it provides some extra flexibility.

For "Send the eBook to the Kindle," do you use the Reading List plugin? If so, here's what I do. First I have a Send-to-Device list with these sync settings:

Click image for larger version

Name:	2021-07-07 16_20_01-Window.png
Views:	544
Size:	6.7 KB
ID:	188074

Then I set up two actions. One is to send the book to the device directly. The other adds it to the send-to-device list. Then I can use conditions to select the correct action depending on whether or not the device is connected.

Click image for larger version

Name:	2021-07-07_162603.png
Views:	551
Size:	84.9 KB
ID:	188075
ownedbycats is offline   Reply With Quote
Advert
Old 07-07-2021, 03:30 PM   #603
Hortensia
Enthusiast
Hortensia began at the beginning.
 
Posts: 30
Karma: 10
Join Date: Jul 2021
Device: Kindle Paperwhite, Kobo Libra 2
@ownedbycats You answered while I was answering capink
My answer to capink is being checked by a moderator and my additional questions might overlap your answer.

I do not use this plugin but I will have a look at the template language. I test and I will let you know.
Hortensia is offline   Reply With Quote
Old 07-07-2021, 03:48 PM   #604
capink
Wizard
capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.
 
Posts: 1,196
Karma: 1995558
Join Date: Aug 2015
Device: Kindle
Quote:
Originally Posted by Hortensia View Post
I am trying to avoid this dialog since I always select the same format. Maybe there is a custom action to do that?
Unfortuantely no. Someone will have to write it.

Quote:
Originally Posted by Hortensia View Post
When doing this action manually, I use Edit metadata > Generate cover. Prior to this, I have made a long click on "Generate cover" to access "Customize the styles and colors of the generated cover" and I set my own template for the title, subtitle and footnote texts. So I would like to regenerate the book cover. The generation automatically follow my template.
I don't see this option in my calibre install. Maybe it is part of a plugin I don't have. I think @ownedbycats can offer better help when it comes to covers and devices.


Quote:
Originally Posted by Hortensia View Post
Can I set a condition to check that my Kindle is connected? I found a built-in template function to get the connected_device_name but not to check if it is connected.
Yes you can. Use the condition dialog with the following parameters:

Code:
template = program: connected_device_name('main')
datatype = text
comparison = "="
condition value = your device name
capink is offline   Reply With Quote
Old 07-07-2021, 04:16 PM   #605
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,982
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
Quote:
Originally Posted by Hortensia View Post
I do not use this plugin but I will have a look at the template language. I test and I will let you know.
Here's some to show you what's possible to be done.

I have a template single-field edit that checks for specific values in some custom columns and then adds values to my Kobo collection column based on them:

Code:
program:
	g = field('#genres');
	vl = field('#vls');
	k = field('#kobocoll');

	v = first_non_empty(
		list_contains(vl, ',', '^Loans$', 'Loans', ''),
		list_contains(g, ',', '^Fanfiction$', 'Fanfiction', ''),
		list_contains(g, ',', '^Horses$', 'Horses', ''),
		list_contains(g, ',', '^Cozy Mystery$', 'Cozy Mysteries', ''),
		list_contains(g, ',', '^(Fantasy|Science Fiction)$', 'Fantasy & Sci-Fi', ''),
	);

	list_union(k, v, ',')
I have another that checks fanfics marked as 'in-progress' and sets them to 'abandoned' if they haven't been updated in a few years or have an error:

Code:
program:
d1 = format_date(today(),'iso');
d2 = $$#fanficupdated;
status = $#fanficstatus;

	if
		and(
			status=='In-Progress',
			days_between(d1, d2) ># 730,
			)
	then
		"Abandoned"
		elif
			and(
				status=='In-Progress',
				$#fanficerror,
				)
		then
			"Abandoned"

	else
		status
	fi

Last edited by ownedbycats; 07-07-2021 at 04:21 PM.
ownedbycats is offline   Reply With Quote
Advert
Old 07-07-2021, 04:27 PM   #606
Hortensia
Enthusiast
Hortensia began at the beginning.
 
Posts: 30
Karma: 10
Join Date: Jul 2021
Device: Kindle Paperwhite, Kobo Libra 2
Thank to both of you! The template language is definitely useful

(I cannot see my first answer but since you both answered to it, I will assume you could see it.)

@ownedbycats I do not use the Generate cover plugin either, I just want to generate the default cover using the Edit metadata menu.
Hortensia is offline   Reply With Quote
Old 07-07-2021, 06:04 PM   #607
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,982
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
I'm not sure if there's a way to do that via AC.
ownedbycats is offline   Reply With Quote
Old 07-09-2021, 04:56 PM   #608
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,982
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
I have a chain that uses "copy to clipboard" using this template. Template tester gave me an error, but looking at it through the Action Chains UI it was okay except for double-slashes D:\\Documents\\My Books\\.

Code:
program: containing_folder()
It produces this error when I try to run it

Code:
calibre, version 5.23.0
ERROR: Unhandled exception: <b>TypeError</b>:expected str, bytes or os.PathLike object, not NoneType

calibre 5.23 [64bit]  embedded-python: True is64bit: True
Windows-10-10.0.19041 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.19041')
Python 3.8.5
Windows: ('10', '10.0.19041', '', 'Multiprocessor Free')
Interface language: None
Successfully initialized third party plugins: DeDRM (7, 2, 1) && Action Chains (1, 9, 2) && Audit Log (1, 0, 16) && Barnes & Noble (1, 2, 16) && Calibre Power Search Plugin (2, 1, 0) && Comments Cleaner (1, 3, 2) && Count Pages (1, 11, 0) && Embed Comic Metadata (1, 6, 1) && EpubCheck (0, 2, 3) && EpubMerge (2, 11, 0) && Extract ISBN (1, 5, 0) && FanFicFare (4, 3, 7) && Fantastic Fiction (1, 4, 0) && Favourites Menu (1, 0, 5) && Find Duplicates (1, 8, 8) && Generate Cover (2, 0, 2) && GetFileName (0, 1, 1) && Goodreads (1, 5, 1) && Import List (1, 5, 6) && Job Spy (1, 0, 190) && Kindle hi-res covers (0, 5, 0) && Kobo Books (1, 8, 2) && Kobo Utilities (2, 14, 0) && KoboTouchExtended (3, 4, 4) && Library Codes (1, 0, 50) && Manage Series (1, 2, 11) && Modify ePub (1, 6, 2) && Obok DeDRM (7, 2, 1) && Open With (1, 5, 13) && Overdrive Link (2, 45, 1) && Quality Check (1, 11, 2) && Reading List (1, 7, 6) && Search The Internet (1, 8, 1) && SmartEject (2, 3, 0) && Standard Ebooks (1, 0, 0) && Sum Column (0, 3, 1) && View Manager (1, 6, 1) && Walk Search History (1, 3, 2) && Overdrive Link* (2, 45, 1)
Traceback (most recent call last):
  File "calibre_plugins.action_chains.action", line 400, in run_chain
  File "calibre_plugins.action_chains.chains", line 391, in run
  File "calibre_plugins.action_chains.chains", line 206, in _run_loop
  File "calibre_plugins.action_chains.chains", line 183, in _run_loop
  File "calibre_plugins.action_chains.actions.copy_to_clipboard", line 212, in run
  File "calibre_plugins.action_chains.common_utils", line 807, in get_file_path
  File "ntpath.py", line 341, in expandvars
TypeError: expected str, bytes or os.PathLike object, not NoneType
How do I fix this?
ownedbycats is offline   Reply With Quote
Old 07-10-2021, 01:03 AM   #609
capink
Wizard
capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.
 
Posts: 1,196
Karma: 1995558
Join Date: Aug 2015
Device: Kindle
Quote:
Originally Posted by ownedbycats View Post
I have a chain that uses "copy to clipboard" using this template. Template tester gave me an error, but looking at it through the Action Chains UI it was okay except for double-slashes D:\\Documents\\My Books\\.

Code:
program: containing_folder()
It produces this error when I try to run it

Code:
calibre, version 5.23.0
ERROR: Unhandled exception: <b>TypeError</b>:expected str, bytes or os.PathLike object, not NoneType

calibre 5.23 [64bit]  embedded-python: True is64bit: True
Windows-10-10.0.19041 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.19041')
Python 3.8.5
Windows: ('10', '10.0.19041', '', 'Multiprocessor Free')
Interface language: None
Successfully initialized third party plugins: DeDRM (7, 2, 1) && Action Chains (1, 9, 2) && Audit Log (1, 0, 16) && Barnes & Noble (1, 2, 16) && Calibre Power Search Plugin (2, 1, 0) && Comments Cleaner (1, 3, 2) && Count Pages (1, 11, 0) && Embed Comic Metadata (1, 6, 1) && EpubCheck (0, 2, 3) && EpubMerge (2, 11, 0) && Extract ISBN (1, 5, 0) && FanFicFare (4, 3, 7) && Fantastic Fiction (1, 4, 0) && Favourites Menu (1, 0, 5) && Find Duplicates (1, 8, 8) && Generate Cover (2, 0, 2) && GetFileName (0, 1, 1) && Goodreads (1, 5, 1) && Import List (1, 5, 6) && Job Spy (1, 0, 190) && Kindle hi-res covers (0, 5, 0) && Kobo Books (1, 8, 2) && Kobo Utilities (2, 14, 0) && KoboTouchExtended (3, 4, 4) && Library Codes (1, 0, 50) && Manage Series (1, 2, 11) && Modify ePub (1, 6, 2) && Obok DeDRM (7, 2, 1) && Open With (1, 5, 13) && Overdrive Link (2, 45, 1) && Quality Check (1, 11, 2) && Reading List (1, 7, 6) && Search The Internet (1, 8, 1) && SmartEject (2, 3, 0) && Standard Ebooks (1, 0, 0) && Sum Column (0, 3, 1) && View Manager (1, 6, 1) && Walk Search History (1, 3, 2) && Overdrive Link* (2, 45, 1)
Traceback (most recent call last):
  File "calibre_plugins.action_chains.action", line 400, in run_chain
  File "calibre_plugins.action_chains.chains", line 391, in run
  File "calibre_plugins.action_chains.chains", line 206, in _run_loop
  File "calibre_plugins.action_chains.chains", line 183, in _run_loop
  File "calibre_plugins.action_chains.actions.copy_to_clipboard", line 212, in run
  File "calibre_plugins.action_chains.common_utils", line 807, in get_file_path
  File "ntpath.py", line 341, in expandvars
TypeError: expected str, bytes or os.PathLike object, not NoneType
How do I fix this?
This is probably an old chain predating a change made to additionally copy to a selected file. If you simply re-create the chain it should work. But I'd like to try the attached beta with your old chain.

Last edited by capink; 07-10-2021 at 01:46 AM. Reason: move beta to the first post
capink is offline   Reply With Quote
Old 07-10-2021, 01:40 AM   #610
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,982
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
The beta fixed it.
ownedbycats is offline   Reply With Quote
Old 07-12-2021, 03:10 PM   #611
Hortensia
Enthusiast
Hortensia began at the beginning.
 
Posts: 30
Karma: 10
Join Date: Jul 2021
Device: Kindle Paperwhite, Kobo Libra 2
Hello,

This is a follow up of two points in a previous discussion in this thread.

Quote:
Originally Posted by capink View Post
Unfortuantely no. Someone will have to write it.
I wrote it, or at least I wrote a module which delete the epub format without further prompting, leaving only the AZW3 format I wanted. Should I post the code here if it can be useful to someone?

Quote:
Originally Posted by capink View Post
I am not sure what you mean by cover based on custom column content. Anyway, check if this custom action does what you want (you need to copy paste it into the module editor). This action will extract the cover from the book.
I tried to implement a module from the custom action capnik mentioned, using the code to select the correct ebooks from the ones selected in the Library view. I also located the Calibre code behind the button I am clicking on manually: it is in https://github.com/kovidgoyal/calibr...dgets.py#L1228 on line 1135.

With this information, I wrote:
Code:
from calibre.ebooks.covers import generate_cover
from calibre.ebooks.metadata.meta import metadata_from_formats
from calibre_plugins.action_chains.actions.base import ChainAction

class CustomCover(ChainAction):

    # replace with the name of your action
    name = 'Custom cover'

    def run(self, gui, settings, chain):
        db = gui.current_db.new_api
        rows = gui.current_view().selectionModel().selectedRows()
        book_ids = [ gui.library_view.model().db.id(row.row()) for row in rows ]
        for book_id in book_ids:
            mi = metadata_from_formats(paths)              
            cdata_before_generate = current_val
            current_val = generate_cover(mi)
which does... nothing! Could someone point me in the good direction? (If it is too much of a request, let me know, I am not sure yet about the rules on this forum )

Thank you!
Hortensia is offline   Reply With Quote
Old 07-12-2021, 05:45 PM   #612
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,982
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
Quote:
Originally Posted by Hortensia View Post
I wrote it, or at least I wrote a module which delete the epub format without further prompting, leaving only the AZW3 format I wanted. Should I post the code here if it can be useful to someone?
If it can be easily modified, I would find it useful for deleting ORIGINAL_EPUBS on my generate + embed cover chain.
ownedbycats is offline   Reply With Quote
Old 07-12-2021, 05:55 PM   #613
Hortensia
Enthusiast
Hortensia began at the beginning.
 
Posts: 30
Karma: 10
Join Date: Jul 2021
Device: Kindle Paperwhite, Kobo Libra 2
Custom module to delete EPUB format

Quote:
Originally Posted by ownedbycats View Post
If it can be easily modified, I would find it useful for deleting ORIGINAL_EPUBS on my generate + embed cover chain.
The code is below. There is no confirmation before deleting the format. There is no check that it is not the only format. I run this module as part of a routine which always create both epub and azw3 formats. If the format to delete does not exist in some of the selected books, it is not problematic (at least as far as I could test).

You can delete another format by changing the line "fmt = 'YourFormat'"

Code:
from calibre.ebooks.metadata.meta import metadata_from_formats
from calibre_plugins.action_chains.actions.base import ChainAction

class DeleteEPUBFormat(ChainAction):

    name = 'Delete EPUB format'      

    def run(self, gui, settings, chain):
        db = gui.current_db.new_api
        rows = gui.current_view().selectionModel().selectedRows()
        book_ids = [ gui.library_view.model().db.id(row.row()) for row in rows ]
        fmt = 'epub'
        for book_id in book_ids:
            gui.library_view.model().db.remove_format(book_id, fmt, index_is_id=True, notify=False)
            gui.library_view.model().refresh_ids([book_id])
            gui.library_view.model().current_changed(gui.library_view.currentIndex(), gui.library_view.currentIndex())
            gui.tags_view.recount_with_position_based_index()
Hope it helps!
Hortensia is offline   Reply With Quote
Old 07-13-2021, 12:55 AM   #614
capink
Wizard
capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.capink ought to be getting tired of karma fortunes by now.
 
Posts: 1,196
Karma: 1995558
Join Date: Aug 2015
Device: Kindle
Quote:
Originally Posted by Hortensia View Post

which does... nothing! Could someone point me in the good direction? (If it is too much of a request, let me know, I am not sure yet about the rules on this forum )

Thank you!
I still don't know what you are trying to do with this action that cannot be done with the custom action I posted. Also in the code you posted current_val is referenced before assignment.
capink is offline   Reply With Quote
Old 07-13-2021, 02:43 AM   #615
Hortensia
Enthusiast
Hortensia began at the beginning.
 
Posts: 30
Karma: 10
Join Date: Jul 2021
Device: Kindle Paperwhite, Kobo Libra 2
Quote:
Originally Posted by capink View Post
I still don't know what you are trying to do with this action that cannot be done with the custom action I posted. Also in the code you posted current_val is referenced before assignment.
I am attaching an image for easier explaination: the custom action you refers to is equivalent to clicking on the option I framed in red (that is at least what I understand) while I want a custom action equivalent to clicking on the option I framed in blue.

With the custom action you suggest, I have a cover I do not want in the ebook and I set this cover as the ebook cover. I need to generate the cover.
Attached Thumbnails
Click image for larger version

Name:	Differeneces_between_custom_actions.png
Views:	567
Size:	45.6 KB
ID:	188157  
Hortensia is offline   Reply With Quote
Reply


Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
[Editor Plugin] Editor Chains capink Plugins 106 06-17-2025 05:36 PM
Action Chains Resources capink Plugins 77 06-16-2025 12:45 PM
[GUI Plugin] Noosfere_util, a companion plugin to noosfere DB lrpirlet Plugins 2 08-18-2022 03:15 PM
[GUI Plugin] Save Virtual Libraries To Column (GUI) chaley Plugins 14 04-04-2021 05:25 AM


All times are GMT -4. The time now is 09:47 AM.


MobileRead.com is a privately owned, operated and funded community.