kisa_pisa Интересная тема!
Согласен с этим высказыванием
Топового оператора на данный момент ИИ не может заменить
Диспут - дело тонкое, это не только задать вопрос, проверить статистику покупателю, проверить клад на качество...

На моей практике именно из диспутов приходили лучшие курьеры, склады

  • Atos ответили на это сообщение.

    Кто может поделиться частью кода, чтобы условный скрипт написанный на питоне, который сейчас выводит точки координат на карте яндекс, которая к нему подключена по апи, автоматом считал расстояние до запрещенных объектов?

    • W1ldDog оценил это.
    • W1ldDog ответили на это сообщение.
      • Atos

        lvl 654

      DarkAli24 Диспут - дело тонкое

      Я работаю на 5 площадка по 70 активных диспутов в день

      Думаю это совсем не предел «тонкого дела».

      017405502309 Кто может поделиться частью кода, чтобы условный скрипт написанный на питоне, который сейчас выводит точки координат на карте яндекс, которая к нему подключена по апи, автоматом считал расстояние до запрещенных объектов?

      Вот это удобная была бы приблуда. Сам об этом давно думал, но далеко не погромист.

      • Atos ответили на это сообщение.
        • Atos

          lvl 654

        W1ldDog Отправка координат в яндекс карты менее безопасна, чем обработка локально. Там сложные условия проверки, автоматически можно только сократить выборку, которую потом всё равно проверять вручную.

        5 дней спустя

        Респект топикстартеру, круто, очень круто, но почему не веб? Я не выдержал, не смог понять почему питон почему десктоп и захуячил щас на коленке веб-решение на базе ОСМ (без дерганья АПИ яндекса/гугла) которое имеет ряд преимуществ:

        1. Кроссплатформенность: работает на любом устройстве с веб-браузером.
        2. Отсутствие необходимости установки: открывается прямо в браузере.
        3. Использование OpenStreetMap: бесплатные и открытые картографические данные.
        4. Широкий функционал: линейка, добавление точек, расчет расстояний и т.д.
        5. Удобный пользовательский интерфейс с контекстным меню.

        torsha.re/map/

        ✅ Линейка (начертит красную линию на карте и тут же обозначит её длинну в метрах)
        ✅ Добавление по координатам
        ✅ Кнопка показать моё местоположение на карте работает только после клика и дальнейшего разрешения доступа
        ✅ Добавление по клику на карте
        ✅ Массовый импорт точек
        (каждая точка в формате "60.002244,30.223344" должна быть с новой строки)
        ✅ Долгий тап / правый клик покажет контекстное меню с полезностями
        ✅ Каждая точка имеет порядковый номер, который наглядно виден прямо на карте
        ✅ Считает расстояние между всеми возможными парами точек на карте
        ✅ Возможность поделиться ссылкой на ваше состояние карты со всеми точками
        ⛔ В донаты от нарко-комьюнити я не больше не верю так что все хотелки (хотя тут уже есть всё что нужно) - в общем все изменения и доработки особенно для коммерческого использования присылайте в лс либо в лурк/телегу сделаю в день заказа за вы о***еете какие небольшие и даже смешные деньги,

        4 дня спустя

        Ray Допустим вбить подряд 5 координат и каждая из них будет подписана циферкой 1-2-3-4-5 маленькой где-нибудь возле точки, это упростит понимание онлайн ребятушкам

        блин только сейчас прочитал, но забавно что ровно так я и сделал: https://torsha.re/map/ (если что долгое нажатие если со смартфона или правый клик если с компа открывает контекстное меню со всей хурмой)

        • Atos

          lvl 654
        • Изменено

        К сожалению автор @evsegn давно не заходила. Для удобства работы в картографических программах немного переделал экспорт в .gpx сам. Вместо трека экспортируются точки.

        #!/usr/bin/python3
        # apt install python3-geopy
        # apt install python3-matplotlib
        
        import sys
        import math
        from geopy.distance import geodesic
        import matplotlib
        matplotlib.use('Qt5Agg')
        from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
        from matplotlib.figure import Figure
        from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QPushButton, QDoubleSpinBox, QPlainTextEdit, QLabel, QListWidget, QListWidgetItem, QDesktopWidget, QFileDialog
        from PyQt5.QtCore import Qt
        import datetime
        import re
        
        class CoordinateHelper(QMainWindow):
            def __init__(self):
                super().__init__()
                self.initUI()
        
            def initUI(self):
                self.setWindowTitle("EVSEGN Cord helper")
                screen = QDesktopWidget().screenGeometry()
                x = (screen.width() - 800) // 2
                y = (screen.height() - 800) // 2
                self.setGeometry(x, y, 800, 800)
        
                self.central_widget = QWidget()
                self.setCentralWidget(self.central_widget)
        
                self.create_widgets()
        
            def create_widgets(self):
                self.main_layout = QVBoxLayout()
                self.central_widget.setLayout(self.main_layout)
        
                self.input_layout = QHBoxLayout()
                self.main_layout.addLayout(self.input_layout)
        
                self.label = QLabel("Введите координаты (широта, долгота):")
                self.input_layout.addWidget(self.label)
        
                self.entry = QLineEdit()
                self.input_layout.addWidget(self.entry)
        
                self.distance_threshold_layout = QHBoxLayout()
                self.main_layout.addLayout(self.distance_threshold_layout)
        
                self.distance_threshold_label = QLabel("Порог расстояния (м):")
                self.distance_threshold_layout.addWidget(self.distance_threshold_label)
        
                self.distance_threshold_spinbox = QDoubleSpinBox()
                self.distance_threshold_spinbox.setRange(1, 100)
                self.distance_threshold_spinbox.setValue(25)
                self.distance_threshold_layout.addWidget(self.distance_threshold_spinbox)
        
                self.add_button = QPushButton("Добавить координаты")
                self.add_button.clicked.connect(self.add_coordinate)
                self.main_layout.addWidget(self.add_button)
        
                self.import_button = QPushButton("Импорт из файла")
                self.import_button.clicked.connect(self.import_coordinates_from_file)
                self.main_layout.addWidget(self.import_button)
        
                self.recognize_button = QPushButton("Распознать координаты на фото (В ПРОЦЕССЕ)")
                self.main_layout.addWidget(self.recognize_button)
        
                self.coordinates_list_label = QLabel("Добавленные координаты:")
                self.main_layout.addWidget(self.coordinates_list_label)
        
                self.coordinates_list = QListWidget()
                self.coordinates_list.itemClicked.connect(self.on_item_clicked)
                self.main_layout.addWidget(self.coordinates_list)
        
                self.delete_button = QPushButton("Удалить координаты")
                self.delete_button.clicked.connect(self.delete_coordinate)
                self.main_layout.addWidget(self.delete_button)
        
                self.export_button = QPushButton("Экспортировать в GPX")
                self.export_button.clicked.connect(self.export_to_gpx)
                self.main_layout.addWidget(self.export_button)
        
                self.fig = Figure(figsize=(10, 6))
                self.ax = self.fig.add_subplot(111)
                self.canvas = FigureCanvas(self.fig)
                self.main_layout.addWidget(self.canvas)
        
                self.coordinates = []
                self.distances = {}
        
            def parse_coordinates(self, coord_str):
                try:
                    lat, lon = coord_str.replace(',', ' ').split()
                    return float(lat), float(lon)
                except ValueError:
                    raise ValueError("Недопустимый формат координат. Используйте 'широта, долгота'")
        
            def calculate_distances(self):
                self.distances = {}
                for i in range(len(self.coordinates)):
                    for j in range(i+1, len(self.coordinates)):
                        start = self.coordinates[i]
                        end = self.coordinates[j]
                        distance = geodesic(start, end).m
                        self.distances[(i, j)] = distance
        
            def draw_map(self):
                self.ax.clear()
                self.ax.set_xlabel('Долгота')
                self.ax.set_ylabel('Широта')
                self.ax.set_title('Расстояние между координатами')
                for i, (lat, lon) in enumerate(self.coordinates):
                    self.ax.plot(lon, lat, 'bo', markersize=5)
                    self.ax.text(lon, lat, f"{i+1}", ha='center', va='center', fontsize=16)
                for (i, j), distance in self.distances.items():
                    start = self.coordinates[i]
                    end = self.coordinates[j]
                    if distance < self.distance_threshold_spinbox.value():
                        line_color = 'r' if distance < self.distance_threshold_spinbox.value() else 'b'
                        self.ax.plot([start[1], end[1]], [start[0], end[0]], f'{line_color}-')
                        midx = (start[1] + end[1]) / 2
                        midy = (start[0] + end[0]) / 2
                        self.ax.text(midx, midy, f"{distance:.2f} m", ha='center', va='center')
                self.canvas.draw()
        
            def add_coordinate(self):
                try:
                    lat, lon = self.parse_coordinates(self.entry.text())
                    self.coordinates.append((lat, lon))
                    item = QListWidgetItem(f"{lat}, {lon}")
                    self.coordinates_list.addItem(item)
                    self.entry.clear()
                    self.calculate_distances()
                    self.draw_map()
                except ValueError as e:
                    print(e)
        
            def delete_coordinate(self):
                current_row = self.coordinates_list.currentRow()
                if current_row != -1:
                    self.coordinates_list.takeItem(current_row)
                    del self.coordinates[current_row]
                    self.calculate_distances()
                    self.draw_map()
                
            def on_item_clicked(self, item):
                self.coordinates_list.setCurrentItem(item)
        
            def export_to_gpx(self):
                if not self.coordinates:
                    print("Нет координат для экспорта")
                    return
        
                filename, _ = QFileDialog.getSaveFileName(self, "Экспорт в GPX", "", "GPX files (*.gpx)")
        
                if not filename:
                    return
                
                with open(filename, "w") as f:
                    f.write("<?xml version=\"1.0\"?>\n")
                    f.write("<gpx>\n")
        
                    for i, (lat, lon) in enumerate(self.coordinates):
            
                        f.write(f"      <wpt lat=\"{lat}\" lon=\"{lon}\">\n")
                        f.write(f"        <name>#{i+1}</name>\n")
                        f.write(f"      </wpt>\n")
        
                    f.write("</gpx>\n")
        
                print(f"Координаты экспортированы в файл {filename}")
            
            def import_coordinates_from_file(self):
                filename, _ = QFileDialog.getOpenFileName(self, "Импорт из файла", "", "Text files (*.txt)")
                if not filename:
                    return
        
                with open(filename, "r", encoding="utf-8") as f:
                    text = f.read()
        
                coordinates = []
                for line in text.splitlines():
                    matches = re.findall(r"(\d+(?:\.\d+)?)", line)
                    if len(matches) == 2:
                        lat, lon = map(float, matches)
                        coordinates.append((lat, lon))
        
                for coord in coordinates:
                    item = QListWidgetItem(f"{coord[0]}, {coord[1]}")
                    self.coordinates_list.addItem(item)
                    self.coordinates.append(coord)
        
                self.calculate_distances()
                self.draw_map()
        
        
        if __name__ == "__main__":
            app = QApplication(sys.argv)
            window = CoordinateHelper()
            window.show()
            sys.exit(app.exec_())
        • Ray и evsegn оценили это.
        • evsegn ответили на это сообщение.
          5 дней спустя
          • evsegn

              lvl 53

            Atos А я просто сяду скоро ёпта

              • Atos

                lvl 654
              • Изменено

              evsegn Обстоятельства складываются вокруг меня не очень хорошо

              evsegn А я просто сяду скоро

              😨 Я очень хочу понимать это в хорошем смысле «приступлю к разработке»…

              • evsegn ответили на это сообщение.

                evsegn искренне желаю чтобы так как ты пишешь не случилось..

                • evsegn ответили на это сообщение.

                  Atos Да не. Скоро ( наверное скоро ;) ) здесь размещу проект свой, должно быть круто :)

                  Armageddonist-CKAM Да не в тюрьму же. Формулировка хреновая просто вышла))

                    evsegn а я думал тебя похитили и расчленили, арабик очень ждёт от тебя сообщения, свяжись с ним

                    • evsegn ответили на это сообщение.
                      21 день спустя

                      pureevil671games
                      Магазин МРЕМЯ КАЙФА И ТОЧКА КАЙФА
                      С УЧАСТЕМ СВО

                      КИДВЕТ НА БОЛЬШИЕ СУММА
                      #2244634диспут
                      Уважаемый Почему вы не обращаете внимания на людей
                      У меня в покупке отсутствует описания
                      Указания клад отсутствует. Корды не совпадают !
                      Ваша задача держать все на кон троле
                      Почему содейстий не оказывает х
                      Добрый день! Уважаемый модерр прошу изучить детально мою проблему уже почти неделя с момента покупки
                      Локация не соответствует брал Уфа но по факту это Кушнаренковский район
                      Не беда
                      Фото в закрепе купленной мною позициих
                      Без указания и описания
                      Закрепляю в хостинг фото х
                      Предоставленные мне магазином
                      https://gekkk.co/i/f56412b508bd3d16c97b2a8cf575cfb8
                      2: https://gekkk.co/i/8d3f581a4be53b9ee16d3b9e065a6e01
                      Повторил поиски сегодня очерной раз
                      Комментария курьера к сожалению я не услышал
                      Метку мне нарисовали после открытия диспута на протяжении недели виду переговоры с магазином они меня убеждают что он там
                      Где они мне метку нарисовали после моей покупки и открытия диспута
                      Магазин отвечает с неохотой
                      И с большим интервалом времени!
                      Надеюсь на ваше справедливое решения!
                      По моему заказу. фото без указаний и отметки не должны были как я считаю попасть на витрину к тому клад 30грамм без метки и указаний. Не в коем случае не говорю о магазине плохо
                      Бывают разные ситуации может но магазин посчитал что это я просто не могу найти. Фото моих поисков в том числе и с повторных есть чуть выше на хостингах.
                      Надеюсь на вашу помощь и справедливое
                      Решения!1
                      Модератор

                                                  Уважаемые участники диспута, мною были детально изучены все предоставленные материалы, в частности доводы Покупателя и представителя Магазина. На основании всех вышепредоставленных фактов с каждой стороны, делаю вывод, что Покупатель в полной мере не представил убедительных доказательств, позвояющих сделать вывод об отсутствии клада. Был проведен детальный анализ работы Курьера как по городу, так и по данной локации - проблем не выявлено. Сам клад считаю надежным - объективных причин для его пропажи, учитывая также свежесть клада, не выявлено. 

                      Принимая во внимание способ и место заклада, срок исполнения, учитывая статистики сторон, диспут закрываю в пользу Продавца. Благодарю стороны за участие, с уважением Moderator OPT RP3.

                                  
                                                        
                                                               
                      
                                      27/08, в 22:23
                                    
                                  
                      
                                
                      
                              
                      
                                        
                                                
                                    
                                  
                      
                                              
                                                    Представитель магазина




                      • Ray ответили на это сообщение.
                        • Ray

                          lvl 2626

                        drcsomali
                        Обратись в соответствующий раздел БС, по всём дискуссиям спамить не нужно

                        • drcsomali ответили на это сообщение.

                          #2244634диспут
                          Уважаемый Почему вы не обращаете внимания на людей
                          Закрыл диспут без предоставления мне фото
                          Клада
                          Что за бред
                          Есть кто компетентен в таком вопросе ??

                          У меня в покупке отсутствует описания
                          Указания клад отсутствует. Корды не совпадают !
                          Ваша задача держать все на кон троле
                          Почему содейстий не оказывает х
                          Добрый день! Уважаемый модерр прошу изучить детально мою проблему уже почти неделя с момента покупки
                          Локация не соответствует брал Уфа но по факту это Кушнаренковский район
                          Не беда
                          Фото в закрепе купленной мною позициих
                          Без указания и описания
                          Закрепляю в хостинг фото х
                          Предоставленные мне магазином
                          https://gekkk.co/i/f56412b508bd3d16c97b2a8cf575cfb8
                          2: https://gekkk.co/i/8d3f581a4be53b9ee16d3b9e065a6e01
                          Повторил поиски сегодня очерной раз
                          Комментария курьера к сожалению я не услышал
                          Метку мне нарисовали после открытия диспута на протяжении недели виду переговоры с магазином они меня убеждают что он там
                          Где они мне метку нарисовали после моей покупки и открытия диспута
                          Магазин отвечает с неохотой
                          И с большим интервалом времени!
                          Надеюсь на ваше справедливое решения!
                          По моему заказу. фото без указаний и отметки не должны были как я считаю попасть на витрину к тому клад 30грамм без метки и указаний. Не в коем случае не говорю о магазине плохо
                          Бывают разные ситуации может но магазин посчитал что это я просто не могу найти. Фото моих поисков в том числе и с повторных есть чуть выше на хостингах.
                          Надеюсь на вашу помощь и справедливое
                          Решения!1
                          Модератор

                                                      Уважаемые участники диспута, мною были детально изучены все предоставленные материалы, в частности доводы Покупателя и представителя Магазина. На основании всех вышепредоставленных фактов с каждой стороны, делаю вывод, что Покупатель в полной мере не представил убедительных доказательств, позвояющих сделать вывод об отсутствии клада. Был проведен детальный анализ работы Курьера как по городу, так и по данной локации - проблем не выявлено. Сам клад считаю надежным - объективных причин для его пропажи, учитывая также свежесть клада, не выявлено. 

                          Принимая во внимание способ и место заклада, срок исполнения, учитывая статистики сторон, диспут закрываю в пользу Продавца. Благодарю стороны за участие, с уважением Moderator OPT RP3.

                                      
                                                            
                                                                   
                          
                                          27/08, в 22:23
                                        
                                      
                          
                                    
                          
                                  
                          
                                            
                                                    
                                        
                                      
                          
                                                  
                                                        Представитель магазина