Компонент Парсер Яндекс.Карт для InstantMaps (для iCMS 2*)

4710
Приветствую

Хочу представить компонент Парсер Яндекс.Карт для InstantCMS для второй ветки InstantCMS. Добавилось много фишек по сравнению с версией под первую ветку.



Возможности:

1. Парсинг Яндекс.Карт по введенному городу и поисковому запросу (например, найти все Кафе в радиусе 10км от центра города)
2. Добавление всех рубрик, которые выдает Яндекс и привязка к ним организаций.
3. Добавление всех свойств, которые выдает Яндекс и привязка их к нужным рубрикам.
4. Использование стандартного механизма импорта InstantMaps (все добавленные объекты можно увидеть в админке InstantMaps)
5. Группировка адресов по наименованию организации.

Требования:
ioncube loader 4.4+
купленный компонент InstantMaps для второй ветки

По традиции кидаю ссылку на бесплатную версию (ниже), которую можно смело пробовать на своем домене. Версия полностью функциональная, ограничение только на количество добавляемых за раз объектов - 15 объектов. В полной версии Яндекс отдает до 1000 объектов за один раз.

Инструкция:

Скачать и установить стандартными средствами
Перейти на страницу /iparserymaps/import для работы с компонентом. Парсер работает только под администратором (в целях безопасности).

Платную версию выложу на днях, в любом случае прошу даже тех, кто хотел приобрести - сначала попробовать у себя ограниченную. Может быть появятся какие-то мысли по развитию компонента. Цены, скидки и ссылку на полную версию добавлю в пост завтра-послезавтра.

Видео презентация:

Напоследок

PS В ходе разработки у меня возник вопрос - а может есть смысл добавить поддержку и других типов контента, а не только InstantMaps ? - не у всех есть этот компонент и не всем он нужен... А вот заполнить справочник организаций может пригодиться.
Мне нравится! Компонент для ICMS 2* | Выбор шаблона для двойки (возможность установить любой странице любой шаблон)
Комментарии (82)
DeeMon 15 июня 2015 в 15:39 +1
С 2Gis не планируется? В Яше не всегда информация полная и актуальная.
SJen 15 июня 2015 в 15:51 0
А с 2Gis через официальный API и получение лицензионного ключа? - я пока не вижу других вариантов..
SJen 15 июня 2015 в 16:05 0
Хотел предложить datacol для парсинга 2Gis - зашел на их сайт, а они уже отказались от 2GIS, наехал юридический отдел)) Так что официальное АПИ как вариант, но это не для всех подойдет..
DeeMon 15 июня 2015 в 16:18 0
Хм, печально тогда... Просто по нашему городу сравнил Яшу и 2Гис, получилось, что в Яше инфо не полная (не все объекты), и примерно половина из того, что в базе не актуально по некоторым данным. Может это конечно только у нас так...
AndroS 15 июня 2015 в 15:56 0
В видео подробнее бы описать, как отображаются свойства рубрик, отображаются ли они, в частности, в фильтре мапса?
PS: скидки покупателям для предыдущей ветки инстанта будут?
SJen 15 июня 2015 в 16:00 0
PS: скидки покупателям для предыдущей ветки инстанта будут?
Будут, пока не готов конкретней ответить.

В видео подробнее бы описать, как отображаются свойства рубрик, отображаются ли они, в частности, в фильтре мапса?

Свойства автоматически в фильтр не добавляются. Могу добавить в настройки флаг (добавлять-не добавлять).
Добавить их в фильтр можно вручную. Если есть двойка с мапсом - я бы предложил поставить эту версию и "потыкать".

Я решил не добавлять автоматом свойства в фильтр, потому что их получается оооочень много.. И блок фильтров превращается в мусорку. Но добавить флаг не проблема, будет. Ну и, конечно, в любом случае можно руками в админке добавлять-убирать свойства из фильтра.
nmsk 15 июня 2015 в 16:19 0
А как быть с дубликатами? Компонент запоминает какой объект он уже парсил и добавлял в базу?
nmsk 15 июня 2015 в 16:20 0
пс
Спасибо! dance
SJen 15 июня 2015 в 16:51 0
Добавление идёт через стандартный импорт в instantmaps. То есть результат будет такой же как если бы вы загрузили в админке файлы с пересекающимися объектами.
nmsk 15 июня 2015 в 16:29 0
Эм.. а если у меня созданы уже рубрики, и я хочу объекты добавить именно в них, компонент всё равно будет создавать их сам? о_О
SJen 15 июня 2015 в 16:49 +1
Если есть рубрика "кафе" и добавить нужно организацию в эту рубрику, то новая создаваться не будет. Новая создаётся при отсутствии нужной
nmsk 15 июня 2015 в 16:57 0
А нужная или не нужная она, определяется автоматически по названию?
SJen 15 июня 2015 в 17:22 0
У меня два варианта было (так же как было в парсере для первой ветки)
1. вы сами указываете рубрику, в которую нужно добавлять все спарсенные организации
2. рубрики берутся из Яндекса - что он выдает, туда и постим (если есть в базе, используем нашу - если нет, создаем).
SJen 15 июня 2015 в 17:24 0
Импорт карт так же работает - либо указываете свою, либо берется из файла.
Но я на самом деле не ограничен возможностями стандартного "импорта карт", так что если предложите еще разумные варианты, добавлю.
Алексей 15 июня 2015 в 18:25 0
Вопрос: населенный пункт - Город берется из базы сайта или использует свою?
к чему вопрос - откорректировал страны, города под свои нужды и естественно поменялись id.
SJen 15 июня 2015 в 18:42 0
выбирается город из базы сайта стандартными средствами - это нужно чтобы корректно сохранить информацию в базу
если вы поменяли города - все нормально, они и будут использоваться. ID не важны
Ingvarruss 15 июня 2015 в 19:46 +2
C каждым днем убеждаюсь в продвинутости и функциональности двойки, раз уж практически все разработчики на неё переезжают.
DTVRus 15 июня 2015 в 20:41 0
с ней проще работать, отличный фреймворк smoke
Ingvarruss 15 июня 2015 в 23:42 +1
У меня выдает ошибку при парсинге INSERT INTO cms_con_places (`title`, `content`, `teaser`, `category_id`, `import_id`, `user_id`) VALUES ('Тайна', NULL, NULL, '143', '1434400860', '8')
SJen 16 июня 2015 в 07:26 0
Ошибку то саму напишите, это вы запрос написали - а сам текст ошибки какой? - можете ещё город-запрос написать, чтобы я у себя проверить смог.
SJen 16 июня 2015 в 07:29 0
Погодите, а у вас InstantMaps то установлен?
Bambalach 16 июня 2015 в 00:34 0
У меня тоже ошибка
Fatal error: Maximum execution time of 30 seconds exceeded in
*****system/controllers/iparserymaps/actions/process.php on line 1073742902
SJen 16 июня 2015 в 07:27 0
Нужно увеличить время для скриптов, 30сек вашему серверу не хватает для обработки
Ingvarruss 16 июня 2015 в 11:18 0
Город Ростов на Дону
Мапс установлен
Ошибка - Ошибка в запросе БД: Unknown column 'teaser' in 'field list' INSERT INTO cms_con_places (`title`, `content`, `teaser`, `category_id`, `import_id`, `user_id`) VALUES ('Участковый пункт полиции', NULL, NULL, '142', '1434442587', '8') Последние вызовы: insert() @ /home/r/rostovporu/public_html/system/core/model.php : 482 insert() @ /home/r/rostovporu/public_html/system/controllers/content/model.php : 1172 addContentItem() @ /home/r/rostovporu/public_html/system/controllers/places/model.php : 0 importItems() @ /home/r/rostovporu/public_html/system/controllers/iparserymaps/actions/process.php : 965 goimport() @ /home/r/rostovporu/public_html/system/controllers/iparserymaps/actions/process.php : 952 importobjects() @ /home/r/rostovporu/public_html/system/controllers/iparserymaps/actions/process.php : 686 parseYandex() @ /home/r/rostovporu/public_html/system/controllers/iparserymaps/actions/process.php : 54 run() call_user_func_array() @ /home/r/rostovporu/public_html/system/core/controller.php : 276 runExternalAction() @ /home/r/rostovporu/public_html/system/core/controller.php : 207 runAction() @ /home/r/rostovporu/public_html/system/core/core.php : 641
SJen 16 июня 2015 в 11:40 0
Ошибка понятно, не почем так пока не могу сказать.. Может версия мапса другая? - хотя вроде она одна всего для двойки.
Колонка teaser - это краткое описание для объекта.

http://prntscr.com/7hj6iq - посмотрите скрин админки, у вас не так? - может вы сами удалили это поле? - оно есть по умолчанию, но удалить его можно руками из админки.
SJen 16 июня 2015 в 11:44 0
Если удалили, то его можно создать и ошибки не будет
qwest 16 июня 2015 в 11:31 0
Может просто в тип контента парсить?
SJen 16 июня 2015 в 11:42 0
Как именно?

В карты заводится Название, список адресов (может быть 1, а может быть и 10). Контакты, для каждого адреса свои.

Как именно это загонять в тип контент? - все кучей в виде текста?
qwest 16 июня 2015 в 13:56 0
Создать новый тип контента создать набор полей подходящий под парсер. И парсить в эти поля. А карту парсить например в дополнение тип поля карта кто то делал для двойки.
SJen 16 июня 2015 в 15:06 0
А в какое поле можно парсить список адресов с неизвестным заранее количеством элементов?

Ну в принципе вариант, разработать свой компонент на основе типа контента (или просто тип контента, если стандартных свойств хватит).
qwest 16 июня 2015 в 15:08 0
Очень было бы не плохо не нужно было бы покупать два компонента.
Remarkus 16 июня 2015 в 12:00 0
Красота. Ждем полную версию по разумной цене.
Ingvarruss 16 июня 2015 в 12:00 0
Огромное спасибо. Да, поля не было. Теперь все отлично.
Вопрос немного не по теме, но парсится все с указанием сайтов и получаются все прямые ссылки, как исправить подскажите кто нибудь?
SJen 16 июня 2015 в 12:20 +1
Да, я тоже заметил такую штуку в InstantMaps smile

Тут дело не в том, как парсится - а в том, как это выводится в шаблоне. То есть нужно править шаблон.

Надеюсь, меня не сильно побьют за выкладывание кода шаблона платного компонента. Но я совсем чуть-чуть.
Откройте файл /templates/default/controllers/places/contacts.tpl.php.
Найдите строку
Код PHP:
  1.  
  2. <li class="url"><a href="<?php echo $href; ?>" target="_blank"><?php html($contacts['url']); ?></a></li>
  3.  
и поменяйте на
Код PHP:
  1.  
  2. <li class="url"><a href="/redirect?url=<?php echo urlencode($href); ?>" target="_blank"><?php html($contacts['url']); ?></a></li>
  3.  
Это добавит вывод внешней ссылки через редирект
ermakover 16 июня 2015 в 20:54 +1
Полезное дополнение, спасибо. Да и за компонент спасибо огромное. Пока что попробую на бесплатной версии. Уж больно много у меня создалось категорий по запросу: "Кафе".
SJen 16 июня 2015 в 23:42 +3
ermakover, ресторан, столовая, пиццерия - там много связанных. Я добавлю настройку, чтобы рубрики не создавались, а публикация шла в заданную только.
ermakover 17 июня 2015 в 07:24 0
SJen, это было бы хорошо с настройкой парсинга для рубрик, но вообще, моё субъективное мнение, что кое-какую работу нужно и можно ручками делать, чтобы не получилось совсем уже точной копии Яндекс каталога. И СЕО для рубрик вручную прописывать.
Ingvarruss 16 июня 2015 в 12:28 +1
SJen +++
Ingvarruss 16 июня 2015 в 12:31 +1
И крайний момент хотел бы уточнить. В новой версии яндекс карт вообще не вижу структурирования рубрик, вернее я вообще не могу найти их, только через поиск. Мож я не там смотрю?
Ingvarruss 17 июня 2015 в 00:07 +2
Я конечно со многим здесь встречался, но за что минусы то?
PIN 17 июня 2015 в 00:21 +2
так лучше? ;)
Олег Васильевич я 17 июня 2015 в 00:45 0
Скрытый текст виден только зарегистрированным пользователям
Олег Васильевич я 17 июня 2015 в 00:47 0
Скрытый текст виден только зарегистрированным пользователям
Максим 17 июня 2015 в 07:00 0
Полезный компонент. Хотелось бы поинтересоваться у разработчика для импорта используется API компонента InstantMaops или свой?
SJen 17 июня 2015 в 13:30 0
Категории и свойства свойства создаются и привязываются друг к другу у меня. Из модели компонента InstantMaps используется только метод "Импорт", который загоняет объекты и адреса в базу данных. Но API это громко сказано, там нет АПИ как такового..
ermakover 17 июня 2015 в 07:50 0
У меня вот что обнаружилось.
Вчера установил бесплатный парсер и спарсил 15 организаций.
Сегодня вообще не парсит.
Нажимаешь "Парсить!" - картинка прогресса вообще не отображается, вместо неё отображается значок отсутствия картинки, потому что файла такого нет.
Но дело не в картинке,а том, что не парсит. Может быть, в бесплатной версии всего 15 объектов можно спарсить и всё?
ermakover 17 июня 2015 в 08:41 0
Откатил сайт назад до установки, установил заново. Попробовал парсить - глухо висит. А вчера работало. Это у меня одного так?
SJen 17 июня 2015 в 09:34 0
Проверю как доберусь до компьютера..
Ограничение 15 - это на один запрос. Запросов можно делать неограниченное количество.
Ramin 17 июня 2015 в 14:32 0
По тестил и выходит с ограничением если два раза парсить "Кафе" то спарсятся одни и те же компании
SJen 17 июня 2015 в 14:36 0
Логично, не правда ли?)) Если два-три-пять раз вбивать в Яндекс один и тот же запрос - результат будет одинаковым - компонент же с Яндексом общается, тот и отвечает одним и тем же.

Я имел ввиду, что "15" - это не какой-то глобальный лимит, который заблокирует компонент. 15 - это ограничение на один запрос. А запросов разных можно делать сколько угодно.
ermakover 17 июня 2015 в 15:56 0
Разобрался с проблемой. Оказалось при восстановлении сайта у провайдера база данных восстанавливалась, а файлы оставались теми же. Раньше такого не бывало, поэтому на такое погрешить не мог пока не заметил, что в файловом менеджере файлы за сегодняшнюю дату, хотя делал восстановление на два дня назад. Похоже провайдера нужно менять.
А так всё заработало. Извините за ложную информацию.
SJen 17 июня 2015 в 16:01 0
Отлично, что все решилось
Ramin 17 июня 2015 в 14:27 0
Парсер создает только категории? Или его как то можно настроить что бы создовал и под категории?
SJen 17 июня 2015 в 14:34 0
Предложите как это должно выглядеть.
Создавать категории внутри какой-то, которую выберет админ в настройках?
ermakover 17 июня 2015 в 16:15 0
Вот ещё вопрос такой. Допустим я спарсил два запроса "кафе" и "детский клуб" и у меня образовалось уже 32 категории.
А если я теперь эти категории сделаю подкатегориями, парсер их увидит, чтобы поместить туда новые объекты. Или же лучше уже напарсить объектов по любым возможным запросам, а потом уже по окончании работы всё это упорядочить в категории и подкатегории?
ermakover 17 июня 2015 в 16:59 0
И со свойствами получается непонятка.
Вроде как в объектах они есть, но фильтрами они не обрабатываются.
То есть обрабатываются, если пользователь в строковом поле пишет слово "есть" или "нет".
Но пользователь может об этом и не догадаться.

Хотя всё это мелочи по сравнению с тем с какой скоростью парсятся объекты laugh
SJen 17 июня 2015 в 17:12 +1
ermakover:
А если я теперь эти категории сделаю подкатегориями, парсер их увидит, чтобы поместить туда новые объекты.

Синхронизация рубрик работает по наименованию - то есть перенести можете куда пожелаете, новая не создастся.

То есть обрабатываются, если пользователь в строковом поле пишет слово "есть" или "нет".
Есть такая нехорошая штука, о которой я не написал.. с которой столкнулся при импорте.

У Яндекса у некоторых свойств тип "список", например у свойства "Кухня". Значение этого свойства - список из нескольких элементов, например "русская", "китайская", "европейская". В текущей версии инстанта нельзя в типе контента указать список значений. Можно выбрать только одно значение. Поэтому я загоняю этот список в строку.

Еще момент - если искать по свойству "кухня" и вбивать часть фразы, например "русс", то ничего не найдется - надо вводить целиком "русская", как в объекте записано.. Это работа стандартного фильтра.

Эти моменты, конечно, решатся в будущем, но пока так.
ermakover 17 июня 2015 в 20:06 +1
Всё-таки мне кажется нужно давать возможность пользователю как-то парсить в определённую пользователем категорию, потому что я сегодня напарсил категорий больше, чем объектов.
Стал из них делать подкатегории, стали появляться сбои и баги - к сожалению структура категорий Инстанта2 пока ещё не слишком совершенна.
Да и для провинциального города большое количество взаимоповторяющих категорий и подкатегорий - это не есть хорошо.
Либо нужно изначально сделать всю структуру категорий и подкатегорий и уже потом начинать парсить, убирая лишнее.
Ramin 18 июня 2015 в 06:56 +2
Вот допустим у яндекса уже есть свои категории и под категории (https://old.maps.yandex.ru/?where=&ll=55.983161%2C54.738437&spn=0.352249%2C0.112237&z=12&l=map). По чему бы не сделать так что бы парся он сразу брал их. А то при большем парсенге организаций создается слишком много категорий.
Или дать возможность пользователям выбирать перед парсингом те категории куда будут парсится организации
SJen 18 июня 2015 в 07:12 +1
Вот допустим у яндекса уже есть свои категории
Так Яндекс любезно их отдает и парсер съедает и создает как раз их. Просто фишка в том, что один объект может находиться в нескольких категориях.

По чему бы не сделать так что бы парся он сразу брал их.
Так и есть, так оно и работает - берет их. Парсер сам не придумывает рубрики)

Или дать возможность пользователям выбирать перед парсингом те категории куда будут парсится организации
Согласен, да будет так.
ermakover 18 июня 2015 в 09:12 0
К сожалению, получается так, что парсер именно "придумывает" рубрики. Причём в единственном числе, хотя в у Яндекса везде множественное число. Видимо берёт название из категории объекта, где характеристика объекта дана в единственном числе. Вот результат по запросу: "кафе".

Создана рубрика Кафе
Создана рубрика Пиццерия
Создана рубрика Ресторан
Создана рубрика Ночной клуб
Создана рубрика Бильярдный клуб
Создана рубрика Булочная
Создана рубрика Кондитерская
Создана рубрика Суши-бар
Создана рубрика Доставка еды и обедов
Создана рубрика Караоке-клуб
Создана рубрика Банкетный зал
Создана рубрика Кейтеринг

В принципе и это не криминал. Спарсил и переместил объекты куда нужно, а ненужные категории удалил.
SJen 18 июня 2015 в 09:25 0
Не придумывает..
Яндекс их так отдает.

Видимо берёт название из категории объекта
Согласен, там и берет - больше неоткуда..
ermakover 18 июня 2015 в 08:42 0
Спасибо за ссылку, я вчера искал этот список категорий, но на новой карте его нет. Я полагаю разумней будет сразу создать его копию на сайте, а потом уже парсить, чтобы потом не мучатся с категориями и подкатегориями.
SJen 18 июня 2015 в 09:05 0
ermakover:
моё субъективное мнение, что кое-какую работу нужно и можно ручками делать, чтобы не получилось совсем уже точной копии Яндекс каталога.

ermakover:
Я полагаю разумней будет сразу создать его копию на сайте

laugh
ermakover 18 июня 2015 в 09:15 0
Дело в том, что я так и делаю.
Сначала закрываю от индексирования категории каталога или доски объявлений, "заимствую" их, наполняю, а потом начинается трудная и муторная работа по переименованию категорий и подкатегорий в близкие по смыслу значения и написанию СЕО для каждой категории.
Ramin 19 июня 2015 в 06:13 0
Просто у яндекса категории и подкатегории, а компанент к сожалению создает только категории первого уровня в результате получается огромное количество не структурированных категорий!
SJen 19 июня 2015 в 06:33 0
Парсер парсит организации, только их, только по запросу. Рубрики там выводятся без иерархии - поэтому и создаются без иерархии. Новая версия уже в пути)
Ramin 19 июня 2015 в 06:14 0
Спасибо за ссылку, я вчера искал этот список категорий, но на новой карте его нет. Я полагаю разумней будет сразу создать его копию на сайте, а потом уже парсить, чтобы потом не мучатся с категориями и подкатегориями.
Отпишись после того как по пробуешь)
ermakover 19 июня 2015 в 07:04 0
Нет, к сожалению, данный способ тоже не подходит по причине того, что допустим - мы парсим объекты, создаются категории. Много как мы знаем. И допустим я из спарсенной категории "Кафе" перенёс все объекты в категорию "Кафе, рестораны, бары", а остальные категории удалил. И вот объекты, которые есть в двух или более категориях тоже удаляются. И удаляются так же и из категории "Кафе, рестораны, бары".
Это тоже недоработка движка.
Потому что вот у меня есть проект на Престашоп и там при удалении категории задаётся вопрос - удалить товары из категории полностью или оставить их в других категориях.
Так что выход один - ждать от SJen возможности парсить в заранее созданные категории.
SJen 19 июня 2015 в 10:31 0
Так что выход один - ждать от SJen возможности парсить в заранее созданные категории.

готово, попробуйте.
Гарри 27 июня 2015 в 09:14 +1
Интересует 2 момента:

1. Не удобно, что свойства создаются с условием, что они должны быть обязательно заполнены. Это не удобно при редактирование объектов, к пустым свойствам надо что-то приписывать иначе не дает сохранить.
2. И не понятно, что происходит с удаленными объектами(которые не подходят для сайта) при повторном парсенге?
ermakover 7 августа 2015 в 07:04 0
Парсер очень хороший, разработчику спасибо.
Для тех, кто будет использовать небольшая информация. При парсинге адреса объектов берутся, естественно, из Яндекс карт но вот формат адреса у всех получается разный.
То есть один и тот же адрес после парсинга может быть написан по-разному, например: улица Мира, Мира улица, Мира ул., Мира.
В результате объекты с одинаковым адресом не объединяются в один, а залезают друг на друга.
И из-под верхнего нижний никак не достать.
Вариант лечения я нашёл только один - утвердить для себя формат адреса, к примеру вид-название ( улица Мира) или название-вид (Ярославское шоссе) и править все объекты вручную.
evgen 27 декабря 2016 в 02:43 0
Не могу понять скачал, установил и вот такое - записей 0. Да и сайт по https, пока не отключишь защиту в браузере ничего не происходит
Завершен импорт #1482795135 - открыть в админке
Ограниченная версия.
Купить полную версию можно, обратившить к SJen или написать запрос на [email protected]

Всего обработано записей: 0.
AndroS 27 декабря 2016 в 07:46 0
За что забанили автора?
lezginka.ru 27 декабря 2016 в 11:27 0
AndroS, о каком авторе идет речь ?
AndroS 27 декабря 2016 в 17:21 0
об SJen
Fuze 27 декабря 2016 в 18:22 +3
За что забанили автора?
Забанили не автора, а того, кто завладел его аккаунтом. А завладел его аккаунтом один наш давний юзер. Ужасно непонятливый и считающий что все вокруг дураки smile
А сам автор давно ни с кем не выходит на связь. Его сайты также все скомпрометированы, поэтому тем, кто общается с якобы SJen, рекомендую прервать все контакты, это мошенник, а не сам SJen.
Старый балбес 27 декабря 2016 в 18:30 0
Забанили не автора, а того, кто завладел его аккаунтом. А завладел его аккаунтом один наш давний юзер.
Я тоже давно считаю что кто то завладел моим аккаунтом .Он не такой как я, он иногда хороший, а иногда еще тот фрукт!
Старый балбес 27 декабря 2016 в 18:32 0
Так поставим точку! Нет этой разработки!
Sergey Necr 27 декабря 2016 в 15:41 0
Есть возможность парсить в свой тип контента созданный через админку инстанта?
Старый балбес 27 декабря 2016 в 18:33 0
ИТОГО!
Забанили не автора, а того, кто завладел его аккаунтом. А завладел его аккаунтом один наш давний юзер. Ужасно непонятливый и считающий что все вокруг дураки smile А сам автор давно ни с кем не выходит на связь. Его сайты также все скомпрометированы, поэтому тем, кто общается с якобы SJen, рекомендую прервать все контакты, это мошенник, а не сам SJen.
Старый балбес 27 декабря 2016 в 19:04 0
А у меня есть интерес, как данная разработка кодированная ioncube может быть иметь место в сути , не оспаривая права на открытый код , покрытый лицензией GNU самими разработчиками. Instantcms, Ведь всем понятно что любой код , который не может самостоятельно работать не в рамках лицензированного программного обеспечения заявленной разработчиком как система с открытым кодом , то любой закодированный код , нарушает право лицензии GPL, и не может быть предоставлен как разработка не нарушающая лицензионные правила.