ты комментируешь чужие слова, не на твой контент и еслия что то не понимаю, то как можно пытаться замылить элементарные понятия про то что кража есть кража, чем ее ни оправдывай. Прежде чем советовать, может сам перечитаешь?
Никаких сложностей для тех, кто пытается понять. И если речь идет про ПО - не стоит мешать сюда что-то иное. Ты ведь понятия не имеешь, как OpenAI работает с информацией, что берет из открытых источников, что из платных и как урегулирует отношения с правообладателями. Но у тебя лишь огромное желание натянуть сову на глобус.
А чем вы отличаетесь от этих угнетателей, поддерживая других угнетателей?
Вы же всё покупаете, всё лицензионное, поддерживаете разработчиков. Но действительно ли деньги текут к разработчикам, или же ещё один олигарх где-то там вкладывает прибыль с продаж в "другие компании, использующие рабский труд"?
Тут сто лет назад уже одни пытались свергнуть "угнетателей, душителей идей"(С) Результаты до сих пор расхлебать не могут на 1/6 части суши.Мой работодатель создал 40000 рабочих мест и всем обеспечил не нищенскую зарплату а возможность достойно жить. В отличие от работодателя в колхозах или школах, гед живут от ЗП до ЗП. А куда он вкладывает - его дело. Свои обязательства передо мной он выполняет. Куда там текут деньги мои от покупки - меня мало волнует, но я точно знаю, что разработчики с той стороны тоже не бедствуют) И тот же Билл Гейтс основал крупнейший в мире фонд благотворительности и значительную часть доходов тратит на него.
Нет, гражданин Dmitriy_2014, это ты просто свое воровство пытаешься прикрыть красивыми словами. Манифест? Так ворье тоже придумало себе "понятия" типа))) А разницы никакой нет. Борешься с корпорациями которые наживаются? Так иди обнеси Икею, они при производстве мебели использовали бесплатный труд заключенных. Или условный Адидас, который шьет свои кроссы в Индонезии, платит копейки местным а тут продает по 100 баксов)) Или вот, не покупай а воруй продукцию у жителей Дагестана и Чечни - там в селах периодически рабский труд используют.Что, слабо?
Когда за пиратское ПО ты будешь получать реальный срок, как за кроссовки, ты живо забудешь про всякие манифесты и начнешь жить по закону, пират))
Просто есть другие способы монетизации.
Простейший пример - Android OS или Punto Switcher.
Представляю себе Винду, которая каждые 5 минут запускает тебе на весь экран рекламный ролик на 2 минуты с блокированием всех функций, думаю ты будешь сильно рад, если в этот момент подключен онлайн куда-то и нужно принимать решения. Пунто, который собирает о тебе всю информацию - вообще отличный пример. Он вообще-то приплачивать должен за свою установку, он и так хорошо получает от спецслужб.Если тебе не нравится засекреченность архивов - это тебе с предложениями в зак. орган, принимай новые законы, в чем проблема)))НЕ понимаю как все это соотносится с тем, что я написал программу, ты ее украл и еще и ищешь себе оправдания.
Мне понятно твоя позиция абсолютно. Мне противна позиция тех, кто готов воровать, потому что им "дорого", "баги" и иные оправдалки))
Это все очередные оговорки. Для начала - читай лицензионное соглашение, в котором ты соглашаешься использовать ПО "as is". Если у тебя есть замечания - открывай багрепорт. Большинство разработчиков реагируют на замечания и оперативно исправляют баги. Но стоит понимать, что во-первых иногда это исключительно твое предпочтение. Во-вторых - системы типа винды и больших игр - сложные системы и баги неизбежны. Если в целом они помогают решить твои задачи - нет причин не платить. Но всегда можно отказаться. Аот я 2 года платил за TomTom navigator. В какой-то момент решил, что он меня не устраивает и перешел на Waze и мирюсь с рекламой.
А если ты скачал кино и оно тебе не понравилось - это повод потребовать вернуть деньги? В кинотеатре ты тоже так делаешь?
Давай не будем уходить в эту плоскость. К сожалению это реальность наших дней и нужно правильно понимать причины. Мне вот тоже недоступны российские сервисы - не считаю поводом идти и воровать это ПО.Просто перестал использовать.
Воруешь ПО. Для меня нет разницы. Кража есть кража, как ее не прикрывай. Есть продукт, который произвел другой человек. Он его продает. А ты воруешь. Нет денег - пользуйся бесплатными альтернативами, их предостаточно.
А почему ты считаешь, что в Польше нет таких воришек как Дмитрий? Потому и пасуться. Тут на скачивание пока не особо смотрят, вот за раздачу можно попасть.
Дешевый отмаз и оправдание воровской натуры. Если фигня не существует - зачем она тебе? Какая разница - вирутальный это продукт или реальный? Ты кусок хлеба сьедаешь за минуту, а за компом с пиратской виндой сидишь сутками - что реальнее. Не устраивает чужой продукт - создай свой. Нет разницы, в каком магазине воровать - виртуальном или на соседней улице. Просто там ты боишься попасться, а тут можешь сделать это безнаказанно. Пока что. В Германии за торренты такой штраф - можно не одну Винду купить. В Польше можно попасть тоже, особенно за раздачу.
Но в целом, пираты мне симпатичны свой удалью и беспринципностью 😁
Когда тебе обнесут хату - тоже будешь восторгаться их удалью?
я не собираюсь за кучу денег покупать для домашнего использования Photoshop, dreamweaver или RAD Studio (развитие Delphi)
пусть их покупают организации для коммерческого использования
Я не собираюсь в магазине покупать хлеб или джинсы, потому что это для личного использования! Пусть их покупают рестораны/организации! А у меня есть полное право своровать их!Реально омерзительны ТС с такими вопросами и все кто тут его поддерживает. Воровство и есть воровство, как его не назови. И восторгаться теми кто обходит защиту продуктов от копирования - ну такое себе. Теми, кто из магазинов вещи прет - тоже восторгаешься? А теми, кто залезет в твою квартиру и обнесет тебя по полной - тоже аплодировать будешь?
В итоге нашел, как удалять картинки, правда не до конца. В твоем документе 3 картинки, одна битая и ее удалить не может. Нужно возиться с контент-тайпами, проверять что с ней и тоже добавлять в список на удаление.Это код чисто для бэка, для колаба нужно модифицировать работу с выводом на экран, это мне уже лень.
import osimport docxfrom docx import Documentimport ipywidgets as widgetsfrom IPython.display import display, clear_output# from google.colab import filesimport iofrom PIL import Imagefrom fastapi import Pathfrom docx.enum.shape import WD_INLINE_SHAPE_TYPEfrom docx.text.run import Runfrom docx.oxml.ns import qnimport pandas as pdimport matplotlibimport matplotlib.pyplot as pltimport numpy as npfrom structlog import get_loggerlogger = get_logger(__name__)matplotlib.use('Agg')path_str = os.getcwd()class WordEditor: def __init__(self, file): self.file = file self.document = None self.tables = [] self.images = [] def load_file(self): if isinstance(self.file, str): with open(self.file, 'rb') as f: self.document = Document(f) else: self.document = Document(io.BytesIO(self.file)) return self.document def get_empty_tables(self): for i, table in enumerate(self.document.tables): if all(not cell.text.strip() for row in table.rows for cell in row.cells): self.tables.append(table) return self.tables def get_images(self): """Extract images from both inline shapes and shapes in Word document""" images = [] try: # Handle inline shapes (embedded images) for shape in self.document.inline_shapes: try: if shape.type == WD_INLINE_SHAPE_TYPE.PICTURE: rId = shape._inline.graphic.graphicData.pic.blipFill.blip.embed image_part = self.document.part.related_parts[rId] if image_part and hasattr(image_part, 'blob'): images.append({ 'image_data': image_part.blob, 'content_type': image_part.content_type }) except Exception as e: logger.error(f"Error processing inline shape: {str(e)}") # Handle floating shapes for rel in self.document.part.rels.values(): try: if "image" in rel.target_part.content_type: self.images.append(rel.target_part) except Exception as e: logger.error(f"Error processing relation: {str(e)}") except Exception as e: logger.error(f"Error accessing document: {e}") logger.info(f"Found {len(images)} images in document") return self.images def remove_empty_tables(self): """Remove empty tables from document using the result of get_empty_tables.""" removed_count = 0 for table in self.tables: table._element.getparent().remove(table._element) removed_count += 1 return removed_count def remove_images(self): """Remove all images from document use self.images.""" removed_count = 0 for image in self.images: del self.document.part.rels[image.rId] removed_count += 1 return removed_count def save_new_document(self): """Save self.document with new name with prefix cleared_""" new_filename = os.path.join(path_str, "media/cleared_document.docx") self.document.save(new_filename) return new_filenameif __name__ == "__main__": print("path:", path_str) filename = os.path.join(path_str, "media/worddoc.docx") executor = WordEditor(file=filename) executor.load_file() executor.get_empty_tables() executor.get_images() executor.remove_empty_tables() executor.remove_images() executor.save_new_document()