Added some setting for clearing cache and tuning the issue identifier
git-svn-id: http://comictagger.googlecode.com/svn/trunk@68 6c5673fe-1810-88d6-992b-cd32ca31540c
This commit is contained in:
parent
da74046eb6
commit
8e32f3c755
@ -25,15 +25,20 @@ import sys
|
||||
import os
|
||||
import datetime
|
||||
|
||||
from settings import ComicTaggerSettings
|
||||
|
||||
class ComicVineCacher:
|
||||
|
||||
def __init__(self, settings_folder ):
|
||||
self.settings_folder = settings_folder
|
||||
def __init__(self ):
|
||||
self.settings_folder = ComicTaggerSettings.getSettingsFolder()
|
||||
self.db_file = os.path.join( self.settings_folder, "cv_cache.db")
|
||||
|
||||
if not os.path.exists( self.db_file ):
|
||||
self.create_cache_db()
|
||||
|
||||
def clearCache( self ):
|
||||
os.unlink( self.db_file )
|
||||
|
||||
def create_cache_db( self ):
|
||||
|
||||
# this will wipe out any existing version
|
||||
|
@ -62,7 +62,7 @@ class ComicVineTalker(QObject):
|
||||
|
||||
# before we search online, look in our cache, since we might have
|
||||
# done this same search recently
|
||||
cvc = ComicVineCacher( ComicTaggerSettings.getSettingsFolder() )
|
||||
cvc = ComicVineCacher( )
|
||||
if not refresh_cache:
|
||||
cached_search_results = cvc.get_search_results( series_name )
|
||||
|
||||
@ -134,7 +134,7 @@ class ComicVineTalker(QObject):
|
||||
|
||||
# before we search online, look in our cache, since we might already
|
||||
# have this info
|
||||
cvc = ComicVineCacher( ComicTaggerSettings.getSettingsFolder() )
|
||||
cvc = ComicVineCacher( )
|
||||
cached_volume_result = cvc.get_volume_info( series_id )
|
||||
|
||||
if cached_volume_result is not None:
|
||||
@ -284,11 +284,11 @@ class ComicVineTalker(QObject):
|
||||
|
||||
# before we search online, look in our cache, since we might already
|
||||
# have this info
|
||||
cvc = ComicVineCacher( ComicTaggerSettings.getSettingsFolder() )
|
||||
cvc = ComicVineCacher( )
|
||||
return cvc.get_issue_select_details( issue_id )
|
||||
|
||||
def cacheIssueSelectDetails( self, issue_id, image_url, thumb_url, month, year ):
|
||||
cvc = ComicVineCacher( ComicTaggerSettings.getSettingsFolder() )
|
||||
cvc = ComicVineCacher( )
|
||||
cvc.add_issue_select_details( issue_id, image_url, thumb_url, month, year )
|
||||
|
||||
|
||||
|
@ -46,6 +46,12 @@ class ImageFetcher(QObject):
|
||||
if not os.path.exists( self.db_file ):
|
||||
self.create_image_db()
|
||||
|
||||
def clearCache( self ):
|
||||
os.unlink( self.db_file )
|
||||
if os.path.isdir( self.cache_folder ):
|
||||
shutil.rmtree( self.cache_folder )
|
||||
|
||||
|
||||
def fetch( self, url, user_data=None, blocking=False ):
|
||||
"""
|
||||
If called with blocking=True, this will block until the image is
|
||||
|
@ -42,7 +42,7 @@ class IssueIdentifier:
|
||||
ResultOneGoodMatch = 4
|
||||
ResultMultipleGoodMatches = 5
|
||||
|
||||
def __init__(self, comic_archive, cv_api_key ):
|
||||
def __init__(self, comic_archive, settings ):
|
||||
self.comic_archive = comic_archive
|
||||
self.image_hasher = 1
|
||||
|
||||
@ -58,13 +58,13 @@ class IssueIdentifier:
|
||||
self.strong_score_thresh = 8
|
||||
|
||||
# used to eliminate series names that are too long based on our search string
|
||||
self.length_delta_thresh = 5
|
||||
self.length_delta_thresh = settings.id_length_delta_thresh
|
||||
|
||||
# used to eliminate unlikely publishers
|
||||
self.publisher_blacklist = [ 'panini comics', 'abril', 'scholastic book services' ]
|
||||
#self.publisher_blacklist = [ 'panini comics', 'abril', 'scholastic book services' ]
|
||||
self.publisher_blacklist = [ s.strip().lower() for s in settings.id_publisher_blacklist.split(',') ]
|
||||
|
||||
self.additional_metadata = GenericMetadata()
|
||||
self.cv_api_key = cv_api_key
|
||||
self.output_function = IssueIdentifier.defaultWriteOutput
|
||||
self.callback = None
|
||||
self.search_result = self.ResultNoMatches
|
||||
@ -239,8 +239,9 @@ class IssueIdentifier:
|
||||
if keys['month'] is not None:
|
||||
self.log_msg( "\tMonth : " + keys['month'] )
|
||||
|
||||
self.log_msg("Publisher Blacklist: " + str(self.publisher_blacklist))
|
||||
|
||||
comicVine = ComicVineTalker( self.cv_api_key )
|
||||
comicVine = ComicVineTalker( )
|
||||
|
||||
#self.log_msg( ( "Searching for " + keys['series'] + "...")
|
||||
self.log_msg( "Searching for {0} #{1} ...".format( keys['series'], keys['issue_number']) )
|
||||
|
@ -98,8 +98,6 @@ class IssueSelectionWindow(QtGui.QDialog):
|
||||
|
||||
row += 1
|
||||
|
||||
#TODO look for given issue in list, and select that one
|
||||
|
||||
self.twList.setSortingEnabled(True)
|
||||
self.twList.sortItems( 0 , QtCore.Qt.AscendingOrder )
|
||||
|
||||
|
15
settings.py
15
settings.py
@ -43,6 +43,10 @@ class ComicTaggerSettings:
|
||||
last_main_window_x = 0
|
||||
last_main_window_y = 0
|
||||
|
||||
# identifier settings
|
||||
id_length_delta_thresh = 5
|
||||
id_publisher_blacklist = "panini comics, abril, scholastic book services"
|
||||
|
||||
@staticmethod
|
||||
def getSettingsFolder():
|
||||
if platform.system() == "Windows":
|
||||
@ -117,6 +121,11 @@ class ComicTaggerSettings:
|
||||
self.last_main_window_x = self.config.getint( 'auto', 'last_main_window_x' )
|
||||
if self.config.has_option('auto', 'last_main_window_y'):
|
||||
self.last_main_window_y = self.config.getint( 'auto', 'last_main_window_y' )
|
||||
|
||||
if self.config.has_option('identifier', 'id_length_delta_thresh'):
|
||||
self.id_length_delta_thresh = self.config.getint( 'identifier', 'id_length_delta_thresh' )
|
||||
if self.config.has_option('identifier', 'id_publisher_blacklist'):
|
||||
self.id_publisher_blacklist = self.config.get( 'identifier', 'id_publisher_blacklist' )
|
||||
|
||||
def save( self ):
|
||||
|
||||
@ -136,6 +145,12 @@ class ComicTaggerSettings:
|
||||
self.config.set( 'auto', 'last_main_window_height', self.last_main_window_height )
|
||||
self.config.set( 'auto', 'last_main_window_x', self.last_main_window_x )
|
||||
self.config.set( 'auto', 'last_main_window_y', self.last_main_window_y )
|
||||
|
||||
if not self.config.has_section( 'identifier' ):
|
||||
self.config.add_section( 'identifier' )
|
||||
|
||||
self.config.set( 'identifier', 'id_length_delta_thresh', self.id_length_delta_thresh )
|
||||
self.config.set( 'identifier', 'id_publisher_blacklist', self.id_publisher_blacklist )
|
||||
|
||||
with open( self.settings_file, 'wb') as configfile:
|
||||
self.config.write(configfile)
|
||||
|
@ -23,8 +23,9 @@ import os
|
||||
from PyQt4 import QtCore, QtGui, uic
|
||||
|
||||
from settings import ComicTaggerSettings
|
||||
from comicvinetalker import *
|
||||
|
||||
from comicvinecacher import ComicVineCacher
|
||||
from imagefetcher import ImageFetcher
|
||||
import utils
|
||||
|
||||
windowsRarHelp = """
|
||||
<html><head/><body><p>In order to write to CBR/RAR archives,
|
||||
@ -48,10 +49,8 @@ macRarHelp = """
|
||||
</p></body></html>
|
||||
"""
|
||||
|
||||
|
||||
class SettingsWindow(QtGui.QDialog):
|
||||
|
||||
|
||||
|
||||
def __init__(self, parent, settings ):
|
||||
super(SettingsWindow, self).__init__(parent)
|
||||
|
||||
@ -72,45 +71,34 @@ class SettingsWindow(QtGui.QDialog):
|
||||
self.lblRarHelp.setText( macRarHelp )
|
||||
|
||||
# Copy values from settings to form
|
||||
self.leCVAPIKey.setText( self.settings.cv_api_key )
|
||||
self.leRarExePath.setText( self.settings.rar_exe_path )
|
||||
self.leUnrarExePath.setText( self.settings.unrar_exe_path )
|
||||
self.leNameLengthDeltaThresh.setText( str(self.settings.id_length_delta_thresh) )
|
||||
self.tePublisherBlacklist.setPlainText( self.settings.id_publisher_blacklist )
|
||||
|
||||
|
||||
self.btnTestKey.clicked.connect(self.testAPIKey)
|
||||
self.btnBrowseRar.clicked.connect(self.selectRar)
|
||||
self.btnBrowseUnrar.clicked.connect(self.selectUnrar)
|
||||
self.btnBrowseUnrar.clicked.connect(self.selectUnrar)
|
||||
self.btnClearCache.clicked.connect(self.clearCache)
|
||||
|
||||
def accept( self ):
|
||||
|
||||
# Copy values from form to settings and save
|
||||
self.settings.cv_api_key = str(self.leCVAPIKey.text())
|
||||
self.settings.rar_exe_path = str(self.leRarExePath.text())
|
||||
self.settings.unrar_exe_path = str(self.leUnrarExePath.text())
|
||||
|
||||
# make sure unrar program is now in the path for the UnRAR class
|
||||
utils.addtopath(os.path.dirname(self.settings.unrar_exe_path))
|
||||
|
||||
if not str(self.leNameLengthDeltaThresh.text()).isdigit():
|
||||
QtGui.QMessageBox.information(self,"Settings", "The Name Length Delta Threshold must be a number!")
|
||||
return
|
||||
|
||||
self.settings.id_length_delta_thresh = int(self.leNameLengthDeltaThresh.text())
|
||||
self.settings.id_publisher_blacklist = str(self.tePublisherBlacklist.toPlainText())
|
||||
|
||||
self.settings.save()
|
||||
QtGui.QDialog.accept(self)
|
||||
|
||||
def testAPIKey( self ):
|
||||
# TODO hourglass
|
||||
|
||||
palette = self.lblResult.palette()
|
||||
bad_color = QtGui.QColor(255, 0, 0)
|
||||
good_color = QtGui.QColor(0, 255, 0)
|
||||
|
||||
comicVine = ComicVineTalker( str(self.leCVAPIKey.text()) )
|
||||
if comicVine.testKey( ):
|
||||
palette.setColor(self.lblResult.foregroundRole(), good_color)
|
||||
self.lblResult.setText("Good Key!")
|
||||
else:
|
||||
palette.setColor(self.lblResult.foregroundRole(), bad_color)
|
||||
self.lblResult.setText("Bad Key :(")
|
||||
|
||||
self.lblResult.setPalette(palette)
|
||||
|
||||
|
||||
def selectRar( self ):
|
||||
self.selectFile( self.leRarExePath, "RAR" )
|
||||
@ -118,6 +106,9 @@ class SettingsWindow(QtGui.QDialog):
|
||||
def selectUnrar( self ):
|
||||
self.selectFile( self.leUnrarExePath, "UnRAR" )
|
||||
|
||||
def clearCache( self ):
|
||||
ImageFetcher().clearCache()
|
||||
ComicVineCacher( ).clearCache()
|
||||
|
||||
def selectFile( self, control, name ):
|
||||
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>750</width>
|
||||
<height>403</height>
|
||||
<width>753</width>
|
||||
<height>440</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -16,192 +16,286 @@
|
||||
<property name="sizeGripEnabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>530</x>
|
||||
<y>340</y>
|
||||
<width>191</width>
|
||||
<height>30</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>20</y>
|
||||
<width>581</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>To perform online searches using ComicVine, you must first register and request an API key. You can start here: <a href="http://api.comicvine.com/"><span style=" text-decoration: underline; color:#0000ff;">http://api.comicvine.com/</span></a></p></body></html></string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::RichText</enum>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="formLayoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>90</y>
|
||||
<width>581</width>
|
||||
<height>41</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Comic Vine API Key</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="leCVAPIKey"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QLabel" name="lblRarHelp">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>150</y>
|
||||
<width>611</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>In order to read/write to CBR/RAR archives, you will need to have the shareware tools from <a href="www.win-rar.com/download.html"><span style=" text-decoration: underline; color:#0000ff;">WinRAR</span></a> installed. </p></body></html></string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::RichText</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="formLayoutWidget_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>220</y>
|
||||
<width>611</width>
|
||||
<height>71</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_3">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>RAR program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="leRarExePath">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="lblUnrar">
|
||||
<property name="text">
|
||||
<string>UnRAR program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="leUnrarExePath">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="btnBrowseRar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>640</x>
|
||||
<y>220</y>
|
||||
<width>41</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="btnBrowseUnrar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>640</x>
|
||||
<y>250</y>
|
||||
<width>41</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="btnTestKey">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>610</x>
|
||||
<y>90</y>
|
||||
<width>94</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Test Key</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="lblResult">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>620</x>
|
||||
<y>120</y>
|
||||
<width>71</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
<string>General</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="lblResult">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="5" colspan="2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>ComicTagger keeps a cache of online data to improve speed. If you need to free up the disk space, or the responses seems out of date, clear it.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnClearCache">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Clear Cache</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lblRarHelp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>In order to read/write to CBR/RAR archives, you will need to have the shareware tools from <a href="www.win-rar.com/download.html"><span style=" text-decoration: underline; color:#0000ff;">WinRAR</span></a> installed. </p></body></html></string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::RichText</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>RAR program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="leRarExePath">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnBrowseRar">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="lblUnrar">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>UnRAR program</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="leUnrarExePath">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnBrowseUnrar">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_2">
|
||||
<attribute name="title">
|
||||
<string>Identifier</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>These settings are for the automatic issue identifier which searches online for matches. They will not affect &quot;manual&quot; searching.</p></body></html></string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="Line" name="line_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||
</property>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>The &quot;Name Length Delta Threshold&quot; is for eliminating automatic search matches that are too long compared to your series name search. The higher it is, the more likely to have a good match, but each search will take longer and use more bandwidth. Too low, and only the very closest lexical matches will be explored.</p></body></html></string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Name Length Delta Threshold:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="leNameLengthDeltaThresh">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>The &quot;Publisher Blacklist&quot; is for eliminating automatic matches to certain publishers that you know are incorrect. Useful for avoiding international re-prints with same covers or series names. Enter publisher names separated by commas.</p></body></html></string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Publisher Blacklist:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPlainTextEdit" name="tePublisherBlacklist">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
|
@ -155,7 +155,7 @@ def process_file_cli( filename, opts, settings ):
|
||||
# finally, search online
|
||||
if opts.search_online:
|
||||
|
||||
ii = IssueIdentifier( ca, "" )
|
||||
ii = IssueIdentifier( ca, settings )
|
||||
|
||||
if md is None or md.isEmpty:
|
||||
print "No metadata given to search online with!"
|
||||
|
@ -912,7 +912,6 @@ class TaggerWindow( QtGui.QMainWindow):
|
||||
ok_to_mod = True
|
||||
if self.isDupeCredit( new_role, new_name):
|
||||
# delete the dupe credit from list
|
||||
#TODO warn user!!
|
||||
reply = QtGui.QMessageBox.question(self,
|
||||
self.tr("Duplicate Credit!"),
|
||||
self.tr("This will create a duplicate credit entry. Would you like to merge the entries, or create a duplicate?"),
|
||||
|
33
todo.txt
33
todo.txt
@ -2,19 +2,6 @@
|
||||
Features
|
||||
----------------
|
||||
|
||||
Raw Tag Block Window
|
||||
|
||||
Settings/Preferences Dialog
|
||||
Remove API Key
|
||||
Add clear cache
|
||||
Add reset settings
|
||||
Tab w/Identifier Settings
|
||||
Add publisher blacklist
|
||||
other Identifier tunings
|
||||
|
||||
save Last tag style
|
||||
save Last "Open" folder (include dragged)
|
||||
|
||||
Add class for warning/info messages with "Don't show again" checkbox.
|
||||
Add list of these flags to settings
|
||||
|
||||
@ -22,19 +9,23 @@ Style sheets for windows/mac/linux
|
||||
|
||||
Better stripping of html from CV text
|
||||
|
||||
Add warning message to allow writing CBI to RAR, and ask them to contact CBL ! :-)
|
||||
|
||||
Move RAR/CBL test into ComicArchive class, isWriteable
|
||||
|
||||
|
||||
-----------------
|
||||
Bugs
|
||||
----------------
|
||||
Unicode errors when piping or redirecting stdout
|
||||
|
||||
Broke windows installer graphics somehow
|
||||
|
||||
Windows zip and rar: set proper path for writing to archive
|
||||
|
||||
SERIOUS BUG: rebuilding zips!
|
||||
http://stackoverflow.com/questions/11578443/trigger-io-errno-18-cross-device-link
|
||||
|
||||
OSX:
|
||||
Frozen apps better finding of resource files
|
||||
|
||||
OSX
|
||||
toolbar
|
||||
weird unrar complaints
|
||||
Page browser sizing
|
||||
@ -49,14 +40,12 @@ Check all HTTP responses for errors
|
||||
|
||||
Lots of error checking
|
||||
|
||||
|
||||
-------------
|
||||
Future
|
||||
------------
|
||||
|
||||
File rename
|
||||
-Dialog??
|
||||
|
||||
|
||||
TaggerWindow entry fields
|
||||
Special tabbed Dialog needed for:
|
||||
@ -70,7 +59,6 @@ CLI
|
||||
interactive for choices option?
|
||||
--- or defer choices to end, by keeping special log of those files
|
||||
|
||||
|
||||
Add warning message to allow writing CBI to RAR, and ask them to contact CBL ! :-)
|
||||
|
||||
Scrape alternate Covers from ComicVine issue pages
|
||||
@ -88,19 +76,14 @@ Wizard for converting between tag styles
|
||||
|
||||
App option to covert RAR to ZIP
|
||||
|
||||
|
||||
Archive function to detect tag blocks out of sync
|
||||
|
||||
|
||||
Idea: Support only CBI or CIX for any given file, and not both
|
||||
If user selects different one, warn about potential loss/re-arranging of data
|
||||
|
||||
Longer term:
|
||||
Think about mass tagging and (semi) automatic volume selection
|
||||
|
||||
<?xml version="1.0"?>
|
||||
-<ComicInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
|
||||
----------------------------------------------
|
||||
COMIC RACK Questions
|
||||
|
||||
|
@ -124,8 +124,7 @@ class VolumeSelectionWindow(QtGui.QDialog):
|
||||
self.iddialog.rejected.connect( self.identifyCancel )
|
||||
self.iddialog.show()
|
||||
|
||||
self.ii = IssueIdentifier( self.comic_archive, self.cv_api_key )
|
||||
|
||||
self.ii = IssueIdentifier( self.comic_archive, self.settings )
|
||||
|
||||
md = GenericMetadata()
|
||||
md.series = self.series_name
|
||||
|
Loading…
x
Reference in New Issue
Block a user