Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-fanficfare for 
openSUSE:Factory checked in at 2022-10-25 11:20:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-fanficfare (Old)
 and      /work/SRC/openSUSE:Factory/.python-fanficfare.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-fanficfare"

Tue Oct 25 11:20:04 2022 rev:44 rq:1030937 version:4.17.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-fanficfare/python-fanficfare.changes      
2022-09-20 19:24:16.906594179 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-fanficfare.new.2275/python-fanficfare.changes
    2022-10-25 11:20:29.182200339 +0200
@@ -1,0 +2,15 @@
+Mon Oct 24 17:22:25 UTC 2022 - Matej Cepl <mc...@suse.com>
+
+- Update to 4.17.0:
+  - Update Translations
+  - Fix site name fanfiction.tenhawkpresents.ink
+  - Flaresolverr v3 beta using 'expiry' cookie key, was
+    'expires'.
+  - Flaresolverr v3 beta doesn't have 'headers'??
+  - adapter_adultfanfictionorg: Fixes for site changes.
+  - Disable Cancel during metadata update ProgBar.
+  - adapter_chosentwofanficcom: Site has several links to each
+    story in a series page.
+  - Fixes for add_category/genre_when_multi_category settings.
+
+-------------------------------------------------------------------

Old:
----
  FanFicFare-4.16.0.tar.gz
  _service
  _servicedata

New:
----
  FanFicFare-4.17.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-fanficfare.spec ++++++
--- /var/tmp/diff_new_pack.2Tct66/_old  2022-10-25 11:20:32.154206927 +0200
+++ /var/tmp/diff_new_pack.2Tct66/_new  2022-10-25 11:20:32.162206944 +0200
@@ -21,14 +21,13 @@
 %define skip_python2 1
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-fanficfare
-Version:        4.16.0
+Version:        4.17.0
 Release:        0
 Summary:        Tool for making eBooks from stories on fanfiction and other 
web sites
 License:        GPL-3.0-only
 Group:          Development/Languages/Python
 URL:            https://github.com/JimmXinu/FanFicFare
 Source:         
https://github.com/JimmXinu/%{modname}/archive/v%{version}/%{modname}-%{version}.tar.gz
-# Source:         %%{modname}-%%{version}.tar.gz
 BuildRequires:  %{python_module beautifulsoup4}
 BuildRequires:  %{python_module chardet}
 BuildRequires:  %{python_module cloudscraper}
@@ -93,6 +92,7 @@
 %license LICENSE
 %doc DESCRIPTION.rst README.md
 %python_alternative %{_bindir}/%{modnamedown}
-%{python_sitelib}/*
+%{python_sitelib}/%{modname}-%{version}*-info
+%{python_sitelib}/%{modnamedown}
 
 %changelog

++++++ FanFicFare-4.16.0.tar.gz -> FanFicFare-4.17.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/__init__.py 
new/FanFicFare-4.17.0/calibre-plugin/__init__.py
--- old/FanFicFare-4.16.0/calibre-plugin/__init__.py    2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/__init__.py    2022-10-18 
18:47:27.000000000 +0200
@@ -33,7 +33,7 @@
 from calibre.customize import InterfaceActionBase
 
 # pulled out from FanFicFareBase for saving in prefs.py
-__version__ = (4, 16, 0)
+__version__ = (4, 17, 0)
 
 ## Apparently the name for this class doesn't matter--it was still
 ## 'demo' for the first few versions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/dialogs.py 
new/FanFicFare-4.17.0/calibre-plugin/dialogs.py
--- old/FanFicFare-4.16.0/calibre-plugin/dialogs.py     2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/dialogs.py     2022-10-18 
18:47:27.000000000 +0200
@@ -634,13 +634,15 @@
                        finish_function,
                        init_label=_("Fetching metadata for stories..."),
                        win_title=_("Downloading metadata for stories"),
-                       status_prefix=_("Fetched metadata for")):
+                       status_prefix=_("Fetched metadata for"),
+                       disable_cancel=False):
     ld = _LoopProgressDialog(gui,
                              book_list,
                              foreach_function,
                              init_label,
                              win_title,
-                             status_prefix)
+                             status_prefix,
+                             disable_cancel)
 
     # Mac OS X gets upset if the finish_function is called from inside
     # the real _LoopProgressDialog class.
@@ -658,7 +660,8 @@
                  foreach_function,
                  init_label=_("Fetching metadata for stories..."),
                  win_title=_("Downloading metadata for stories"),
-                 status_prefix=_("Fetched metadata for")):
+                 status_prefix=_("Fetched metadata for"),
+                 disable_cancel=False):
         QProgressDialog.__init__(self,
                                  init_label,
                                  _('Cancel'), 0, len(book_list), gui)
@@ -677,6 +680,11 @@
         self.setLabelText('%s %d / %d' % (self.status_prefix, self.i, 
len(self.book_list)))
         self.setValue(self.i)
 
+        if disable_cancel:
+            self.setCancelButton(None)
+            self.reject = self.disabled_reject
+            self.closeEvent = self.disabled_closeEvent
+
         ## self.do_loop does QTimer.singleShot on self.do_loop also.
         ## A weird way to do a loop, but that was the example I had.
         ## 100 instead of 0 on the first go due to Win10(and later
@@ -684,6 +692,15 @@
         QTimer.singleShot(100, self.do_loop)
         self.exec_()
 
+    # used when disable_cancel = True
+    def disabled_reject(self):
+        pass
+
+    # used when disable_cancel = True
+    def disabled_closeEvent(self, event):
+        if event.spontaneous():
+            event.ignore()
+
     def updateStatus(self):
         remaining_time_string = ''
         if self.show_est_time and self.i > -1:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/fff_plugin.py 
new/FanFicFare-4.17.0/calibre-plugin/fff_plugin.py
--- old/FanFicFare-4.16.0/calibre-plugin/fff_plugin.py  2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/fff_plugin.py  2022-10-18 
18:47:27.000000000 +0200
@@ -2139,7 +2139,8 @@
                                partial(self.update_books_finish, 
options=options),
                                init_label=_("Updating calibre for FanFiction 
stories..."),
                                win_title=_("Update calibre for FanFiction 
stories"),
-                               status_prefix=_("Updated"))
+                               status_prefix=_("Updated"),
+                               disable_cancel=True)
 
     def update_error_column(self,payload):
         '''Update custom error column if configured.'''
@@ -2155,7 +2156,8 @@
                                partial(self.update_books_finish, 
options=options),
                                init_label=_("Updating calibre for BAD 
FanFiction stories..."),
                                win_title=_("Update calibre for BAD FanFiction 
stories"),
-                               status_prefix=_("Updated"))
+                               status_prefix=_("Updated"),
+                               disable_cancel=True)
 
     def 
update_error_column_loop(self,book,db=None,errorcol_label=None,lastcheckedcol_label=None):
         if book['calibre_id'] and errorcol_label:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/plugin-defaults.ini 
new/FanFicFare-4.17.0/calibre-plugin/plugin-defaults.ini
--- old/FanFicFare-4.16.0/calibre-plugin/plugin-defaults.ini    2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/plugin-defaults.ini    2022-10-18 
18:47:27.000000000 +0200
@@ -1761,7 +1761,7 @@
 
 website_encodings:Windows-1252,utf8
 
-[fanfic.tenhawkpresents.ink]
+[fanfiction.tenhawkpresents.ink]
 use_basic_cache:true
 ## Some sites require login (or login for some rated stories) The
 ## program can prompt you, or you can save it in config.  In
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/translations/de.po 
new/FanFicFare-4.17.0/calibre-plugin/translations/de.po
--- old/FanFicFare-4.16.0/calibre-plugin/translations/de.po     2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/translations/de.po     2022-10-18 
18:47:27.000000000 +0200
@@ -2,6 +2,7 @@
 # Copyright (C) YEAR ORGANIZATION
 # 
 # Translators:
+# Dustin Steiner, 2022
 # Ettore Atalan <atalantt...@googlemail.com>, 2014-2016,2018,2020
 # ILB, 2014-2017,2020-2022
 # Johannes Sch??pp <m...@jschpp.de>, 2020
@@ -18,7 +19,7 @@
 "Project-Id-Version: calibre-plugins\n"
 "POT-Creation-Date: 2022-07-06 11:14-0500\n"
 "PO-Revision-Date: 2014-06-19 22:55+0000\n"
-"Last-Translator: ILB, 2014-2017,2020-2022\n"
+"Last-Translator: Dustin Steiner, 2022\n"
 "Language-Team: German 
(http://www.transifex.com/calibre/calibre-plugins/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -1572,7 +1573,7 @@
 
 #: dialogs.py:1036
 msgid "Are you sure you want to remove the selected %d books from the list?"
-msgstr "Sind sie sicher, dass sie die ausgew??hlten B??cher von der Liste 
l??schen wollen?"
+msgstr "Sind Sie sicher, dass Sie die %d ausgew??hlten B??cher von der Liste 
l??schen wollen?"
 
 #: dialogs.py:1062
 msgid "Note"
@@ -1588,7 +1589,7 @@
 
 #: dialogs.py:1112
 msgid "Are you sure you want to remove the %d selected URLs from the list?"
-msgstr "Sind sie sicher, dass sie die %d ausgew??hlten URLs von der Liste 
l??schen m??chten?"
+msgstr "Sind Sie sicher, dass Sie die %d ausgew??hlten URLs von der Liste 
l??schen m??chten?"
 
 #: dialogs.py:1130
 msgid "List of Books to Reject"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/translations/ko.po 
new/FanFicFare-4.17.0/calibre-plugin/translations/ko.po
--- old/FanFicFare-4.16.0/calibre-plugin/translations/ko.po     2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/translations/ko.po     2022-10-18 
18:47:27.000000000 +0200
@@ -2,14 +2,14 @@
 # Copyright (C) YEAR ORGANIZATION
 # 
 # Translators:
-# Junghee Lee <daemu...@gmail.com>, 2022
-# Junghee Lee <daemu...@gmail.com>, 2021
+# JungHee Lee <daemu...@gmail.com>, 2022
+# JungHee Lee <daemu...@gmail.com>, 2021
 msgid ""
 msgstr ""
 "Project-Id-Version: calibre-plugins\n"
 "POT-Creation-Date: 2022-07-06 11:14-0500\n"
 "PO-Revision-Date: 2014-06-19 22:55+0000\n"
-"Last-Translator: Junghee Lee <daemu...@gmail.com>, 2022\n"
+"Last-Translator: JungHee Lee <daemu...@gmail.com>, 2022\n"
 "Language-Team: Korean 
(http://www.transifex.com/calibre/calibre-plugins/language/ko/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/translations/pl.po 
new/FanFicFare-4.17.0/calibre-plugin/translations/pl.po
--- old/FanFicFare-4.16.0/calibre-plugin/translations/pl.po     2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/translations/pl.po     2022-10-18 
18:47:27.000000000 +0200
@@ -6,12 +6,13 @@
 # Marcin Kozio?? <koziol.mar...@gmail.com>, 2019-2020
 # Ola Kleniewska <anyzekl...@gmail.com>, 2016
 # Piotr Str??bski <streb...@gmail.com>, 2015
+# The Name <moje.konto+transi...@posteo.org>, 2022
 msgid ""
 msgstr ""
 "Project-Id-Version: calibre-plugins\n"
 "POT-Creation-Date: 2022-07-06 11:14-0500\n"
 "PO-Revision-Date: 2014-06-19 22:55+0000\n"
-"Last-Translator: Marcin Kozio?? <koziol.mar...@gmail.com>, 2019-2020\n"
+"Last-Translator: The Name <moje.konto+transi...@posteo.org>, 2022\n"
 "Language-Team: Polish 
(http://www.transifex.com/calibre/calibre-plugins/language/pl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -307,7 +308,7 @@
 
 #: config.py:563
 msgid "Success"
-msgstr ""
+msgstr "Sukces"
 
 #: config.py:564
 msgid "Mark successfully downloaded or updated books."
@@ -315,7 +316,7 @@
 
 #: config.py:569
 msgid "Failed"
-msgstr ""
+msgstr "Nie powiod??o si??"
 
 #: config.py:570
 msgid "Mark failed downloaded or updated books."
@@ -323,7 +324,7 @@
 
 #: config.py:575
 msgid "Chapter Error"
-msgstr ""
+msgstr "B????d Rozdzia??u"
 
 #: config.py:576
 msgid ""
@@ -1824,7 +1825,7 @@
 #: fff_plugin.py:614 fff_plugin.py:1960 fff_plugin.py:2584 fff_plugin.py:2596
 #: fff_plugin.py:2607 fff_plugin.py:2613 fff_plugin.py:2626
 msgid "Warning"
-msgstr ""
+msgstr "Ostrze??enie"
 
 #: fff_plugin.py:622
 msgid "(%d Story URLs Skipped, on Rejected URL List)"
@@ -2231,7 +2232,7 @@
 
 #: fff_plugin.py:1788
 msgid "Info"
-msgstr ""
+msgstr "Informacja"
 
 #: fff_plugin.py:1830
 msgid "Story Details:"
@@ -2271,7 +2272,7 @@
 
 #: fff_plugin.py:1964
 msgid "FanFicFare: "
-msgstr ""
+msgstr "FanFicFare:"
 
 #: fff_plugin.py:1964
 msgid "No Good Stories for Anthology"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/calibre-plugin/translations/uk.po 
new/FanFicFare-4.17.0/calibre-plugin/translations/uk.po
--- old/FanFicFare-4.16.0/calibre-plugin/translations/uk.po     2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/calibre-plugin/translations/uk.po     2022-10-18 
18:47:27.000000000 +0200
@@ -32,11 +32,11 @@
 
 #: common_utils.py:250
 msgid "Keyboard shortcuts"
-msgstr "?????????????????????? ???????????? ??????????????"
+msgstr "?????????????????????? ????????????????????"
 
 #: common_utils.py:279
 msgid "Prefs Viewer dialog"
-msgstr "???????????????????????? ?????????? ??????????????????"
+msgstr "?????????? ?????????????????? ??????????????????????"
 
 #: common_utils.py:280
 msgid "Preferences for: "
@@ -48,7 +48,7 @@
 
 #: common_utils.py:313
 msgid "Clear all settings for this plugin"
-msgstr "???????????????? ?????? ???????????????????????? ?????? ?????????? 
??????????????"
+msgstr "???????????????? ?????? ???????????????????????? ?????? ?????????? 
??????????????"
 
 #: common_utils.py:317
 msgid "Edit"
@@ -84,11 +84,11 @@
 msgid ""
 "Any settings in other libraries or stored in a JSON file in your calibre "
 "plugins folder will not be touched."
-msgstr "????????-?????? ???????????????????????? ?? ?????????? 
??????????????????????, ?????? ?????????????????? ?? ?????????? JSON ?? 
?????????? ?????????? ???????????????? ???? ???????????? ??????????????."
+msgstr "????????-?????? ???????????????????????? ?? ?????????? 
?????????????????????? ?????? ?????????????????? ?? ?????????? JSON ?? 
?????????? ???????? ???????????????? calibre ???? ???????????? ??????????????."
 
 #: common_utils.py:363 common_utils.py:391
 msgid "You must restart calibre afterwards."
-msgstr "?????????? ?????????? ???? ?????????????? 
?????????????????????????????? Calibre."
+msgstr "?????????? ?????????? ???? ?????????????? 
?????????????????????????????? calibre."
 
 #: common_utils.py:371
 msgid "All settings for this plugin in this library have been saved."
@@ -96,21 +96,21 @@
 
 #: common_utils.py:372 common_utils.py:401
 msgid "Please restart calibre now."
-msgstr "????????-?????????? ???????????????????????????? Calibre."
+msgstr "???????? ?????????? ???????????????????????????? Calibre."
 
 #: common_utils.py:374 common_utils.py:403
 msgid "Restart calibre now"
-msgstr "?????????????????????????????? Calibre"
+msgstr "?????????????????????????????? calibre"
 
 #: common_utils.py:389
 msgid ""
 "Are you sure you want to clear your settings in this library for this "
 "plugin?"
-msgstr "???? ????????????????, ???? ?????????????? ???????????????? ???????? 
???????????????????????? ?? ?????? ?????????????????????? ?????? ???????????? 
???????????????"
+msgstr "???? ????????????????, ???? ?????????????? ???????????????? ???????? 
???????????????????????? ?? ?????? ???????????????????? ?????? ?????????? 
???????????????"
 
 #: common_utils.py:400
 msgid "All settings for this plugin in this library have been cleared."
-msgstr "?????? ???????????????????????? ?????? ?????????? ?????????????? ?? 
?????? ???????????????????? ???????? ??????????????."
+msgstr "?????? ???????????????????????? ?????? ?????????? ?????????????? ?? 
?????? ???????????????????? ???????? ??????????????."
 
 #: config.py:225
 msgid "List of Supported Sites"
@@ -138,7 +138,7 @@
 
 #: config.py:267
 msgid "Email Settings"
-msgstr "???????????????????????? ??????????"
+msgstr "?????????????????? ??????????"
 
 #: config.py:270
 msgid "Other"
@@ -250,7 +250,7 @@
 
 #: config.py:516 config.py:688
 msgid "Reject Without Confirmation?"
-msgstr "?????????????????? ?????? ??????????????????????????"
+msgstr "?????????????????? ?????? ???????????????????????????"
 
 #: config.py:517
 msgid ""
@@ -365,7 +365,7 @@
 
 #: config.py:616
 msgid "Automatically Convert new/update books?"
-msgstr "?????????????????????? ???????????????????????? 
????????/?????????????????? ?????????????"
+msgstr "?????????????????????? ?????????????????????????? 
????????/???????????????? ???????????"
 
 #: config.py:617
 msgid ""
@@ -380,11 +380,11 @@
 
 #: config.py:625
 msgid "Take URLs from Clipboard?"
-msgstr "???????????????????? URL-???????????? ?? ???????????? ?????????????"
+msgstr "???????????????????? ???????????? ?? ???????????? ?????????????"
 
 #: config.py:626
 msgid "Prefill URLs from valid URLs in Clipboard when Adding New."
-msgstr "?????????????????? ???????????????????? URL-?????????? ?? 
?????????????? URL-?????????? ?? ???????????? ???????????? ?????? 
?????????????????? ??????????."
+msgstr "?????????????????? ???????????????????? ?????????? ?? 
?????????????????? ?????????? ?? ???????????? ???????????? ?????? 
?????????????????? ??????????."
 
 #: config.py:630
 msgid "FanFicFare button opens menu?"
@@ -398,7 +398,7 @@
 
 #: config.py:635
 msgid "Default to Update when books selected?"
-msgstr "???? ?????????????????????????? ????????????????, ???????? ?????????? 
?????????????"
+msgstr "???????????? ????????????????????, ???????? ?????????? 
???????????????????"
 
 #: config.py:636
 msgid ""
@@ -451,11 +451,11 @@
 
 #: config.py:669
 msgid "Reject List"
-msgstr "???????????? ??????????????????????"
+msgstr "???????????? ????????????????????"
 
 #: config.py:673
 msgid "Edit Reject URL List"
-msgstr "?????????????????????????? ???????????? ???????????????????? 
????????????????"
+msgstr "?????????????? ???????????? ??????????, ?????? ???????? 
??????????????????"
 
 #: config.py:674
 msgid "Edit list of URLs FanFicFare will automatically Reject."
@@ -463,15 +463,15 @@
 
 #: config.py:678 config.py:757
 msgid "Add Reject URLs"
-msgstr "???????????? ?????????????????? ??????????????????"
+msgstr "???????????? ???????????? ????????????????????"
 
 #: config.py:679
 msgid "Add additional URLs to Reject as text."
-msgstr "???????????? ?????????????????? ?????????????????? ???? ??????????, 
?????? ???????????????? ?????????????????? "
+msgstr "???????????? ?????????????????? ???????????? ?????? 
???????????????????? ???? ??????????."
 
 #: config.py:683
 msgid "Edit Reject Reasons List"
-msgstr "?????????????????????????? ???????????? ???????????? ?????? 
????????????????????"
+msgstr "?????????????? ???????????? ???????????? ?????? ????????????????????"
 
 #: config.py:684 config.py:747
 msgid "Customize the Reasons presented when Rejecting URLs"
@@ -491,7 +491,7 @@
 
 #: config.py:732
 msgid "Edit Reject URLs List"
-msgstr "?????????????????????????? ???????????? ???????????????????? 
????????????????"
+msgstr "?????????????? ???????????? ?????????? 
????????????????????????????????????"
 
 #: config.py:745
 msgid "Reject Reasons"
@@ -603,11 +603,11 @@
 
 #: config.py:873
 msgid "Plugin Defaults"
-msgstr "???????????? ???????????????????????? ??????????????"
+msgstr "???????????? ???????????????????????? ??????????????"
 
 #: config.py:874
 msgid "Plugin Defaults (%s) (Read-Only)"
-msgstr "???????????? ???????????????????????? ?????????????? (%s) 
(???????????? ????????????????????)"
+msgstr "???????????? ???????????????????????? ?????????????? (%s) (???????? 
??????????????)"
 
 #: config.py:885
 msgid "View 'Safe' personal.ini"
@@ -1113,13 +1113,13 @@
 
 #: config.py:1565
 msgid "Force Title into Title Sort?"
-msgstr "?????????????????? ???????????????????????? ???????????????? 
?????????? ?? ?????????????????????????? ?????????"
+msgstr "?????????????????? ???????????????????????? ?????????? ?????? 
?????????????????????????? ???? ???????????????"
 
 #: config.py:1566
 msgid ""
 "If checked, the title as given will be used for the Title Sort, too.\n"
 "If not checked, calibre will apply it's built in algorithm which makes 'The 
Title' sort as 'Title, The', etc."
-msgstr "???????? ?????????????????? ????????????????????????, ?????????? 
?????????? ???????? ?????????????????????????????????? ?????? 
?????????????????????????? ????????.\n???????? ???? ??????????????????????, 
calibre ???????? ?????????????????????????? ???????????????????? ?? ?????????? 
????????????????, ???????? ???????????? ?????????? 'The Title', ???? 'Title, 
The' ?? ??.??."
+msgstr "???????? ?????????????????? ????????????????????????, ?????????? 
?????????? ???????? ?????????????????????????????????? ?????? 
?????????????????????????? ???? ??????????????.\n???????? ???? 
??????????????????????, calibre ???????? ?????????????????????????? 
???????????????????? ?? ?????????? ????????????????, ???????? 
???????????????????? ?????????? ??The Title?? ???? ??Title, The?? ????????."
 
 #: config.py:1569
 msgid "Fix Title Case?"
@@ -2417,7 +2417,7 @@
 
 #: jobs.py:85
 msgid "Downloading FanFiction Stories"
-msgstr "???????????????????????? FanFiction ??????????????"
+msgstr "???????????????????????? ?????????????????? FanFiction"
 
 #: jobs.py:105
 msgid "%(count)d of %(total)d stories finished downloading"
@@ -2462,7 +2462,7 @@
 
 #: prefs.py:27
 msgid "Add New Book"
-msgstr "???????????? ???????? ??????????"
+msgstr "???????????? ???????? ??????????"
 
 #: prefs.py:28
 msgid "Update EPUB if New Chapters"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/FanFicFare-4.16.0/fanficfare/adapters/adapter_adultfanfictionorg.py 
new/FanFicFare-4.17.0/fanficfare/adapters/adapter_adultfanfictionorg.py
--- old/FanFicFare-4.16.0/fanficfare/adapters/adapter_adultfanfictionorg.py     
2022-09-19 19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/fanficfare/adapters/adapter_adultfanfictionorg.py     
2022-10-18 18:47:27.000000000 +0200
@@ -258,18 +258,23 @@
 
             asoup = self.make_soup(adata)
 
-            ##Getting the number of pages
-            pages=asoup.find('div',{'class' : 
'pagination'}).findAll('li')[-1].find('a')
-            if not pages == None:
-                pages = pages['href'].split('=')[-1]
-            else:
-                pages = 0
+            ##Getting the number of author pages
+            pages = 0
+            pagination=asoup.find('ul',{'class' : 'pagination'})
+            if pagination:
+                pages = pagination.findAll('li')[-1].find('a')
+                if not pages == None:
+                    pages = pages['href'].split('=')[-1]
+                else:
+                    pages = 0
 
+            storya = None
             ##If there is only 1 page of stories, check it to get the Metadata,
             if pages == 0:
                 a = asoup.findAll('li')
                 for lc2 in a:
                     if lc2.find('a', 
href=re.compile(r'story.php\?no='+self.story.getMetadata('storyId')+"$")):
+                        storya = lc2
                         break
             ## otherwise go through the pages
             else:
@@ -293,6 +298,7 @@
                     for lc2 in a:
                         if lc2.find('a', 
href=re.compile(r'story.php\?no='+self.story.getMetadata('storyId')+"$")):
                             i=1
+                            storya = lc2
                             break
                     page = page + 1
                     if page > int(pages):
@@ -305,14 +311,14 @@
             ##There is also a double <br/>, so we have to fix that, then 
remove the leading and trailing '-:-'.
             ##They are always in the same order.
             ## EDIT 09/26/2016: Had some trouble with unicode errors... so I 
had to put in the decode/encode parts to fix it
-            liMetadata = 
unicode(lc2).replace('\n','').replace('\r','').replace('\t',' ').replace('  ',' 
').replace('  ',' ').replace('  ',' ')
+            liMetadata = 
unicode(storya).replace('\n','').replace('\r','').replace('\t',' ').replace('  
',' ').replace('  ',' ').replace('  ',' ')
             liMetadata = 
stripHTML(liMetadata.replace(r'<br/>','-:-').replace('<!-- <br /-->','-:-'))
             liMetadata = liMetadata.strip('-:-').strip('-:-').encode('utf-8')
             for i, value in enumerate(liMetadata.decode('utf-8').split('-:-')):
                 if i == 0:
                     # The value for the title has been manipulated, so may not 
be the same as gotten at the start.
-                    # I'm going to use the href from the lc2 retrieved from 
the author's page to determine if it is correct.
-                    if lc2.find('a', 
href=re.compile(r'story.php\?no='+self.story.getMetadata('storyId')+"$"))['href']
 != url:
+                    # I'm going to use the href from the storya retrieved from 
the author's page to determine if it is correct.
+                    if storya.find('a', 
href=re.compile(r'story.php\?no='+self.story.getMetadata('storyId')+"$"))['href']
 != url:
                         raise exceptions.StoryDoesNotExist('Did not find story 
in author story list: {0}'.format(author_Url))
                 elif i == 1:
                     ##Get the description
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/FanFicFare-4.16.0/fanficfare/adapters/adapter_chosentwofanficcom.py 
new/FanFicFare-4.17.0/fanficfare/adapters/adapter_chosentwofanficcom.py
--- old/FanFicFare-4.16.0/fanficfare/adapters/adapter_chosentwofanficcom.py     
2022-09-19 19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/fanficfare/adapters/adapter_chosentwofanficcom.py     
2022-10-18 18:47:27.000000000 +0200
@@ -199,9 +199,9 @@
             storyas = seriessoup.findAll('a', 
href=re.compile(r'viewstory.php\?sid=\d+'))
             i=1
             for a in storyas:
-                # skip 'report this' and 'TOC' links
-                if 'contact.php' not in a['href'] and 'index' not in a['href']:
-                    if a['href'] == 
('viewstory.php?sid='+self.story.getMetadata('storyId')):
+                # this site has several links to each story.
+                if a.text == 'Latest Chapter':
+                    if 
('viewstory.php?sid='+self.story.getMetadata('storyId')) in a['href']:
                         self.setSeries(series_name, i)
                         self.story.setMetadata('seriesUrl',series_url)
                         break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/FanFicFare-4.16.0/fanficfare/adapters/adapter_tenhawkpresents.py 
new/FanFicFare-4.17.0/fanficfare/adapters/adapter_tenhawkpresents.py
--- old/FanFicFare-4.16.0/fanficfare/adapters/adapter_tenhawkpresents.py        
2022-09-19 19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/fanficfare/adapters/adapter_tenhawkpresents.py        
2022-10-18 18:47:27.000000000 +0200
@@ -48,7 +48,7 @@
 
     @staticmethod
     def getSiteDomain():
-        return 'fanfic.tenhawkpresents.ink'
+        return 'fanfiction.tenhawkpresents.ink'
 
     @classmethod
     def getSiteExampleURLs(cls):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/fanficfare/cli.py 
new/FanFicFare-4.17.0/fanficfare/cli.py
--- old/FanFicFare-4.16.0/fanficfare/cli.py     2022-09-19 19:20:42.000000000 
+0200
+++ new/FanFicFare-4.17.0/fanficfare/cli.py     2022-10-18 18:47:27.000000000 
+0200
@@ -28,7 +28,7 @@
 import os, sys, platform
 
 
-version="4.16.0"
+version="4.17.0"
 os.environ['CURRENT_VERSION_ID']=version
 
 global_cache = 'global_cache'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/fanficfare/defaults.ini 
new/FanFicFare-4.17.0/fanficfare/defaults.ini
--- old/FanFicFare-4.16.0/fanficfare/defaults.ini       2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/fanficfare/defaults.ini       2022-10-18 
18:47:27.000000000 +0200
@@ -1782,7 +1782,7 @@
 
 website_encodings:Windows-1252,utf8
 
-[fanfic.tenhawkpresents.ink]
+[fanfiction.tenhawkpresents.ink]
 use_basic_cache:true
 ## Some sites require login (or login for some rated stories) The
 ## program can prompt you, or you can save it in config.  In
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/fanficfare/flaresolverr_proxy.py 
new/FanFicFare-4.17.0/fanficfare/flaresolverr_proxy.py
--- old/FanFicFare-4.16.0/fanficfare/flaresolverr_proxy.py      2022-09-19 
19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/fanficfare/flaresolverr_proxy.py      2022-10-18 
18:47:27.000000000 +0200
@@ -131,7 +131,9 @@
             if data is None:
                 # Without download (or with FlareSolverr v2), don't
                 # need base64 decode, and image downloads won't work.
-                if 'image' in resp.json['solution']['headers']['content-type']:
+                if 'headers' in resp.json['solution'] and \
+                        'content-type' in resp.json['solution']['headers'] and 
\
+                        'image' in 
resp.json['solution']['headers']['content-type']:
                     raise exceptions.HTTPErrorFFF(
                         url,
                         428, # 404 & 410 trip StoryDoesNotExist
@@ -183,12 +185,13 @@
         ## 30000000000 == 2920-08-30 05:20:00.  If 900 years isn't
         ## enough, somebody can fix it then.
         ## (current global_cookie/
-        # logger.debug(c['expires'])
-        if c['expires'] > 30000000000:
-            c['expires'] = 30000000000
+        expireKey = 'expires' if 'expires' in c else 'expiry'
+        logger.debug("expireKey:%s"%expireKey)
+        if c[expireKey] > 30000000000:
+            c[expireKey] = 30000000000
             # logger.debug(c['name'])
             # import datetime
-            # logger.debug(datetime.datetime.utcfromtimestamp(c['expires']))
+            # logger.debug(datetime.datetime.utcfromtimestamp(c[expireKey]))
 
         retval.append(Cookie(0, # version
                              c['name'],
@@ -201,8 +204,8 @@
                              c['path'],
                              c['path'] == None or c['path'] == '', # 
path_specified,
                              c['secure'],
-                             c['expires'],
-                             c['expires'] == -1, # discard
+                             c[expireKey],
+                             c[expireKey] == -1, # discard
                              None, # comment,
                              None, # comment_url,
                              {}, # rest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/fanficfare/story.py 
new/FanFicFare-4.17.0/fanficfare/story.py
--- old/FanFicFare-4.16.0/fanficfare/story.py   2022-09-19 19:20:42.000000000 
+0200
+++ new/FanFicFare-4.17.0/fanficfare/story.py   2022-10-18 18:47:27.000000000 
+0200
@@ -1079,14 +1079,16 @@
             ## there's more than one category value.  Does not work
             ## consistently well if you try to include_in_ chain genre
             ## back into category--breaks with fandoms sites like AO3
-            if listname == 'genre' and 
self.getConfig('add_genre_when_multi_category') and len(self.getList('category',
-                                                                               
                             removeallentities=False,
-                                                                               
                             # to avoid inf loops if genre/cat substs
-                                                                               
                             includelist=includelist+[listname],
-                                                                               
                             doreplacements=False,
-                                                                               
                             skip_cache=True,
-                                                                               
                             seen_list=seen_list
-                                                                               
                             )) > 1:
+            if( listname == 'genre' and 
self.getConfig('add_genre_when_multi_category')
+                and len(self.getList('category',
+                                     removeallentities=False,
+                                     # to avoid inf loops if genre/cat substs
+                                     includelist=includelist+[listname],
+                                     doreplacements=False,
+                                     skip_cache=True,
+                                     seen_list=seen_list
+                                     )) > 1
+                and self.getConfig('add_genre_when_multi_category') not in 
retlist ):
                 retlist.append(self.getConfig('add_genre_when_multi_category'))
 
             if retlist:
@@ -1111,15 +1113,24 @@
                     # remove dups and sort.
                     retlist = sorted(list(set(retlist)))
 
-                    ## Add value of add_genre_when_multi_category to
-                    ## category if there's more than one category
-                    ## value (before this, obviously).  Applied
-                    ## *after* doReplacements.  For normalization
-                    ## crusaders who want Crossover as a category
-                    ## instead of genre.  Moved after dedup'ing so
-                    ## consolidated category values don't count.
-                    if listname == 'category' and 
self.getConfig('add_category_when_multi_category') and len(retlist) > 1:
-                        
retlist.append(self.getConfig('add_category_when_multi_category'))
+                ## Add value of add_genre_when_multi_category to
+                ## category if there's more than one category
+                ## value (before this, obviously).  Applied
+                ## *after* doReplacements.  For normalization
+                ## crusaders who want Crossover as a category
+                ## instead of genre.  Moved after dedup'ing so
+                ## consolidated category values don't count.
+                if( listname == 'category'
+                    and self.getConfig('add_category_when_multi_category')
+                    and len(retlist) > 1
+                    and self.getConfig('add_category_when_multi_category') not 
in retlist ):
+                    
retlist.append(self.getConfig('add_category_when_multi_category'))
+                    ## same sort as above, but has to be after due to
+                    ## changing list. unique filter not needed: 'not
+                    ## in retlist' check
+                    if not (listname in ('author','authorUrl','authorId') or 
self.getConfig('keep_in_order_'+listname)):
+                        retlist = sorted(list(set(retlist)))
+
             else:
                 retlist = []
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/FanFicFare-4.16.0/setup.py 
new/FanFicFare-4.17.0/setup.py
--- old/FanFicFare-4.16.0/setup.py      2022-09-19 19:20:42.000000000 +0200
+++ new/FanFicFare-4.17.0/setup.py      2022-10-18 18:47:27.000000000 +0200
@@ -26,7 +26,7 @@
     name=package_name,
 
     # Versions should comply with PEP440.
-    version="4.16.0",
+    version="4.17.0",
 
     description='A tool for downloading fanfiction to eBook formats',
     long_description=long_description,

Reply via email to