{"id":14985683,"url":"https://github.com/dimanikulin/fva","last_synced_at":"2025-04-11T22:07:47.721Z","repository":{"id":43602327,"uuid":"264516859","full_name":"dimanikulin/fva","owner":"dimanikulin","description":"A convergent tool set in form of desktop applications to automate the process of importing the multimedia data (photo/audio/video) into the IR multimedia systems like digiKam, Google Photo, Apple Photo, Synology Photo Station, etc. to make the multimedia more searchable and to improve family photos","archived":false,"fork":false,"pushed_at":"2025-04-10T09:35:48.000Z","size":39307,"stargazers_count":11,"open_issues_count":11,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T22:07:40.397Z","etag":null,"topics":["cmake","codechecks","cpp","csv","digicam","doxygen","exif","exif-metadata","organize-photos","photo-organizer","photography","photomanager","photos","python","qt","sqlite","synology","visual-studio","wix","yml"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dimanikulin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-16T20:01:08.000Z","updated_at":"2025-04-10T09:35:51.000Z","dependencies_parsed_at":"2025-02-24T12:28:00.991Z","dependency_job_id":"374d31ba-f73a-4c45-b525-a0ded70d5184","html_url":"https://github.com/dimanikulin/fva","commit_stats":{"total_commits":2231,"total_committers":3,"mean_commits":743.6666666666666,"dds":"0.0044822949350067365","last_synced_commit":"384e7d4ebb514348fc509a67667513f4d9758bfa"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimanikulin%2Ffva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimanikulin%2Ffva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimanikulin%2Ffva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimanikulin%2Ffva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimanikulin","download_url":"https://codeload.github.com/dimanikulin/fva/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248487713,"owners_count":21112191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","codechecks","cpp","csv","digicam","doxygen","exif","exif-metadata","organize-photos","photo-organizer","photography","photomanager","photos","python","qt","sqlite","synology","visual-studio","wix","yml"],"created_at":"2024-09-24T14:11:28.852Z","updated_at":"2025-04-11T22:07:47.691Z","avatar_url":"https://github.com/dimanikulin.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"./resources/icons/main.png\" target=\"blank\"\u003e\u003cimg src=\"./resources/icons/main.png\" width=\"120\" alt=\"FVA Logo\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"GitHub release (latest by date including pre-releases)\" src=\"https://img.shields.io/github/v/release/dimanikulin/fva?include_prereleases\"\u003e\n  \u003cimg alt=\"GitHub all releases\" src=\"https://img.shields.io/github/downloads/dimanikulin/fva/total\"\u003e\n  \u003cimg alt=\"GitHub Release Date\" src=\"https://img.shields.io/github/release-date-pre/dimanikulin/fva\"\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://github.com/dimanikulin/fva/actions/workflows/main.yml\"\u003e\u003cimg src=\"https://github.com/dimanikulin/fva/actions/workflows/main.yml/badge.svg?branch=master\" alt=\"Tests\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.codefactor.io/repository/github/dimanikulin/fva\"\u003e\u003cimg src=\"https://www.codefactor.io/repository/github/dimanikulin/fva/badge\" alt=\"CodeFactor\" /\u003e\u003c/a\u003e\n  \u003cimg alt=\"GitHub code size in bytes\" src=\"https://img.shields.io/github/languages/code-size/dimanikulin/fva\"\u003e\n  \u003cimg alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/dimanikulin/fva\"\u003e\n  \u003c/br\u003e\n  \u003cimg alt=\"GitHub issues\" src=\"https://img.shields.io/github/issues/dimanikulin/fva\"\u003e\n  \u003cimg alt=\"GitHub closed issues\" src=\"https://img.shields.io/github/issues-closed/dimanikulin/fva\"\u003e\n  \u003cimg alt=\"GitHub pull requests\" src=\"https://img.shields.io/github/issues-pr/dimanikulin/fva\"\u003e\n  \u003cimg alt=\"GitHub closed pull requests\" src=\"https://img.shields.io/github/issues-pr-closed/dimanikulin/fva\"\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://github.com/dimanikulin/fva/projects/4\"\u003e\u003cimg src=\"https://img.shields.io/badge/roadmap-view-d90368\"\u003e \u003c/a\u003e\n  \u003cimg alt=\"GitHub Discussions\" src=\"https://img.shields.io/github/discussions/dimanikulin/fva\"\u003e\n  \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/dimanikulin/fva\"\u003e\n  \u003ca href=\"https://github.com/dimanikulin/fva/edit/master/README.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/documentation-read-d90368\"\u003e \u003c/a\u003e\n\u003c/p\u003e\n\n# Quick Links\n- [Description](./README.md#description)\n- [Capabilities](./README.md#capabilities)\n- [Software Architecture Requirements](./README.md#software-architecture-requirements)\n- [Software Architecture Views](./README.md#software-architecture-views)\n- [Programming Languages](./README.md#programming-languages)\n- [License](./README.md#license)\n- [Dependencies](./README.md#dependencies)\n- [Code Style](./README.md#code-style)\n- [Code Documentation](./README.md#code-documentation)\n- [Implementation Status](./README.md#implementation-status)\n- [Contributing](./README.md#contributing)\n- [Stay in touch](./README.md#stay-in-touch)\n- [Definitions, Acronyms, Abbreviations](./README.md#definitions-acronyms-abbreviations) \n\n# Description\nFVA Software (Photo-Video-Audio Software) is a convergent tool set in a form of desktop applications aimed at automating importing process of [Multimedia Data](https://github.com/dimanikulin/dimanikulin/blob/master/content/MultimediaData.md) (photo/audio/video)\ninto [Multimedia IR systems](https://github.com/dimanikulin/dimanikulin/blob/master/content/MultimediaIRSystems.md) like [digiKam](https://www.digikam.org/) \n\u003cimg src=\"./resources/images/digiKam.png\" alt=\"digiKam.png\" width=\"20\" height=\"20\"/\u003e,\n Google Photo, Apple Photo, [Synology Moments](https://www.synology.com/en-global/dsm/feature/moments) \n\u003cimg src=\"./resources/images/synologyMoments.png\" alt=\"SynologyMoments.png\" height=\"20\" /\u003e, \netc. to make multimedia more fully-searchable as well as to refine family photos.\n\u003cimg src=\"./resources/images/inputAndOutputExamples.gif\" alt=\"Input And Output Examples\" /\u003e\n\n# Capabilities\n- **Organizing the multimedia:** Organizing the [Multimedia Data](https://github.com/dimanikulin/dimanikulin/blob/master/content/MultimediaData.md) to be more searchable\n- **Multimedia metadata gaps identification:** It identifies the gaps and tries to fill it up (enriching the metadata and improving its consistency with minimal human involvement).\n- **Integration:** The system is integrated with online/offline [Multimedia IR systems](https://github.com/dimanikulin/dimanikulin/blob/master/content/MultimediaIRSystems.md):\n[digiKam](https://www.digikam.org/) \u003cimg src=\"./resources/images/digiKam.png\" alt=\"digiKam.png\" width=\"20\" height=\"20\"/\u003e as Offline [Multimedia IR systems](https://github.com/dimanikulin/dimanikulin/blob/master/content/MultimediaIRSystems.md) and \n[Synology Moments](https://www.synology.com/en-global/dsm/feature/moments) \u003cimg src=\"./resources/images/synologyMoments.png\" alt=\"SynologyMoments.png\" height=\"20\" /\u003e as Online [Multimedia IR systems](https://github.com/dimanikulin/dimanikulin/blob/master/content/MultimediaIRSystems.md) are now supported.\n- **Supporting text search for [Multimedia IR systems](https://github.com/dimanikulin/dimanikulin/blob/master/content/MultimediaIRSystems.md):** It is possible to search by events, photo author, places, people using text search \n- **Configuration:** The system flow depends on configuration.\n- **Automating the import:** to decrease the probability of human factor influence on the process of importing new photos into the existing photo album;\nDespite many steps are automated, still human involvement is required. \n\n# Software Architecture Requirements\n\n## Constraints\nThis section lists [constrains](./Constraints.md) and explanations for them. \n\n## Assumptions\nThis section lists all the assumptions with explanations for them. \nThis is critical to do in order to cover all the gaps in the requirements.\n| # | Assumption Description  | \n| - |:--------------:|\n| 1 | It is assumed that the user, which the proposed solution is going to run under, has the write access to the [Google Photo](https://en.wikipedia.org/wiki/Google_Photos) (and other IR Multimedia systems) folder where [multimedia data](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-39940-9_1008) processed is going to be put in. | \n| 2 | User restarted the wizard after changing the configuration (because of feature of QTWizard and QTWizardPage) |\n\n## Quality Attributes\nThis section lists quality attributes for target architecture.\nSo there are following Quality Attributes: **Conceptual Integrity**, **Maintainability**, **Reusability**, **Availability**, **Interoperability**, **Manageability**, **Performance**, **Reliability**, **Scalability**, **Security**, **Portability**, **Supportability**, **Testability**, **Learnability**, **Traceability**.\n\nFor more details please [see](./QualityAttributes.md)\n\n## Hardware requirements\nTBD\n\n# Software Architecture Views\n\n## Context View\nThe context diagram below shows the solution bounds and its interactions with other objects and subjects.\n\n```mermaid\nflowchart LR\n    B --\u003e|Multimedia data| C(Online Multimedia IR system)\n    B --\u003e|Multimedia data| D(Offline Multimedia IR system)\n    A(Photo Album owner) --\u003e B(FVA Solution)\n    A(Photo Album owner) --\u003e D1\n    A(Photo Album owner) --\u003e D2\n    A(Photo Album owner) --\u003e D3\n    D1(fa:fa-tablet Tablet) --\u003e|Multimedia data| B(FVA Solution)\n    D2(fa:fa-phone Phone) --\u003e|Multimedia data| B(FVA Solution)\n    D3(fa:fa-hdd-o External Disk) --\u003e|Multimedia data| B(FVA Solution)\n```\nThe solution is used during import of new multimedia content from external devices to an existing user photo album. \n\nThe photo album owner is the main and only user of the solution. \n\nThe external devices might be: \n- the phones with a camera; \n- the tablets with a camera; \n- the photo/video cameras;\n- external storages (e.g., hard drive or flash card) with multimedia data;\n- etc.\n\nOnce the multimedia data from the external devices is processed, the solution interacts with integrated online and offline Multimedia systems.\n\n## Functional View\n\nThe Layered Architecture shall be applied to the system. \nFollowing layers are considered:\n\n```mermaid\nflowchart BT\n    A(UI) --\u003e B(Processing)\n    B(Processing) --\u003e C(Data and Configuration)\n```\nFor more details please [see](./FunctionalView.md)\n\n## Deployment View\nThe target installation folder shall have next folder structure:\n* **#bin#** - a directory with all binaries (product one either third party);\n* **#data#** - a directory to keep user populated dictionaries and application data;\n* **#logs#** - a directory to keep the application logs. Each log file name shall start from name of process it was created by;\n* **#scripts#** - a directory to keep all the scripts.\n\nInstallation must be possible at any target directory but not only in root folder.\n\nTBD describe dependencies installed along with FVA Software.\n\nTBD fvaParams.csv\n\n# Programming Languages                         \nNow C++ and Python are considered as main languages to implement FVA Software.\n\nTBD - to describe for which cases C++ and for which Python.\n\n# License\nwe use 3-rd party code here TBD link\nand own licence is TBD\n\n# Dependencies\nOnly open source [code/tools](./Dependencies.md) are used, as a product is **open source**.\n\nThere were other [dependencies](./DependenciesOld.md) but they got outdated.\n\n# Code Style\nPlease see [here](./CodeStyle.md) for the rules to create and review the code.\n\n# Code Documentation\nPlease see [here](./CodeDocumentation.md) for the rules to document the code.\n\n# Implementation status\nAs of now, I have the **implementation status** for the following components:\n- [Data processor](./FVADataProcessor/IMPLEMENTATIONSTATUS.MD)\n- [Configurator](./FVAConfigurator/IMPLEMENTATIONSTATUS.MD)\n- [Dictionary editor](./FVADictionaryEditor/IMPLEMENTATIONSTATUS.MD)\n\nThese references will give you an overview of the implementation status for each respective component.\n\n# Contributing\n\nThere are many items to help the author with.\n\nYou can fill in this [form](https://docs.google.com/forms/d/1EI3oOumRnHxDjEYgV6PFB-AMfV5plLtuV2r5S8BYn_g/edit) to understand your needs in Multimedia search and organizing.\n\nYou can also post an issue here [GitHub issues](https://github.com/dimanikulin/fva/issues) to request a feature or report a bug.\n\n[Here](https://github.com/dimanikulin/fva/discussions) you can start a discussion.\n\nYou can also download [installation packages](https://github.com/dimanikulin/fva/releases) that are published for Linux (x86-64), Mac and Windows (latest versions) to try it.\n\n[Community Telegram](https://t.me/+XqWdomi90-00Yzgy) \n  \n# Definitions, Acronyms, Abbreviations\n| # | Abbreviation or Acronym | Definition     |\n| - | ------------------------|:--------------:|\n| 1 | [Exif](https://en.wikipedia.org/wiki/Exif)| Exchangeable image file [format](https://en.wikipedia.org/wiki/File_format) (officially Exif, according to JEIDA/JEITA/CIPA specifications) is a standard that specifies the [formats](https://en.wikipedia.org/wiki/File_format) for [images](https://en.wikipedia.org/wiki/Image), [sound](https://en.wikipedia.org/wiki/Sound), and ancillary tags used by [digital cameras](https://en.wikipedia.org/wiki/Digital_camera) (including [smartphones](https://en.wikipedia.org/wiki/Smartphone)), [scanners](https://en.wikipedia.org/wiki/Image_scanner) and other systems handling image and sound files recorded by digital cameras.|\n| 2 | [Google](https://en.wikipedia.org/wiki/Google)| Google LLC is an American multinational technology company that specializes in Internet-related services and products, which include [online advertising technologies](https://en.wikipedia.org/wiki/Online_advertising), a [search engine](https://en.wikipedia.org/wiki/Search_engine), [cloud computing](https://en.wikipedia.org/wiki/Cloud_computing), software, and hardware.|\n| 3 | IR Multimedia Systems |multimedia information retrieval means the process of searching for and finding multimedia documents; the corresponding research field is concerned with building multimedia search engines. |\n| 4 | [Multimedia data](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-39940-9_1008)| Multimedia in principle means data of more than one medium. It usually refers to data representing multiple types of medium to capture information and experiences related to objects and events. Commonly used forms of data are numbers, alphanumeric, text, images, audio, and video. In common usage, people refer a data set as multimedia only when time-dependent data such as audio and video are involved.|\n| 5 | Multimedia IR| Multimedia Information Retrieval (MIR) is an organic system made up of Text Retrieval (TR); Visual Retrieval (VR); Video Retrieval (VDR); and Audio Retrieval (AR) systems. So that each type of digital document may be analyzed and searched by the elements of language appropriate to its nature, search criteria must be extended.|\n\n---\n\n\u003cdiv\u003e\n\u003cimg alt=\"Made with Markdown\" src=\"https://img.shields.io/badge/Made%20with-Markdown-1f425f.svg\"/\u003e\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimanikulin%2Ffva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimanikulin%2Ffva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimanikulin%2Ffva/lists"}