def convert_file(source, target): target.parent.mkdir(parents=True, exist_ok=True) os.system(' '.join([ 'ffmpeg', '-i', quote(escape(source.as_posix())), quote(escape(target.as_posix())) ]))
def search(args, nick): url = "http://www.urbandictionary.com/define.php?term=" + common.quote(args) content = common.read_url(url) match = re.search(r'<div class="definition">(.+?)</div>.*?<div class="example">(.+?)</div>', content) try: definition = match.group(1) example = match.group(2) except AttributeError: result = "Inga träffar. ({0})".format(url) else: def fixhtml(str): str = re.sub(r'(<br ?/>)+', r' ', str) str = re.sub('\n', r' ', str) str = re.sub('\r', r' ', str) str = re.sub(r'(<.+?>)+', r'', str) return common.unescape_html(str) # magic constants used when calculating space_left: # * 450 -- the smallest length of an irc message (hopefully; depends on server.) # * 20 -- the longest channel name including # (hopefully; i have no idea) # * 16 -- the length of the static crap in the result string (definitely) space_left = (450 - len('PRIVMSG :') - 20 - len(nick + ': ') - len(url) - 16) definition = common.truncate(fixhtml(definition), int(space_left/2)) example = common.truncate(fixhtml(example), int(space_left/2)) result = '{0} (Exempel: {1}) -- {2}'.format(definition, example, url) return result
def bulk_insert_into_table(self, schema_name, table_name, table_schema, rows, extended_definitions=None): command_name = f'insert_into_table' # insert extended column definitions into schema if extended_definitions: table_schema.column_definitions(extended_definitions) column_names = ', '.join(quote(table_schema.columns.keys())) # print(f'column_names: {column_names}') column_placeholders = ', '.join([self.queryparm] * len(table_schema.columns)) autocommit = self.conn.autocommit self.conn.autocommit = False sql_template = self.sql(command_name) sql_command = expand(sql_template) self.log(command_name, sql_command) self.cursor.fast_executemany = True row_count = self.cursor.executemany(sql_command, rows) self.cursor.commit() self.conn.autocommit = autocommit return row_count
def insert_into_table(self, schema_name, table_name, **column_names_values): command_name = f'insert_into_table' column_names = ', '.join(quote(column_names_values.keys())) column_placeholders = ', '.join([self.queryparm] * len(column_names_values)) column_values = column_names_values.values() autocommit = self.conn.autocommit self.conn.autocommit = True sql_template = self.sql(command_name) sql_command = expand(sql_template) self.log(command_name, sql_command) self.cursor.execute(sql_command, *column_values) self.conn.autocommit = autocommit
def set_metadata(data, artist, album, track): os.system(' '.join([ 'mid3v2', '-a', quote(escape(artist.metadata[Metakey.name])), '-A', quote(escape(album.metadata[Metakey.name])), '-t', quote(escape(track.metadata[Metakey.name])), '-y', quote(album.metadata[Metakey.year]), '-T', quote(f'{track.metadata[Metakey.index] + 1}/{len(album.subnodes)}'), quote(escape(target_path(data, artist, album, track).as_posix())) ]))
def isitdown(args): if not args.strip(): return "skriv in en url för att se om den är nere bara för dej" content = common.read_url("http://www.downforeveryoneorjustme.com/", common.quote(args)) regex = re.search(r'<div id="container">\s*(.+?)\s*<p><a href="/">', content, re.DOTALL) # This will – and is supposed to – crash if the regex fails. text = regex.group(1).lower() if text.startswith("it's not just you"): return "sidan verkar vara nere!" elif text.startswith("it's just you"): return "sidan verkar inte vara nere" elif text.startswith('huh?'): return "du verkar inte ha skrivit in en url" else: raise AttributeError('error in .down plugin, major parse error')
def capture_select(self, schema_name, table_name, column_names, last_timestamp=None, current_timestamp=None): command_name = f'capture_select' column_names = ', '.join(quote(column_names)) autocommit = self.conn.autocommit if self.platform == 'mssql': self.conn.autocommit = True sql_template = self.sql(command_name) # print(f'\ncapture_select.sql_template:\n{sql_template}\n') sql_command = expand(sql_template) self.log(command_name, sql_command) self.cursor.execute(sql_command) if self.platform == 'mssql': self.conn.autocommit = autocommit return self.cursor
def setCodecs(self, codecs): self.attributes[IFrameStreamInfAttributes.CODECS.value] = common.quote( codecs)
def setSubtitles(self, subtitles): self.attributes[StreamInfAttributes.SUBTITLES.value] = common.quote( subtitles)
def setAudio(self, audio): self.attributes[StreamInfAttributes.AUDIO.value] = common.quote(audio)
def setChannels(self, channels): self.attributes[MediaAttributes.CHANNELS.value] = common.quote( channels)
def setCharacteristics(self, characteristics): self.attributes[MediaAttributes.CHARACTERISTICS.value] = common.quote( characteristics)
def setInSteamId(self, id): self.attributes[MediaAttributes.INSTREAM_ID.value] = common.quote(id)
def setLanguage(self, language): self.attributes[MediaAttributes.LANGUAGE.value] = common.quote( language)
def setGroupId(self, groupId): self.attributes[MediaAttributes.GROUP_ID.value] = common.quote(groupId)
def setUri(self, uri): self.attributes[MediaAttributes.URI.value] = common.quote(uri)
def setVideo(self, video): self.attributes[IFrameStreamInfAttributes.VIDEO.value] = common.quote( video)
def setAssocLanguage(self, assocLanguage): self.attributes[MediaAttributes.ASSOC_LANGUAGE.value] = common.quote( assocLanguage)
def wikipedia(args): request = common.url_request("http://h4xxel.org/failboat/wikipedia.php?nick=n&args=" + common.quote(args)) with common.urlopen(request) as s: content = s.read().decode('utf-8', 'replace') return content
def setName(self, name): self.attributes[MediaAttributes.NAME.value] = common.quote(name)
def lastfm(args): try: key = common.read_lineconf(common.read_file("lastfm-api-key"))[0] if not (len(key) == 32 and re.search(r'^[0-9a-f]+$', key)): raise IOError except (IOError, IndexError): raise IOError('Ingen nyckel för last.fm-API:et kunde hittas. Skapa filen lastfm-api-key med enbart nyckeln i sig i botens arbetskatalog.') try: content = common.read_url("http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&limit=1&api_key={0}&user={1}".format(key, common.quote(args))) except HTTPError: return "Kunde inte hitta en last.fm-användare med namnet {}.".format(args) dom = xml.dom.minidom.parseString(content) latesttrack = dom.getElementsByTagName('track')[0] artist = latesttrack.getElementsByTagName('artist')[0].childNodes[0].data title = latesttrack.getElementsByTagName('name')[0].childNodes[0].data returnstr = "{0}".format(args) if (latesttrack.hasAttribute("nowplaying")): playstatus = "spelar just nu" else: playstatus = "spelade senast" return "{0} {1} {2} ({3}) -- History: http://www.last.fm/user/{0}/tracks".format(args, playstatus, title, artist)