def __init__(self): s = get_settings() s.clear_on_change("options") s.add_on_change("options", self.load_settings) self.load_settings() self.recompile_timer = None self.not_code_regex = re.compile("(string.)|(comment.)")
def __init__(self): s = get_settings() s.clear_on_change("options") s.add_on_change("options", self.load_settings) self.load_settings() self.recompile_timer = None self.complete_timer = None self.member_regex = re.compile("(([a-zA-Z_]+[0-9_]*)|([\)\]])+)((\.)|(->))$") self.not_code_regex = re.compile("(string.)|(comment.)")
def stopAllTorrents(self): settings = common.get_settings() if self.transmission: torrents = self.transmission.list() for tid, torrent in torrents.iteritems(): if settings[ 'restart_if_was_seeding'] == 'true' and torrent.status == "seeding": self.wasSeeding.append(tid) self.transmission.stop(tid)
def refreshSettings(self): settings = common.get_settings() if settings != self.prev_settings: self.active = (settings['stop_all_on_playback'] == 'true') try: self.transmission = common.get_rpc_client() except: self.transmission = None self.prev_settings = settings
def startAllTorrents(self): settings = common.get_settings() if self.transmission: torrents = self.transmission.list() for tid, torrent in torrents.iteritems(): if settings['restart_if_was_seeding'] == 'true': self.transmission.start(tid) else: if tid not in self.wasSeeding: self.transmission.start(tid)
def __init__(self): s = get_settings() s.clear_on_change("options") s.add_on_change("options", self.load_settings) self.load_settings() self.recompile_timer = None self.complete_timer = None self.member_regex = re.compile( "(([a-zA-Z_]+[0-9_]*)|([\)\]])+)((\.)|(->))$") self.not_code_regex = re.compile("(string.)|(comment.)")
def refreshSettings(self): settings = common.get_settings() if settings != self.prev_settings: self.mode = settings['action_on_playback'] self.keep_seeding = settings['seeding_torrents'] self.show_notifications = settings['show_notifications'] self.seconds = int(settings['seconds_playback_finished'])*1000 try: self.transmission = common.get_rpc_client() except: self.transmission = None self.prev_settings = settings
def onClick(self, controlID): list = self.getControl(120) if (controlID == 111): # Add torrent engines = [ (_(32200), None), (_(32204), search.Kickass), (_(32208), search.EZTV), (_(32202), search.TPB), (_(32205), search.L337x), (_(32206), search.YTS), (_(32207), search.Lime), ] selected = xbmcgui.Dialog().select(_(32000), [i[0] for i in engines]) if selected < 0: return engine = engines[selected][1] if not engine: filename = xbmcgui.Dialog().input(_(32000), '', xbmcgui.INPUT_ALPHANUM) if (len(filename)): self.deluge.add_url(filename, __settings__.getSetting('download_path')) else: kb = xbmc.Keyboard(__settings__.getSetting('last_search'), engines[selected][0]) kb.doModal() if not kb.isConfirmed(): return terms = kb.getText() __settings__.setSetting('last_search', terms) p = xbmcgui.DialogProgress() p.create(_(32000), _(32290)) try: results = engine().search(terms) except: p.close() xbmcgui.Dialog().ok(_(32000), _(32292)) return p.close() del p if not results: xbmcgui.Dialog().ok(_(32000), _(32291)) return selected = xbmcgui.Dialog().select(_(32000), ['[S:%d L:%d] %s'%(t['seeds'], t['leechers'], t['name']) for t in results]) if selected < 0: return try: self.deluge.add_url(results[selected]['url'], __settings__.getSetting('download_path')) except: xbmcgui.Dialog().ok(_(32000), _(32293)) return if (controlID == 112): # Remove selected torrent item = list.getSelectedItem() if item and xbmcgui.Dialog().yesno(_(32000), 'Remove \'%s\'?'%item.getLabel()): remove_data = xbmcgui.Dialog().yesno(_(32000), 'Remove data as well?') if remove_data: self.deluge.action_simple('removedata', item.getProperty('TorrentID')) else: self.deluge.action_simple('remove', item.getProperty('TorrentID')) if (controlID == 113): # Stop selected torrent item = list.getSelectedItem() if item: self.deluge.action_simple('stop', item.getProperty('TorrentID')) if (controlID == 114): # Start selected torrent item = list.getSelectedItem() if item: self.deluge.action_simple('start', item.getProperty('TorrentID')) if (controlID == 115): # Stop all torrents for torrent in self.torrents: self.deluge.action_simple('stop', torrent['id']) if (controlID == 116): # Start all torrents for torrent in self.torrents: self.deluge.action_simple('start', torrent['id']) if (controlID == 118): # Settings button prev_settings = common.get_settings() __settings__.openSettings() p = xbmcgui.DialogProgress() p.create(_(32000), _(32001)) # 'Transmission', 'Connecting to Transmission' try: self.deluge = common.get_rpc_client() self.updateTorrents() p.close() except: p.close() xbmcgui.Dialog().ok(_(32002), _(32901)) # restore settings self.set_settings(prev_settings) try: self.deluge = common.get_rpc_client() except err: xbmcgui.Dialog().ok(_(32002), _(32901)) self.close() del p if (controlID == 120): global PLAY_REQUESTED # A torrent was chosen, show details item = list.getSelectedItem() w = TorrentInfoGUI("script-Deluge-details.xml", __settings__.getAddonInfo('path'), "Default") w.setTorrent(self.deluge, item.getProperty('TorrentID')) w.doModal() del w if PLAY_REQUESTED: PLAY_REQUESTED = False self.close() if (controlID == 117): # Exit button self.close()
def get(self, *arg): artwork_id = arg[0] artwork = dao.get_artwork(artwork_id) if not artwork: self.response.set_status(404) return favorite_count = dao.get_artwork_favorite_count(artwork) favorite = dao.is_artwork_favorite_by_user(artwork, self.user_info.user_email) db_comments = db.Comment.all().filter( 'artwork_ref =', artwork).order('-date').fetch(const.MAX_COMMENT_PACK + 1) all_db_comments = [ convert.convert_comment_for_page(c) for c in db_comments ] comments = all_db_comments[:const.MAX_COMMENT_PACK] has_more_comments = len(all_db_comments) > const.MAX_COMMENT_PACK converted_artwork = convert.convert_artwork_for_page(artwork, 600, 400) author_user_id = converted_artwork.get('author', {}).get('profile_id') if 'tags' in converted_artwork: converted_artwork['tags_merged'] = ','.join([ tags.tag_by_url_name(t.title).title for t in converted_artwork['tags'] ]) if 'self_block' in converted_artwork['author']: self.write_template('templates/artwork-details-blocked.html', {'artwork': converted_artwork}) return user_is_author = artwork.author_email == self.user_info.user_email db_collaborators = db.ArtworkCollaborator.all().filter( 'artwork =', artwork).order('-last_date') collaborators = [ convert.convert_user_profile(dao.get_user_profile_by_id(c.user_id)) for c in db_collaborators if c.user_id != author_user_id ] user_is_collaborator = False if self.user_info.user: user_is_collaborator = self.user_info.profile_id in [ c['profile_id'] for c in collaborators ] can_edit_artwork = self.user_info.superadmin or user_is_author or user_is_collaborator if ('block' in converted_artwork or 'copyright_block' in converted_artwork) and not can_edit_artwork: self.write_template('templates/artwork-details-blocked.html', {'artwork': converted_artwork}) return if self.user_info.user: following = dao.is_follower(artwork.author_email, self.user_info.user_email) else: following = None settings = get_settings() template_name = 'templates/artwork-details.html' if 'block' in converted_artwork or 'copyright_block' in converted_artwork: template_name = 'templates/artwork-details-limited.html' self.write_template( template_name, { 'artwork': converted_artwork, 'collaborators': collaborators, 'can_edit_artwork': can_edit_artwork, 'user_is_author': user_is_author, 'user_is_collaborator': user_is_collaborator, 'comments_offset': len(comments), 'comments': comments, 'has_more_comments': has_more_comments, 'favorite_count': favorite_count, 'favorite': favorite, 'following': following, 'og_title': converted_artwork['name'], 'og_image': 'https://grid-paint.com/images/png/' + artwork_id + '.png', 'og_image_width': converted_artwork['full_image_width'], 'og_image_height': converted_artwork['full_image_height'], 'og_url': 'https://grid-paint.com/images/details/' + artwork_id, 'og_description': u'Created by {} in Grid Paint'.format( converted_artwork['author']['nickname']), 'settings': settings })
def get(self): if not self.user_info.user: self.redirect(self.user_info.login_url) return if self.user_info.read_only: self.response.set_status(403) return if self.request.get('id'): artwork_id = self.request.get('id') artwork = dao.get_artwork(artwork_id) if artwork is None: self.response.set_status(404) return user_is_author = artwork.author_email == self.user_info.user_email collaborator = db.ArtworkCollaborator.all().filter( 'artwork =', artwork).filter('user_id =', self.user_info.profile_id).get() user_is_collaborator = collaborator is not None if not self.user_info.superadmin and not user_is_author and not user_is_collaborator: # should be the same user or superadmin self.response.set_status(403) return collaborators_count = db.ArtworkCollaborator.all().filter( 'artwork =', artwork).count() settings = get_settings() exchange_token = '' if collaborators_count > 0: # Generate security token for grid-paint-exchange, because it's group artwork exchange_token = generate_token(settings.exchange_salt, artwork_id, self.user_info.profile_id, self.user_info.user_name, self.user_info.avatar_url) if hasattr(artwork, 'json'): if artwork.json_compressed: artwork_json = zlib.decompress( artwork.json.encode('ISO-8859-1')) else: artwork_json = artwork.json else: artwork_json = zlib.decompress( cs.read_file(artwork.json_file_name)) self.write_template( 'templates/painter.html', { 'artwork_id': artwork_id, 'artwork_name': artwork.name, 'artwork_description': artwork.description, 'artwork_json': artwork_json, 'artwork_tags': ','.join( [tags.tag_by_url_name(t).title for t in artwork.tags]), 'exchange_token': exchange_token, 'exchange_url': settings.exchange_url }) elif self.request.get('copy_id'): artwork_id = self.request.get('copy_id') artwork = dao.get_artwork(artwork_id) user_is_author = artwork.author_email == self.user_info.user_email collaborator = db.ArtworkCollaborator.all().filter( 'artwork =', artwork).filter('user_id =', self.user_info.profile_id).get() user_is_collaborator = collaborator is not None if not self.user_info.superadmin and not user_is_author and not user_is_collaborator: # should be the author, collaborator or superadmin self.response.set_status(403) return if hasattr(artwork, 'json'): if artwork.json_compressed: artwork_json = zlib.decompress( artwork.json.encode('ISO-8859-1')) else: artwork_json = artwork.json else: artwork_json = zlib.decompress( cs.read_file(artwork.json_file_name)) self.write_template( 'templates/painter.html', { 'artwork_name': artwork.name + ' (copy)', 'artwork_description': (artwork.description if artwork.description else '') + ' (copy)', 'artwork_json': artwork_json, 'artwork_tags': ','.join( [tags.tag_by_url_name(t).title for t in artwork.tags]) }) else: new_artwork = { 'version': { 'major': 2, 'minor': 0 }, 'backgroundColor': '#ffffff', 'canvasSize': { 'width': int(float(self.request.get('artwork_width'))), 'height': int(float(self.request.get('artwork_height'))), }, 'layers': [{ 'grid': self.request.get('artwork_grid'), 'cellSize': int(float(self.request.get('cell_size'))), 'rows': [] }], 'recentColors': [ '#4096EE', '#FFFFFF', '#000000', '#EEEEEE', '#FFFF88', '#CDEB8B', '#6BBA70', '#006E2E', '#C3D9FF', '#356AA0', '#FF0096', '#B02B2C', '#FF7400', '#EF9090', '#0099FF', '#9933FF', '#2E2EFF', '#8A725D', '#FF3838', '#4BC8D1', '#CBD114', '#858585' ] } artwork_json = json.dumps(new_artwork) self.write_template('templates/painter.html', {'artwork_json': artwork_json})
def onClick(self, controlID): list = self.getControl(120) if (controlID == 111): # Add torrent engines = [ (_(32200), None), (_(32209), search.Torrent9), ] selected = xbmcgui.Dialog().select(_(32000), [i[0] for i in engines]) if selected < 0: return engine = engines[selected][1] if not engine: filename = xbmcgui.Dialog().browse(1, _(32000), 'files', '.torrent') try: f = open(filename, 'r') data = base64.b64encode(f.read()) self.transmission.add(data) except: pass else: kb = xbmc.Keyboard('', engines[selected][0]) kb.doModal() if not kb.isConfirmed(): return terms = kb.getText() p = xbmcgui.DialogProgress() p.create(_(32000), _(32290)) try: results = engine().search(terms) except: p.close() xbmcgui.Dialog().ok(_(32000), _(32292)) return p.close() if not results: xbmcgui.Dialog().ok(_(32000), _(32291)) return selected = xbmcgui.Dialog().select(_(32000), [ '[S:%d L:%d] %s' % (t['seeds'], t['leechers'], t['name']) for t in results ]) if selected < 0: return try: if (engine == search.T411): t = t411() data = t.download(results[selected]['url']) self.transmission.add(data) else: self.transmission.add_torrent(results[selected]['url']) except Exception as e: #xbmcgui.Dialog().ok("test", e.message) xbmcgui.Dialog().ok(_(32000), _(32293)) return if (controlID == 112): # Remove selected torrent item = list.getSelectedItem() if item and xbmcgui.Dialog().yesno( _(32000), 'Remove \'%s\'?' % self.torrents[int(item.getProperty('TorrentID'))].name): remove_data = xbmcgui.Dialog().yesno(_(32000), 'Remove data as well?') self.transmission.remove(int(item.getProperty('TorrentID')), remove_data) if (controlID == 113): # Stop selected torrent item = list.getSelectedItem() if item: self.transmission.stop(int(item.getProperty('TorrentID'))) if (controlID == 114): # Start selected torrent item = list.getSelectedItem() if item: self.transmission.start(int(item.getProperty('TorrentID'))) if (controlID == 115): # Stop all torrents self.transmission.stop(self.torrents.keys()) if (controlID == 116): # Start all torrents self.transmission.start(self.torrents.keys()) if (controlID == 117): # Exit button self.close() if (controlID == 118): # Settings button prev_settings = common.get_settings() __settings__.openSettings() p = xbmcgui.DialogProgress() p.create(_(32000), _(32001)) # 'Transmission', 'Connecting to Transmission' try: self.transmission = common.get_rpc_client() self.updateTorrents() p.close() except: p.close() xbmcgui.Dialog().ok(_(32002), _(32901)) # restore settings self.set_settings(prev_settings) try: self.transmission = common.get_rpc_client() except err: xbmcgui.Dialog().ok(_(32002), _(32901)) self.close() if (controlID == 120): # A torrent was chosen, show details item = list.getSelectedItem() w = TorrentInfoGUI("script-Transmission-details.xml", __settings__.getAddonInfo('path'), "Default") w.setTorrent(self.transmission, int(item.getProperty('TorrentID'))) w.doModal() del w
def onClick(self, controlID): list = self.getControl(120) if (controlID == 111): # Add torrent engines = [ (_(32200), None), (_(32202), search.TPB), (_(32203), search.Mininova), (_(32204), search.Kickass), (_(32205), search.L337x), (_(32206), search.YTS), (_(32207), search.Lime), (_(32208), search.EZTV), ] selected = xbmcgui.Dialog().select(_(32000), [i[0] for i in engines]) if selected < 0: return engine = engines[selected][1] if not engine: filename = xbmcgui.Dialog().browse(1, _(32000), 'files', '.torrent') try: f = open(filename, 'r') data = base64.b64encode(f.read()) self.transmission.add(data) except: pass else: kb = xbmc.Keyboard('', engines[selected][0]) kb.doModal() if not kb.isConfirmed(): return terms = kb.getText() p = xbmcgui.DialogProgress() p.create(_(32000), _(32290)) try: results = engine().search(terms) except: p.close() xbmcgui.Dialog().ok(_(32000), _(32292)) return p.close() if not results: xbmcgui.Dialog().ok(_(32000), _(32291)) return selected = xbmcgui.Dialog().select(_(32000), ['[S:%d L:%d] %s' % (t['seeds'], t['leechers'], t['name']) for t in results]) if selected < 0: return try: self.transmission.add_torrent(results[selected]['url']) except: xbmcgui.Dialog().ok(_(32000), _(32293)) return if (controlID == 112): # Remove selected torrent item = list.getSelectedItem() if item and xbmcgui.Dialog().yesno(_(32000), 'Remove \'%s\'?' % self.torrents[int(item.getProperty('TorrentID'))].name): remove_data = xbmcgui.Dialog().yesno(_(32000), 'Remove data as well?') self.transmission.remove(int(item.getProperty('TorrentID')), remove_data) if (controlID == 113): # Stop selected torrent item = list.getSelectedItem() if item: self.transmission.stop(int(item.getProperty('TorrentID'))) if (controlID == 114): # Start selected torrent item = list.getSelectedItem() if item: self.transmission.start(int(item.getProperty('TorrentID'))) if (controlID == 115): # Stop all torrents self.transmission.stop(self.torrents.keys()) if (controlID == 116): # Start all torrents self.transmission.start(self.torrents.keys()) if (controlID == 117): # Exit button self.close() if (controlID == 118): # Settings button prev_settings = common.get_settings() __settings__.openSettings() p = xbmcgui.DialogProgress() p.create(_(32000), _(32001)) # 'Transmission', 'Connecting to Transmission' try: self.transmission = common.get_rpc_client() self.updateTorrents() p.close() except: p.close() xbmcgui.Dialog().ok(_(32002), _(32901)) # restore settings self.set_settings(prev_settings) try: self.transmission = common.get_rpc_client() except err: xbmcgui.Dialog().ok(_(32002), _(32901)) self.close() if (controlID == 120): # A torrent was chosen, show details item = list.getSelectedItem() w = TorrentInfoGUI("script-Transmission-details.xml", __settings__.getAddonInfo('path') ,"Default") w.setTorrent(self.transmission, int(item.getProperty('TorrentID'))) w.doModal() del w