def write_tags_to_image_via_et(image, tags): options = [ '-codedcharacterset=UTF8', '-charset', 'iptc=cp1251', '-charset', 'filename=cp1251', '{0}'.format(image) ] for tag in tags: if tag.lower() == "keywords": for i in tags[tag]: options.append('-iptc:{0}={1}'.format(tag, i)) else: options.append('-iptc:{0}={1}'.format(tag, tags[tag])) cmd = [exiftool] cmd.extend(options) trace.debug('Cmd: {0}'.format(cmd)) proc = Popen(cmd, stdout=PIPE, stderr=PIPE) out, err = proc.communicate() trace.debug('stdout: {0}; stderr: {1}'.format(out, err)) if proc.returncode: trace.error('Unexpected return code: {0}; cmd: {1}'.format( proc.returncode, cmd)) return proc.returncode
def write_tags_to_image_via_et(image, tags): options = ['-codedcharacterset=UTF8', '-charset', 'iptc=cp1251', '-charset', 'filename=cp1251', '{0}'.format(image)] for tag in tags: if tag.lower() == "keywords": for i in tags[tag]: options.append('-iptc:{0}={1}'.format(tag, i)) else: options.append('-iptc:{0}={1}'.format(tag, tags[tag])) cmd = [exiftool] cmd.extend(options) trace.debug('Cmd: {0}'.format(cmd)) proc = Popen(cmd, stdout=PIPE, stderr=PIPE) out, err = proc.communicate() trace.debug('stdout: {0}; stderr: {1}'.format(out, err)) if proc.returncode: trace.error('Unexpected return code: {0}; cmd: {1}'.format(proc.returncode, cmd)) return proc.returncode
def get_info_osm(latitude, longitude): keywords = [] query = "{0}?format=json&q={1},{2}".format(osm_geocoder, latitude, longitude) try: result = request_get(query) except ConnectionError as errno: trace.error(" ".join(("Connection error:", str(errno)))) return keywords except Timeout as errno: trace.error(" ".join(("Connection timeoute exceed:", str(errno)))) return keywords except HTTPError as errno: trace.error(" ".join(("Invalid HTTP response:", str(errno)))) return keywords except RequestException as errno: trace.error('Exception: {0}'.format(errno)) return keywords core_dic = json_loads(result.text) object_class = core_dic[0]["class"] object_type = core_dic[0]["type"] keywords.append(core_dic[0]["display_name"].split(",")[0]) keywords.extend(get_osm_keywords(object_class, object_type)) return keywords
def get_info_yandex(latitude, longitude): items = {} query = "{0}?format=json&geocode={1},{2}".format(yandex_geocoder, longitude, latitude) try: result = request_get(query) except ConnectionError as errno: trace.error(" ".join(("Connection error:", str(errno)))) return items except Timeout as errno: trace.error(" ".join(("Connection timeoute exceed:", str(errno)))) return items except HTTPError as errno: trace.error(" ".join(("Invalid HTTP response:", str(errno)))) return items except RequestException as errno: trace.error('Exception: {0}'.format(errno)) return items core_dic = json_loads(result.text) try: for feature_member in core_dic['response']['GeoObjectCollection'][ 'featureMember']: try: kind = feature_member['GeoObject']['metaDataProperty'][ 'GeocoderMetaData']['kind'] items[kind] = feature_member['GeoObject']['name'] except KeyError as errno: trace.warning("Invalid key: {0}".format(errno)) except KeyError as errno: trace.warning("Invalid key: {0}".format(errno)) return items return items
def get_info_yandex(latitude, longitude): items = {} query = "{0}?format=json&geocode={1},{2}".format(yandex_geocoder, longitude, latitude) try: result = request_get(query) except ConnectionError as errno: trace.error(" ".join(("Connection error:", str(errno)))) return items except Timeout as errno: trace.error(" ".join(("Connection timeoute exceed:", str(errno)))) return items except HTTPError as errno: trace.error(" ".join(("Invalid HTTP response:", str(errno)))) return items except RequestException as errno: trace.error('Exception: {0}'.format(errno)) return items core_dic = json_loads(result.text) try: for feature_member in core_dic['response']['GeoObjectCollection']['featureMember']: try: kind = feature_member['GeoObject']['metaDataProperty']['GeocoderMetaData']['kind'] items[kind] = feature_member['GeoObject']['name'] except KeyError as errno: trace.warning("Invalid key: {0}".format(errno)) except KeyError as errno: trace.warning("Invalid key: {0}".format(errno)) return items return items