microsur / svc Goto Github PK
View Code? Open in Web Editor NEWSur Video Catalog
Sur Video Catalog
SurVideoCatalog (SVC). Каталогизатор видео файлов. Copyright (C)2004-2007 Sur Лебедев Александр. All rights reserved. http://sur.hotbox.ru/ [email protected] Редакция для SVC версии 5.4.5 Соглашение Программа SurVideoCatalog свободно распространяется в надежде на то, что она окажется полезной, но без каких-либо гарантий. Вы можете свободно пользоваться программой в личных, не корыстных целях. Автор программы не несет ответственности за прямой или косвенный ущерб, полученный в результате использования программы. Важно! В начале работы с программой создайте и используйте свой файл базы фильмов. Это делается в окне Настройки. Демонстрационная база FirstRun может быть удалена при установке/удалении программы. База актеров people.mdb одна, и она останется в каталоге программы. Делайте резервные копии ваших баз с помощью вашего любимого файлового менеджера. Деинсталляция старой версии перед установкой новой рекомендуется. Для правильной работы у вас должны быть права на запись файлов в системе. Далее в этом тексте: - Обзор возможностей - Дополнительные утилиты в дистрибутиве ! Советы по использованию программы (и мини FAQ) ! Если вы хотите обратиться с проблемой ! Возможные неполадки - Дополнительные ключи настроек в global.ini - Структура файла со списками пользователя user.lng - Работа с шаблонами экспорта в HTML - Структура скрипта поиска информации в Интернет-страницах - Благодарность и копирайты бесплатных модулей, используемых в SVC Обзор возможностей: Сохранение в базе данных до трех кадров из любого файла фильма (скриншоты, выборочно и автоматически). Техническая информация о фильме (AVI, DVD и тд), заполняется автоматически при добавлении файла фильма (видео, звук, битрейты, размеры, тип носителя...) Автоматическое заполнение технической информации и занесение нескольких фильмов из выбранных папок. Занесение основных данных о фильме (название, режиссер, актеры, жанр, должник..). Скрипты для автоматического поиска и заполнения данных о фильме из Интернет баз. Скрипты доступны для редактирования (VBScript). Копирование полей между базами простым "перетаскиванием" выбранных фильмов. Печать обложки для CD и DVD (обложка, кадры, название, описание из базы), печать списка, несколько фильмов в одной обложке. Дополнительная база для информации об актерах и режиссерах (people.mdb). Создается при первом старте программы (если таковой нет в папке с программой). Возможность показа программой фильмов с выбранным актером. Хранение изображений в базе, сжатие средствами программы - JPEG. Поддержка JPG, BMP, PNG, GIF, TIFF. Экспорт в HTML (выборочный, постраничный, шаблоны), в буфер обмена и MS Excel (выбранные поля, текст). Выпадающие списки в редакторе (жанр, страна...) можно дополнить своими значениями, указав их в файле user.lng При перетаскивание текста в поля Drag-and-Drop окна редактора, содержимое полей дополняется автоматически (через ","). База открыта и доступна в Access (2002) для преобразования в форматы Excel и др. Функции экспорта изображений. Представление информации в виде таблицы или таблицы с карточкой фильма, с кадрами или без. Можно пытаться открыть любой медиа файл (wmv, mov, mp4, 3gp, mkv, flv...), был бы декодер в системе. Работают клавиши "p" старт/пауза фильма и "s" звук вкл/выкл в редакторе (плеер, только при использовании DirectShow фильтров). При перетаскивании фильма на иконку программы, произойдет запуск каталога и поиск данного фильма в последней открытой базе. Легкая поддержка локализаций (файлы *.lng). Русский, английский. Просмотр фильма медиаплеером, установленным в вашей системе по-умолчанию. Настройки путей к фильмам по аналогии с %Path%. Свои настройки для каждой базы фильмов (имя_базы.mdb.ini). Настройки шрифтов и цветов списков и текстов в оконах фильмов и актеров. Быстрый поиск по основным полям. Полные поиск, замена, преобразование данных в любом текстовом поле базы. Группировка по любым полям списка фильмов. Фильтрация в списке фильмов с хорошими возможностями. Сортировка и пометки в списке фильмов. Статистика текущей базы фильмов. Встроенный помощник по интерфейсу (F1). Дополнительные утилиты в дистрибутиве: Convert2SVC - Средство преобразования и импорта других MDB, XML, AMC, CSV баз в формат этой программы. Помощь в файле converter.txt SVCAmazonCovers - Поиск обложки по названию фильма на сайте Amazon.com MPEG декодеры - На данный момент используется Gabest Universal Open Source MPEG Splitter, с программой идет только версия для Windows NT, и GPL MPEG Decoder. Советы по использованию программы Создайте новую базу "Новые фильмы" и заносите фильмы в нее. После успешного заполнения нескольких фильмов, скопируйте их в вашу общюю базу: выделите нужные фильмы и перетащите их мышкой на кнопку базы-получателя. Если у вас несколько баз, то создайте еще одну и скопируйте в нее все фильмы из основных баз: получите поиск по всем вашим фильмам и не лишний бекап. Нажмите правой кнопкой мыши на списке фильмов - многие необходимые вещи для работы с каталогом находятся именно в выпадающем меню! При автоматическом заполнении нескольких фильмов не используйте захват кадров: Это ускорит обработку (особенно DVD), а случайные кадры вам все равно не понравятся. Для обработки MPEG2 файлов рекомендуется установить два декодера, идущие с программой (есть ярлыки) и отмечать галочку "Использовать для DVD фильтры..." в [Настройки/Другие], если есть проблемы с обработкой DVD. Еще раз - если проблем нет, то лучше не ставить эти фильтры. Для добавления DVD, достаточно открыть первый vob фильма (vts_01_1.vob) В [Настройки/Другие] укажите правильно ваш привод дисков, затем возможные пути расположения видео файлов. a) Это нужно для работы поиска по серийному номеру вставленного диска в списке фильмов: вставить диск, быстрый Поиск по "Серийник CD", Поиск. б) Правильно настроенные пути к фильмам на жестком диске помогут вам запустить выбранный фильм на просмотр одним нажатием на Enter. SVC Не запоминает пути к файлам. Для добавления многосерийных фильмов с несколькими файлами используйте "Автоматическое добавление" с последующим "Объединением" помеченных галочкой записей из меню списка фильмов. Разделители в списках "," или ";" но имена файлов в поле "Файлы" автоматически разделяются "|" Индекс в таблице фильмов - это не порядковый номер фильма. Нужен, например, для сортировки: раньше попал в базу - меньше индекс фильма. Если не открыт какой-либо файл в редакторе, то нажимая кнопку с "Фотоаппаратом" вы выберете и откроете файл только для снятия скриншотов, другая информация о фильме не пострадает. Инструмент:Проверка меток и серийников покажет в списке те фильмы, у которых поля метка и серийник диска не соответствуют друг другу. Группировка и Фильтр работают в спаринге: на результат влияют одновременно. Фильтрация по выделенному актеру в карточке фильма, или из окна актеров, совместима с группировкой. Инструмент:Проверка меток и серийников отменяет и Фильтр, и Группировку. Шаги работы с редактором каталогизатора для примера: 1. Создаем и подключаем свою базу в настройках 2. Выбрав свою базу, нажимаем Новый в вертикальном меню слева 3. Нажимаем кнопку Открыть в редакторе, выбираем один фильм 4. Делаем скриншоты кнопками Авто или Фотоаппаратами, прокручивая фильм ползунками 5. Если есть обложка, тут же вставляем 6. Если фильм состоит из нескольких файлов, нажимаем Добавить и выбираем другой файл. Можно при этом заменить скриншоты из нового файла 7. Нажимаем красную кнопку Сохранить (рекомендуется) 8. Переходим на вкладку Фильм в редакторе, смотрим в правый нижний угол 9. Заполняем приблизительное название фильма в поле Поиск в интернете для английских сайтов лучше писать название по-английски 10. Выбираем скрипт работы с конкретным сайтом в интернете: для начала sharereactor_ru, хорошие описания, обложка хорошие обложки у dvdempire_en рейтинг берем скриптом imdb_en 11. Нажимаем поиск, и кликаем на нужный фильм в появившемся списке 12. Исправляем возможные неточности автоматического заполнения информации 13. Нажимаем красную кнопку Сохранить 14. Закрываем редактор или повторяем все с пункта 2 для новых фильмов. Мини FAQ Q: Как показать только фильмы 2006 года у которых нет обложек? A: 1. В окне группировки (F5) сделать группировку по году и выбрать 2006. В окне Фильтр (Ctrl+Q) отметить галочку "Есть обложка" и нажать кнопку "Исключить подходящее". 2. Стала доступна галочка Исключить (Не) для выбранного поля в фильтре. Теперь задача решается без применения группировки. Q: В поле Метка я ввожу только числа (номера дисков). Как вывести их по порядку и посмотреть только фильмы конкретного диска? A: В окне группировки (F5) выполнить группировку по метке. Правой кнопкой мыши кликнуть по первой метке в окне группировки - список отсортируется по числам (вместо текстовой сортировки). Кликаем на метки, смотрим содержимое диска (типа каталогизатора дисков). Q: Возможно ли, при автодобавлении фильмов из папки, использовать некий шаблон для заполнения других полей базы автоматически? A: Загрузите в редакторе фильм с необходимыми полями - это и будет шаблон для новых фильмов. Не закрывая редактор, вызовите окно автодобавления фильмов (кнопка Insert или Shift+клик Новый) и добавляйте фильмы из папок. Рекомендуется в базе "Новые фильмы" заранее создать фильм-шаблон для этих целей. Q: Как правильно работать с меню "Получить обложку для..."? A: Для начала проверить, правильно ли заполнено поле <URL обложки> для каждого фильма. В редакторе есть два поля ввода этого значения - поле со списком и, собственно, <URL обложки>, записанный в базу. При стыковке этих полей должен получиться абсолютный адрес картинки в Интернете. Например: в базу записан путь к обложке: 1.jpg Это не абсолютный путь и необходимо добавить к нему адрес хоста в поле со списком в редакторе: http://sur.hotbox.ru/ Этот адрес запоминается для последующего использования в текущей сессии. При стыковке получится: http://sur.hotbox.ru/1.jpg Это правильный абсолютный адрес картинки. Далее выходим из редактора, помечаем фильмы и вызываем меню "Получить обложку для...". Если вы хотите обратиться с проблемой: - Установить/Обновить последнюю версию SVC с сайта программы. Если ошибка не исправлена, предоставить автору мылом вместе с вашим сообщением об ошибке: - Файл с событиями работы SVC, полученный после обнаружения ошибки и завершения программы. Это файл svcdebug.log из папки с программой (F12 при работе). На всяекий случай svc держит одну копию последнего лога - svcdebug.old - Как можно точнее составить список ваших действий до момента неполадки. - Если возможно, скриншот окна программы. Не задавайте вопросов типа: У меня не работает с DVD! В чем может быть проблема? Дайте более полную информацию сразу, и автор вам поможет разобраться. Может в разделе Возможные неполадки найдется что-либо по вашему вопросу. Возможно нужно обновить и стороннюю библиотеку MediaInfo.dll в системной папке: http://sourceforge.net/project/showfiles.php?group_id=86862 SVC готов работать с версиями до 0.7.4.5 включительно. С другими версиями не тестировалось, и если автор mediainfo не менял интерфейс доступа, то SVC будет работать и с новейшими версиями mediainfo. Возможные неполадки, способы устранения некоторых Если программа вылетает при смене расположений колонок в списке фильмов, следует скачать обновление VisualBasic6-KB896559-v1-ENU.exe http://www.microsoft.com/downloads/details.aspx?FamilyId=25437D98-51D0-41C1-BB14-64662F5F62FE Это также следует сделать, если у вас в системе нет файлов mscomctl.ocx и comctl32.ocx - распакуйте архив в системную папку (помощь по ключам запуска архива: /?). Программе требуется библиотека gdiplus.dll. В ОС до WinXP она не поставлялась. Если SVC не работает с картинками (не видно, ошибки при записи картинок), найдите в сети, скачайте и распакуйте в папку с программой дистрибутив gdiplus_dnld.exe и зарегистрируйте заново библиотеку wiaaut.dll: regsvr32 "C:\Program Files\Sur Video Catalog\wiaaut.dll" На некоторых xvid AVI первый авто-скриншот черный - повторите захват кадра еще раз. (сейчас этот непонятный баг искусственно исправлен) Позиционирование по правому клику на скриншоте в открытом xvid иногда не корректно (с divx этих двух проблем не наблюдается). Позиционирование по правому клику на скриншоте в открытом DirectShow файле не корректно, если скриншот сделан сразу после или во время проигрывания видео (кнопка P (play)). DirectShow фильтры в вашей системе могут не корректно обрабатывать mpeg2 файлы, приводя к вылетам или зависаниям - для этого с программой идут 2 фильтра, которые необходимо установить самостоятельно (есть ярлыки) и использовать (галочка в настройках). Но гарантии для всех DVD все равно нет. Для mkv: некоторые сочетания фильтров в вашей системе могут привести к зависаниям при создании скриншотов. Например полный кодек-пак СССР(2006.07.28) не давал делать скриншоты, Повторюсь - у каждого будет по разному. Но обновить MediaInfo.dll в системной папке придется: http://sourceforge.net/project/showfiles.php?group_id=86862 На данный момент SVC поддерживает версию MediaInfo 0.7.4.5 Скриншоты с AVI можно получить в пределах размера файла до 2Gb, если файл больше - используйте DirectShow (галочка в общих настройках), а не быстрый VFW декодер. При загруженных программах типа Nero DriveSpeed - определение типа болванки может происходить неверно. Также все зависит от возможностей привода. (программа определяет BookType болванки. Nero при прожиге может его менять автоматом). При ошибках в работе с DVD болванками отключите опцию определения типа носителя в Настройках/Другие. При установленных резидентных программах типа "abcAVI Tag Editor" можем подвиснуть при открывании файла фильма (две программы лезут в один файл?). Кадры, записанные в базу с реальным разрешением (без учета аспекта), при html-экспорте не масштабируются - уже негде взять информацию о размерах. Присутствует заметная тормознутость при заполнении и изменении размера текстовых окон описания фильма и биографии актера если используются TrueType или OpenType шрифты. При смене языка интерфейса и шрифтов в некоторых случаях требуется перезапуск. Сторонняя программа определения характеристик mpeg ошибается на некоторых файлах. Для DVD, для надежности, рекомендуется открывать первый vob фильма. Не кормите программу "не видеофайлами" или поврежденными файлами: получите ошибки вплоть до вылетов. В поля рейтинга и фреймрейта могут попасть дробные числа то через точку, то через запятую. Список покажет их единообразно для удобства сортировки, но запросы (для статистики, группировки) их различают. Используйте глобальную замену (поиск и замена) разделителя для получения единообразия в базе. Если Масштаб в Общих свойствах дисплея отличен от 100% (96 dpi), возможны неполадки в интерфейсе программы. Баг-фича выпадающих списков: если в тексте списка есть данные и нажата стрелка показа списка, то произойдет авто-поиск подходящего значения, и если оно найдется в списке, то ваш текст будет заменен, даже если вы ничего не выбрали. Кого это напрягает меняем списки, добавляя к данным пробел (чтобы не сработал автопоиск), например: [Media] 1=" CD-ROM" Программа наверно уже не работает под Windows 98 :) -------------------------------------------------------------------- Дополнительные ключи настроек в global.ini со значениями по умолчанию: (для тестовых целей, недоступны в настройках программы) [GLOBAL] #Брать картинку из Интернета, создавая временный файл svc_temp.bmp InetGetPicUseTempFile=False Структура файла со списками пользователя user.lng Впишите свои варианты в списки, доступные из редактора SVC. Или воспользуйтесь вкладкой Списки в Настройках программы. Некоторые поля-списки не выпадающие (вкладка Фильм), они прокручиваются стрелками вверх-вниз и содержат введенные данные в текущей сессии. Поддерживаются следующие поля-списки: Жанр [Genre], Страна [Country], Веб-сайты [Site], Тип носителя [Media], Язык фильма [Language], Субтитры фильма [Subtitle], Комментарии к фильму [Comments]. Пример использования: [Genre] 1=Анимационный 2=Исторический и так далее для остальных доступных секций: [Country] [Site] [Media] [Language] [Subtitle] [Comments] [ExportPreset] Сохраненные из программы шаблоны экспортируемых полей. Если файла user.lng нет, программа создаст его со значениями по умолчанию. Работа с шаблонами экспорта в HTML Примеры работы смотрите в папке SurVideoCatalog\Templates. Приняты следующие обозначения полей базы фильмов и служебных команд: $PAGELINE$ - Составные строки навигации по многостраничным документам $PAGENUMBER$ - Номер HTML страницы $TOTAL$ - Количество фильмов, приготовленных для экспорта $OWNER$ - Ваш логин $DATE$ - Текущая дата $TIME$ - Текущее время (чч:мм) $SVC_ABCD_LINE$ Служит для формирования $PAGELINE$ в шаблоне экспорта по алфавиту. Между двумя такими ключами содержится набор необходимых вам букв и ряда цифр [0-9], через пробел Знак "\" после буквы определяет место перевода строки $SVC_BODY$ - Между двумя такими ключами содержится повторяющаяся от фильма к фильму часть HTML файла Следующие ключи должны находится между двумя ключами: $SVC_BODY$ ключи $SVC_BODY$ $NUMBER$ - Порядковый номер фильма в HTML документе $SVCBASENAME$ - Название программы и имя файла текущей базы фильмов $TITLE$ - Название фильма $FIRSTTITLE$ - пока не используется $SECONDTITLE$ - пока не используется $LABEL$ - Метка носителя $GENRE$ - Жанр фильма $YEAR$ - Год выпуска фильма $COUNTRY$ - Страна производитель $DIRECTOR$ - Режиссер $ACTORS$ - Актеры $LENGTH$ - Продолжительность фильма $RESOLUTION$ - Формат или Разрешение фильма $AUDIO$ - Сведения об аудио дорожках фильма $FRAMERATE$ - Кадров в секунду $FILESIZE$ - Размер файла $DISKS$ - Количество носителей $VIDEO$ - Сведения о видео дорожке $FILENAME$ - Имена файлов $DEBTOR$ - Должник $DISKSERIAL$ - Серийный номер носителя $COMMENTS$ - Ваши примечания или иная инфа $DESCRIPTION$ - Содержание фильма $SNAPSHOT1$ - 1-й кадр $SNAPSHOT2$ - 2-й кадр $SNAPSHOT3$ - 3-й кадр фильма $COVER$ - Обложка $SUBTITLE$ - Субтитры $COVERPATH$ - Путь к обложке (http://..., file://...) $URLMOVIE$ - Ссылка на страницу фильма в Интернет $RATING$ - Рейтинг $MEDIA$ - Носитель (CD, DVD,...) $LANGUAGE$ - Язык фильма В папку для экспорта также копируются изображения background.jpg, nopicture.jpg и styles.css (если есть). Можно использовать их и для оформления страниц. Еще существуют управляющие ключи для правильного формирования страниц по шаблонам из каталогизатора (лучше их не трогать): $SVC.JS.Array$ - Шаблон страницы, написанный на JavaScript $SVC.ABCD$ - Шаблон страницы экспорта по алфавиту. -------------------------------------------------------------------- Структура скрипта поиска информации в Интернет-страницах При выполнении скрипта, информация собирается в переменные: MTitle, MYear, MGenre, MDirector, MActors, MDescription, MCountry, MPicURL название, год, жанр, режиссер, актеры, описание, страна, адрес обложки MRating, MLang, MSubt, MOther рейтинг, языки, субтитры, примечания и массивы: MTitles(), MTitlesURL(), Dim MData() списки найденных названий фильмов, их адресов и дополнительных данных. Переменная скрипта url передает в программу адрес для поиска по названию для данного сайта, например url = "http://www.кино.ru/поиск.cgi?искать=" Для тестирования сохраните страницу со списком найденных фильмов (inet1.htm) и временно укажите в скрипте url = "file://C:\Scripts\inet1.htm", выключите прокси в программе. Базовый адрес сайта для нужд скрипта: BaseAddress = "http://www.кино.ru/" например. В некоторые скрипты будет введен параметр OriginalTitleFirst = False или True - для определения желаемой последовательности оригинального и переведенного названия фильма. Важные для каталогизатора подпрограммы скрипта для анализа страниц: Sub AnalyzePage() - Каталог вызывает эту подпрограмму после нажатия на кнопку Интернет-Поиск. Sub AnalyzeMoviePage(Ind) - Поиск информации по конкретному найденному фильму. Каталог вызывает эту подпрограмму после нажатия на название фильма в списке найденных фильмов. Ind - порядковый номер этой строки (с нуля). Sub AddMoviesTitles() - Создание списка найденных по запросу фильмов. Для дальнейшего тестирования страниц с информацией о конкретном фильме, временно впишите в эту подпрограмму строку MTitlesURL(i) = "file://C:\Scripts\inet2.htm", где inet2.htm - сохраненная тестируемая страница о конкретном фильме. Доступные из скрипта дополнительные функции и процедуры: LineNr = SVC.FindLine(Pattern, StartFrom) Возвращает номер строки в массиве текущей страницы, содержащей Pattern. Начинает поиск с числа StartFrom. Не чувствителен к регистру букв. Line = SVC.PageArr(LineNr) Возвращает строку с номером LineNr из массива текущей страницы. или "" , если такого номера в массиве нет. Value = SVC.HTML2TEXT(Line) Преобразование текста, вырезание html-тэгов, замена умляутов. Value = SVC.UcaseFirst(VALUE) Преобразование текста, первая буква заглавная, остальные нет. TextBlock = SVC.GetBlockFrom(Pattern1, Pattern2) Возвращает блок текста текущей страницы, между подстроками Pattern. Value = SVC.MyVal(Text) Возвращает первое попавшееся в строке Text число. Value = SVC.ConvStr(Text, Mode) Аналог StrConv. Функция преобразования текста. Пример: Mode = 3 - все слова начинаются с большой буквы. Mode: UpperCase = 1, LowerCase = 2, ProperCase = 3 SVC.AnalyzePage(url) Перезапуск скрипта для анализа страницы с абсолютным адресом url (редирект) SVC.ChangePage(url) Смена текущей страницы на заданную абсолютным адресом url. Для продолжения выполнения скрипта, но с другой страницей. SVC.PutToSVC Данные из переменных попадают в поля редактора. Используется, если по запросу найден один фильм и сайт сразу переходит на страницу описания фильма. Для удобства работы с текстом скрипта, эти процедуры выполняются в SVC. При редактировании скрипта "на лету" помните, что SVC заново перечитывает скрипт только после нажатия на кнопку Поиск. -------------------------------------------------------------------- Благодарность авторам бесплатных модулей, используемых в SVC: vbAccelerator (Steve McMahon) - cAVIFrameExtract, cScrollBars и другое Ray Mercer - cDIB Mike D Sutton of EDais - AVI info Jerome Martinez - MediaInfo [maven] - vStrip VBnet (Randy Birch) - BrowseFolder Chay Luna - myMsgBox Donald, [email protected] - Tokenize Olof Larsson - remdups Universal Open Source MPEG Splitter - Gabest GPL MPEG Decoder (c)MicroSoft - Windows Image Acquisition Library v2.0, VBPrnDlg.dll (с)Intel - IJL11.DLL (уже не используется, спасибо остается :) -------------------------------------------------- + Full tech info about movie file + Entering of a specification on movie (title, director, actors, genre etc) + Opportunity to keep in a database up to three shots from movie file and cover + Print of a cover for CD & DVD (cover, movie name, description from database) + Quick search on the basic fields in movie base + Filters, groups, full search/replace + Additional base for the information on actors and directors + Storage of images in the database, compression - jpeg + Export to Excel, HTML templates + Get movie description from Internet databases. - Converter in russian only + Freeware. This product includes software developed by vbAccelerator (http://vbaccelerator.com/). -------------------------------------------------- Enjoy! MicroSur. Sur Video Catalog. Copyright (C)2004-2007 Lebedev Alexander AkA Sur. All rights reserved. [email protected]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.