mirror of
https://github.com/codex-storage/deluge.git
synced 2025-02-17 13:56:47 +00:00
flexrss update by 'daddy'
This commit is contained in:
parent
bf46b310a5
commit
5bcf5fbfac
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
|
||||
<!--Generated with glade3 3.2.0 on Sat Jul 21 16:48:25 2007 by daddy-->
|
||||
<!--Generated with glade3 3.3.1 on Sun Jul 22 16:15:58 2007 by daddy-->
|
||||
<glade-interface>
|
||||
<widget class="GtkWindow" id="FlexRSS_MainWindow">
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
@ -45,8 +45,9 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-new</property>
|
||||
<property name="label" translatable="yes">gtk-new</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="pressed" handler="on_FlexRSS_Feeds_New_pressed"/>
|
||||
</widget>
|
||||
</child>
|
||||
@ -56,8 +57,9 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-save</property>
|
||||
<property name="label" translatable="yes">gtk-save</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="pressed" handler="on_FlexRSS_Feeds_Save_pressed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
@ -70,8 +72,9 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-delete</property>
|
||||
<property name="label" translatable="yes">gtk-delete</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="pressed" handler="on_FlexRSS_Feeds_Delete_pressed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
@ -229,8 +232,9 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-add</property>
|
||||
<property name="label" translatable="yes">gtk-add</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="pressed" handler="on_FlexRSS_Filters_Add_pressed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
@ -244,8 +248,9 @@
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-delete</property>
|
||||
<property name="label" translatable="yes">gtk-delete</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="pressed" handler="on_FlexRSS_Filters_Delete_pressed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
@ -434,8 +439,9 @@ TV Show (dated)</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-add</property>
|
||||
<property name="label" translatable="yes">gtk-add</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="pressed" handler="on_FlexRSS_Filter_Patern_Add_pressed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
@ -664,7 +670,82 @@ TV Show (dated)</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<widget class="GtkFrame" id="FlexRSS_Filter_Output">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">GTK_SHADOW_OUT</property>
|
||||
<child>
|
||||
<widget class="GtkAlignment" id="FlexRSS_Filter_Output_Align">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="left_padding">12</property>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="FlexRSS_Filter_Output_Container">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="FlexRSS_Filter_Output_Type_Default">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Deluge default</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">FlexRSS_Filter_Output_Type_Custom</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="FlexRSS_Filter_Output_Type_Custom">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Choose:</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkFileChooserButton" id="FlexRSS_Filter_Output_Location">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
|
||||
<signal name="file_set" handler="on_FlexRSS_Filter_Output_Location_changed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="FlexRSS_Filter_Output_Align_L">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes"><b>Output</b></property>
|
||||
<property name="use_markup">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">label_item</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="FlexRSS_Filter_Actions">
|
||||
@ -682,8 +763,9 @@ TV Show (dated)</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-save</property>
|
||||
<property name="label" translatable="yes">gtk-save</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="pressed" handler="on_FlexRSS_Action_Save_pressed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
@ -694,6 +776,7 @@ TV Show (dated)</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
@ -60,7 +60,8 @@ class plugin_FlexRSS_Config:
|
||||
"type" : type,
|
||||
"patterns" : patterns,
|
||||
"feeds" : feeds,
|
||||
"history" : {} }
|
||||
"history" : {},
|
||||
"path" : None}
|
||||
|
||||
self.filters.append(filter)
|
||||
|
||||
@ -197,9 +198,9 @@ class plugin_FlexRSS:
|
||||
|
||||
def configure_cb_feed_new(self, args):
|
||||
feed = { "name" : 'Untitled',
|
||||
"url" : 'http://',
|
||||
"interval" : 900,
|
||||
"id" : 0 }
|
||||
"url" : 'http://',
|
||||
"interval" : 900,
|
||||
"id" : 0 }
|
||||
|
||||
feed["id"] = self.config.addFeed(feed["name"], feed["url"], feed["interval"])
|
||||
|
||||
@ -238,6 +239,8 @@ class plugin_FlexRSS:
|
||||
return
|
||||
|
||||
id = model.get_value(iter, 0)
|
||||
if id == 0:
|
||||
id = model.get_value(model.iter_parent(iter), 0)
|
||||
else:
|
||||
model = self.glade.get_widget("FlexRSS_Feeds").get_model()
|
||||
iter = model.get_iter_first()
|
||||
@ -273,6 +276,9 @@ class plugin_FlexRSS:
|
||||
return
|
||||
|
||||
id = model.get_value(iter, 0)
|
||||
if id == 0:
|
||||
iter = model.iter_parent(iter)
|
||||
id = model.get_value(iter, 0)
|
||||
else:
|
||||
model = self.glade.get_widget("FlexRSS_Feeds").get_model()
|
||||
iter = model.iter_first()
|
||||
@ -302,6 +308,17 @@ class plugin_FlexRSS:
|
||||
'updated' : 0,
|
||||
'data' : [] }
|
||||
|
||||
def escape_regex_special_chars(self, pattern):
|
||||
escape_chars = '[]()^$\\.?*+|'
|
||||
out = []
|
||||
for c in pattern:
|
||||
try:
|
||||
escape_chars.index(c)
|
||||
out.append('\\' + c)
|
||||
except:
|
||||
out.append(c)
|
||||
return ''.join(out)
|
||||
|
||||
def configure_cb_filter_new(self, arg, test_pattern=None):
|
||||
filter = { "name" : "Untitled",
|
||||
"type" : "Generic",
|
||||
@ -316,32 +333,23 @@ class plugin_FlexRSS:
|
||||
trans_table = string.maketrans(' ', '.')
|
||||
|
||||
# TV Show
|
||||
exp = re.compile('(.*).([0-9]+)x([0-9]+)', re.IGNORECASE)
|
||||
exp = re.compile(r'(.*?)S([0-9]+)E([0-9]+)', re.IGNORECASE)
|
||||
match = exp.match(test_pattern)
|
||||
if match:
|
||||
pattern = match.group(1).lower().translate(trans_table) + '.%sx%e'
|
||||
pattern = self.escape_regex_special_chars(match.group(1)).lower().translate(trans_table) + 's%se%e'
|
||||
filter['patterns'][0] = (pattern, 'Title')
|
||||
filter['name'] = match.group(1)
|
||||
filter['type'] = 'TV Show'
|
||||
|
||||
if not match:
|
||||
exp = re.compile('(.*).S([0-9]+)E([0-9]+)', re.IGNORECASE)
|
||||
match = exp.match(test_pattern)
|
||||
if match:
|
||||
pattern = match.group(1).lower().translate(trans_table) + '.S%sE%e'
|
||||
filter['patterns'][0] = (pattern, 'Title')
|
||||
filter['name'] = match.group(1)
|
||||
filter['type'] = 'TV Show'
|
||||
|
||||
if not match:
|
||||
exp = re.compile('(.*).([0-9]{4}).([0-9]{1,2}).([0-9]{1,2})', re.IGNORECASE)
|
||||
exp = re.compile(r'(.*?)([0-9]{4}).([0-9]{1,2}).([0-9]{1,2})', re.IGNORECASE)
|
||||
match = exp.match(test_pattern)
|
||||
if match:
|
||||
pattern = None
|
||||
if ((int(match.group(3)) <= 12) and (int(match.group(4)) <= 31)):
|
||||
pattern = match.group(1).lower().translate(trans_table) + '.%Y.%m.%d'
|
||||
pattern = self.escape_regex_special_chars(match.group(1)).lower().translate(trans_table) + '%Y.%m.%d'
|
||||
elif ((int(match.group(3)) <= 31) and (int(match.group(4)) <= 12)):
|
||||
pattern = match.group(1).lower().translate(trans_table) + '.%Y.%d.%m'
|
||||
pattern = self.escape_regex_special_chars(match.group(1)).lower().translate(trans_table) + '%Y.%d.%m'
|
||||
|
||||
if pattern:
|
||||
filter['patterns'][0] = (pattern, 'Title')
|
||||
@ -351,10 +359,19 @@ class plugin_FlexRSS:
|
||||
match = None
|
||||
|
||||
if not match:
|
||||
exp = re.compile('(.*).([0-9]+)', re.IGNORECASE)
|
||||
exp = re.compile(r'(.*?)([0-9]+)([x\.\-_]{1})([0-9]+)', re.IGNORECASE)
|
||||
match = exp.match(test_pattern)
|
||||
if match:
|
||||
pattern = match.group(1).lower().translate(trans_table) + '.%e'
|
||||
pattern = self.escape_regex_special_chars(match.group(1)).lower().translate(trans_table) + '%s' + self.escape_regex_special_chars(match.group(3)) + '%e'
|
||||
filter['patterns'][0] = (pattern, 'Title')
|
||||
filter['name'] = match.group(1)
|
||||
filter['type'] = 'TV Show'
|
||||
|
||||
if not match:
|
||||
exp = re.compile(r'(.*?)([0-9]+)$', re.IGNORECASE)
|
||||
match = exp.match(test_pattern)
|
||||
if match:
|
||||
pattern = self.escape_regex_special_chars(match.group(1)).lower().translate(trans_table) + '%e'
|
||||
filter['patterns'][0] = (pattern, 'Title')
|
||||
filter['name'] = match.group(1)
|
||||
filter['type'] = 'TV Show'
|
||||
@ -377,6 +394,8 @@ class plugin_FlexRSS:
|
||||
print 'Error: could not find filter #' + str(model.get_value(iter, 0))
|
||||
return
|
||||
|
||||
self.configure_ui_reset_filter()
|
||||
|
||||
self.glade.get_widget('FlexRSS_Filters_Name').set_text(filter['name'])
|
||||
|
||||
if filter['type'] == 'TV Show':
|
||||
@ -401,12 +420,13 @@ class plugin_FlexRSS:
|
||||
selection.select_iter(iter)
|
||||
iter = feed_model.iter_next(iter)
|
||||
|
||||
filter_patterns = self.glade.get_widget('FlexRSS_Filter_Patterns_List')
|
||||
for child in filter_patterns.get_children():
|
||||
child.destroy()
|
||||
for pattern in filter['patterns']:
|
||||
self.configure_ui_add_pattern(pattern)
|
||||
|
||||
if filter['path'] != None:
|
||||
self.glade.get_widget('FlexRSS_Filter_Output_Location').select_filename(filter['path'])
|
||||
self.glade.get_widget('FlexRSS_Filter_Output_Type_Custom').set_active(True)
|
||||
|
||||
def configure_cb_filter_save(self, arg):
|
||||
# Which feed is selected?
|
||||
selection = self.glade.get_widget("FlexRSS_Filters_List").get_selection()
|
||||
@ -453,6 +473,13 @@ class plugin_FlexRSS:
|
||||
patterns.append((pattern, type))
|
||||
self.config.setFilter(id, 'patterns', patterns)
|
||||
|
||||
if self.glade.get_widget('FlexRSS_Filter_Output_Type_Custom').get_active():
|
||||
path = self.glade.get_widget('FlexRSS_Filter_Output_Location').get_filename()
|
||||
else:
|
||||
path = None
|
||||
|
||||
self.config.setFilter(id, 'path', path)
|
||||
|
||||
self.write_config()
|
||||
|
||||
def configure_cb_remove_pattern(self, arg):
|
||||
@ -500,6 +527,8 @@ class plugin_FlexRSS:
|
||||
print 'No filter to add'
|
||||
return None
|
||||
|
||||
self.configure_ui_reset_filter()
|
||||
|
||||
model = self.glade.get_widget("FlexRSS_Filters_List").get_model()
|
||||
iter = model.append(None, (filter['id'], filter['name']))
|
||||
|
||||
@ -591,8 +620,7 @@ class plugin_FlexRSS:
|
||||
# Remove from UI
|
||||
model.remove(iter)
|
||||
|
||||
# Fuck it--just leave the crap in the widgets. Todo: fix it so
|
||||
# the save button will create a new filter if it must.
|
||||
self.configure_ui_reset_filter()
|
||||
|
||||
def configure_cb_feed_refresh(self, caller, id=None):
|
||||
if not id:
|
||||
@ -644,6 +672,42 @@ class plugin_FlexRSS:
|
||||
popup.popup(None, None, None, event.button, event.time)
|
||||
popup.show_all()
|
||||
|
||||
def configure_cb_output_set(self, chooser):
|
||||
self.glade.get_widget('FlexRSS_Filter_Output_Type_Custom').set_active(True)
|
||||
|
||||
def configure_ui_reset_filter(self):
|
||||
# Just resets the crap in the filter tab to defaults.
|
||||
self.glade.get_widget('FlexRSS_Filters_Name').set_text('')
|
||||
self.glade.get_widget('FlexRSS_Filters_Type').set_active(0)
|
||||
self.glade.get_widget('FlexRSS_Filters_Feed').get_selection().unselect_all()
|
||||
for filter in self.glade.get_widget('FlexRSS_Filter_Patterns_List').get_children():
|
||||
filter.destroy()
|
||||
self.glade.get_widget('FlexRSS_Filters_Test_Results_TVShow').hide()
|
||||
self.glade.get_widget('FlexRSS_Filters_Test_Results_TVShow_Dated').hide()
|
||||
file_chooser = self.glade.get_widget('FlexRSS_Filter_Output_Location')
|
||||
file_chooser.select_filename(self.interface.config.get('default_download_path'))
|
||||
self.glade.get_widget('FlexRSS_Filter_Output_Type_Default').set_active(True)
|
||||
|
||||
def strcasecmp(self, s1, s2):
|
||||
try:
|
||||
t1 = s1.lower()
|
||||
t2 = s2.lower()
|
||||
|
||||
if s1 < s2:
|
||||
return -1
|
||||
elif s1 > s2:
|
||||
return 1
|
||||
except:
|
||||
pass
|
||||
|
||||
return 0
|
||||
|
||||
def configure_ui_sort_cmp(self, model, iter1, iter2, user_data=None):
|
||||
if (model.get_value(iter1, 0) == 0) or (model.get_value(iter2, 0) == 0):
|
||||
return 0
|
||||
|
||||
return self.strcasecmp(model.get_value(iter1, 1), model.get_value(iter2, 1))
|
||||
|
||||
def configure(self):
|
||||
if self.glade: # Dialog already running
|
||||
return
|
||||
@ -658,6 +722,8 @@ class plugin_FlexRSS:
|
||||
filters_feeds_view = self.glade.get_widget("FlexRSS_Filters_Feed")
|
||||
feeds_view.set_model(feeds_model)
|
||||
filters_feeds_view.set_model(feeds_model)
|
||||
feeds_model.set_sort_func(1, self.configure_ui_sort_cmp)
|
||||
feeds_model.set_sort_column_id(1, gtk.SORT_ASCENDING)
|
||||
|
||||
# Setup columns for feeds tab
|
||||
renderer_name = gtk.CellRendererText()
|
||||
@ -692,6 +758,8 @@ class plugin_FlexRSS:
|
||||
filters_model = gtk.TreeStore(gobject.TYPE_INT, gobject.TYPE_STRING)
|
||||
filters_view = self.glade.get_widget("FlexRSS_Filters_List")
|
||||
filters_view.set_model(filters_model)
|
||||
feeds_model.set_sort_func(1, self.configure_ui_sort_cmp)
|
||||
filters_model.set_sort_column_id(1, gtk.SORT_ASCENDING)
|
||||
|
||||
# Setup columns for filters list
|
||||
renderer_name = gtk.CellRendererText()
|
||||
@ -716,11 +784,15 @@ class plugin_FlexRSS:
|
||||
"on_FlexRSS_Feeds_button_press_event" : self.configure_cb_feed_popup,
|
||||
|
||||
# Filters tab
|
||||
"on_FlexRSS_Filters_Add_pressed" : self.configure_cb_filter_new,
|
||||
"on_FlexRSS_Action_Save_pressed" : self.configure_cb_filter_save,
|
||||
"on_FlexRSS_Filter_Patern_Add_pressed" : self.configure_cb_add_pattern,
|
||||
"on_FlexRSS_Filters_Test_Pattern" : self.configure_cb_test_filter,
|
||||
"on_FlexRSS_Filters_Delete_pressed" : self.configure_cb_delete_filter }
|
||||
"on_FlexRSS_Filters_Add_pressed" : self.configure_cb_filter_new,
|
||||
"on_FlexRSS_Action_Save_pressed" : self.configure_cb_filter_save,
|
||||
"on_FlexRSS_Filter_Patern_Add_pressed" : self.configure_cb_add_pattern,
|
||||
"on_FlexRSS_Filters_Test_Pattern" : self.configure_cb_test_filter,
|
||||
"on_FlexRSS_Filters_Delete_pressed" : self.configure_cb_delete_filter }
|
||||
if self.interface.__dict__.has_key('interactive_add_torrent_path'):
|
||||
acitons["on_FlexRSS_Filter_Output_Location_changed"] = self.configure_cb_output_set
|
||||
else:
|
||||
self.glade.get_widget('FlexRSS_Filter_Output').hide()
|
||||
self.glade.signal_autoconnect(actions)
|
||||
|
||||
self.glade.get_widget("FlexRSS_MainWindow").show()
|
||||
@ -759,8 +831,8 @@ class plugin_FlexRSS:
|
||||
return out
|
||||
|
||||
def replace_tv_show_patterns(self, input):
|
||||
patterns = [('%s', '(?P<series>[0-9]+)'),
|
||||
('%e', '(?P<episode>[0-9]+)')]
|
||||
patterns = [('%s', '(?P<s>[0-9]+)'),
|
||||
('%e', '(?P<e>[0-9]+)')]
|
||||
|
||||
out = input
|
||||
for p in patterns:
|
||||
@ -789,19 +861,16 @@ class plugin_FlexRSS:
|
||||
|
||||
match = exp.match(subject)
|
||||
if match:
|
||||
print 'Match: ' + subject
|
||||
print ' ' + pattern
|
||||
# print 'Match: ' + subject
|
||||
# print ' ' + pattern
|
||||
if type == 'TV Show':
|
||||
try:
|
||||
series = int(match.group('series'))
|
||||
series = int(match.group('s'))
|
||||
except:
|
||||
try:
|
||||
series = int(match.group('season'))
|
||||
except:
|
||||
series = 0
|
||||
series = 0
|
||||
|
||||
try:
|
||||
episode = int(match.group('episode'))
|
||||
episode = int(match.group('e'))
|
||||
except:
|
||||
episode = 0
|
||||
|
||||
@ -845,7 +914,6 @@ class plugin_FlexRSS:
|
||||
|
||||
feed = self.config.getFeed(id)
|
||||
|
||||
print 'Updating feed #' + str(id)
|
||||
parsed = feedparser.parse(feed['url'])
|
||||
if (not parsed) or (not parsed.entries):
|
||||
print 'Unable to parse feed: ' + feed['url']
|
||||
@ -888,7 +956,19 @@ class plugin_FlexRSS:
|
||||
self.config.addHistory(filter['id'], filter['type'], match)
|
||||
self.write_config()
|
||||
print 'Downloading'
|
||||
self.interface.interactive_add_torrent_url(entry.links[0]['href'])
|
||||
if self.interface.__dict__.has_key('interactive_add_torrent_path'):
|
||||
path = filter['path']
|
||||
if path is None:
|
||||
path = self.interface.config.get('default_download_path')
|
||||
|
||||
filename = common.fetch_url(url)
|
||||
if filename:
|
||||
self.interactive_add_torrent_path(filename, path)
|
||||
|
||||
if self.interface.__dict__.has_key('interactive_add_torrent_url'):
|
||||
self.interface.interactive_add_torrent_url(entry.links[0]['href'])
|
||||
else:
|
||||
self.interface.external_add_url(entry.links[0]['href'])
|
||||
else:
|
||||
print 'Skipping (history)'
|
||||
|
||||
@ -903,6 +983,7 @@ class plugin_FlexRSS:
|
||||
this_feed = feeds_model.append(None, (feed['id'], feed['name'], feed['url']))
|
||||
for item in self.feeds[feed['id']]['data']:
|
||||
feeds_model.append(this_feed, (0, item['title'], item['link']))
|
||||
|
||||
def update(self):
|
||||
import time
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user