{"id":23324823,"url":"https://github.com/aphalo/ooacquire","last_synced_at":"2026-02-06T07:35:10.723Z","repository":{"id":149797339,"uuid":"330261036","full_name":"aphalo/ooacquire","owner":"aphalo","description":"Acquire spectral data and control array spectrometers from Ocean Optics from within R","archived":false,"fork":false,"pushed_at":"2025-07-25T21:19:45.000Z","size":160016,"stargazers_count":1,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-26T04:42:54.446Z","etag":null,"topics":["data-acquisition","data-import","r4photobiology","spectra"],"latest_commit_sha":null,"homepage":"https://docs.r4photobiology.info/ooacquire","language":"HTML","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/aphalo.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","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,"zenodo":null}},"created_at":"2021-01-16T21:25:46.000Z","updated_at":"2025-07-25T21:19:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"a1cf9d83-ae2a-4c01-91d1-b6b83f502a7d","html_url":"https://github.com/aphalo/ooacquire","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/aphalo/ooacquire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aphalo%2Fooacquire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aphalo%2Fooacquire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aphalo%2Fooacquire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aphalo%2Fooacquire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aphalo","download_url":"https://codeload.github.com/aphalo/ooacquire/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aphalo%2Fooacquire/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267428143,"owners_count":24085698,"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","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["data-acquisition","data-import","r4photobiology","spectra"],"created_at":"2024-12-20T18:26:17.107Z","updated_at":"2026-02-06T07:35:10.711Z","avatar_url":"https://github.com/aphalo.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput: github_document\neditor_options: \n  markdown: \n    wrap: 72\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r readme-01, echo = FALSE}\nknitr::opts_chunk$set(\n  fig.asp = 2/3,\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  fig.path = \"man/figures/README-\"\n)\n```\n\n# ooacquire \u003cimg src=\"man/figures/logo.png\" align=\"right\" width=\"120\"/\u003e\n\n\u003c!-- badges: start --\u003e\n[![R Universe vwersion](https://aphalo.r-universe.dev/badges/ooacquire)](https://aphalo.r-universe.dev/ooacquire)\n[![R-CMD-check](https://github.com/aphalo/ooacquire/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/aphalo/ooacquire/actions/workflows/R-CMD-check.yaml)\n[![Documentation](https://img.shields.io/badge/documentation-ooacquire-informational.svg)](https://docs.r4photobiology.info/ooacquire/)\n\u003c!-- badges: end --\u003e\n\n## Purpose\n\nPackage **'ooacquire'** makes it possible to control, modify settings and\nacquire spectral data directly from within R. It can be also used off-line to\nread raw-counts data from files saved by Ocean Insight's software and hardware,\nor previously acquired with 'ooacquire'. In both cases it implements the\nconversion of raw-counts data into physical quantities, with different protocols\nto improve the dynamic range and corrections to reduce stray-light and other\nsources of noise.\n\nIn sunlight, array spectrometers due to their single monochromator have\na noise floor of three orders of magnitude, which makes it impossible to\nmeasure the UV-B band. With special characterization of the\nspectrometer, one of the procedures implemented improves the noise floor\nby at least one order of magnitude. With care, this allows reliable\nmeasurement of the spectral irradiance of sunlight at ground level\nincluding UV-B, UV-A, VIS and NIR regions.\n\nThe User Guide menu of the [on-line\ndocumentation](https://docs.r4photobiology.info/ooacquire/) includes in addition\nto the vignettes included in the package, two on-line only chapters: [a tutorial\non how to measure spectral\nirradiance](https://www.r4photobiology.info/pages/acq-irrad-tutorial.html) with\n'ooacquire' and a [description of the algorithms\nused](https://www.r4photobiology.info/pages/ooacquire-algorithms.html).\n\nPackage **'ooacquire'** supports most types of *Ocean Optics*\nspectrometers from former *Ocean Optics*\n(\u003chttps://www.oceanoptics.com/\u003e). The free runtime of the *OmniDriver\nSDP* is no longer supported by Ocean Optics and, but still available.\nThe free runtime of the *OmniDriver\nSDP* and *Java* need both to be installed before data acquisition is\npossible.\n\n## Discontinuation of OmniDriver by Ocean Optics\n\n**Ocean Optics has discontinued support for _OmniDriver_ in mid 2024!**\nThis means that the runtime has to be downloaded from a \"hidden\" page in the\nOcean Optics web site at\n[https://www.oceanoptics.com/software/resources/discontinued-software/](https://www.oceanoptics.com/software/resources/discontinued-software/).\nDiscontinuation seems to mean that support for newer models will not be added.\nTwo versions of OmniDriver are available 2.75 and 2.56. Version 2.75 is the last\nreleased and does not support very old spectrometers such as the USB2000. Version 2.56 was the last one to support them.\nPackage 'ooacquire' supports both of these versions of OmniDriver (and\nseveral other versions), which are needed for controlling spectrometers and acquiring data from within R, including when running in RStudio. \n\nPackage 'ooacquire' can be also used without\ninstalling OmniDriver, but in this case only off-line processing of spectra and\nimport of spectral data from files obtained with other software from OceanOptics\nis possible. All functions that connect to spectrometer hardware are\ndisabled in the absence of an installed OmniDriver driver, while all functions\nthat do not communicate with the spectrometer remain fully sfunctional.\n\nPackage 'ooacquire' accesses spectrometers through functions in package\n'rOmniDriver', which exposes many functions from the OmniDriver API as R\nfunctions. *At some point, I will investigate if SeaBreeze can be used as a\nreplacement for OmniDriver through a future R package replacing 'rOmniDriver'.\nBasic functionality seems to be well supported by SeaBreeze, but fast buffered\nacquisition of spectra does not seem to be supported. On the other hand,\nSeaBreeze is open source and written in C++. A translation of the code in Python\nis also available. The Python version should be the easiest to use as Python\nfunctions could be accessed from R code using package 'reticulate'. However,\nthis approach can be expected to be slower than calling C++ code through package\n'Rcpp'. I will most likely try to support the Python library at some point in\nthe future, as it is compatible with more spectrometers, including the only one\nI have unrestricted access to: an old USB2000.*\n\n## Warning!\n\nUnder MS-Windows with RStudio, package 'RJava' is not compatible with R\n(==4.2.0). It crashes and consequently 'ooacquire' cannot be loaded.\nOnly known solution to this bug is to use R (\\\u003c=4.1.3) or R (\\\u003e=4.2.1).\n\n## Details\n\nPackage **'ooacquire'** provides high level functions for spectral data\nacquisition built using lower level functions from package\n**'rOmniDriver'** as a base. It also provides functions for reading\n\"raw\" (= detector) counts data from files and for computing physical\nquantities from detector counts. If package **'rOmniDriver'** is not\navailable, **'ooacquire'** will enter its **off-line** mode in which all\nfunctions that communicate with the spectrometer are disabled or trigger\nan error, while other functions will be usable. Thanks to the\n**off-line** mode, raw data previously acquired with this package or\nwith software from Ocean Insight can be processed without the need to\ninstall packages **'rOmniDriver'** and **'rJava'** or the **OmniDriver**\ndrivers from Ocean Insight. Ocean Insight's **SPAM** library is not used\nas all computations are done in function defined in this package using\n**R** and **C++**.\n\nAcquisition is very flexible with respect to measuring protocols. It\ncaters for all steps involved in the acquisition of spectral data from\nconnecting to the instrument(s) and retrieving information from\nnon-volatile memory, setting and adjusting acquisition parameters,\nacquiring raw counts and converting them into counts per second. It\nsupports bracketing of the integration time for high dynamic range (HDR)\nprotocols, both with respect to data acquisition and merging/splicing of\nspectra. It also supports protocols in which the total measuring time is\nkept constant by adjusting in coordination integration time and number\nof scans averaged. It works seamlessly together with package\n**photobiology** on which it also depends.\n\nIn addition to directly acquiring RAW counts data, raw-counts data can\nbe read from files with automatic decoding of the corresponding\nacquisition metadata from file headers. Files saved by *OceanView* or\n*SpectraSuite* software from Ocean Optics, or directly by Jaz\nspectrometers can be read. Raw data read from files and acquired\ndirectly is stored in the same format. Consequently, data from either\norigin can be used as the starting point for the computation of spectra\nexpressed as corrected counts-per-second with the same flexibility and\ncode.\n\nHigh level functions in this package and in package **photobiology**\nallow the easy conversion of counts-per-second into the physical\nquantities of interest such as spectral irradiance, spectral\ntransmittance, spectral reflectance, spectral absorptance and spectral\nabsorbance.\n\nFunctions in **'ooacquire'** related to data acquisition use the free\n*OmniDriver* run-time which in turn requires *Java*. Once these are\ninstalled, there is no other set up needed, just plug a spectrometer to\nan USB port. The first time you connect an instrument the operating\nsystem will install the drivers as they are made available by the\n*OmniDriver* installation.\n\nDirect acquisition has been well tested with our *Maya2000Pro*, *Flame*\nand *Jaz* instruments under MS-windows 7. MS-Windows 10, and MS-Windows\n11, it is known to work under OS X, and can be expected to work also\nunder Linux distributions. It can be expected to support all modern\nspectrometers from Ocean Optics as long as they are supported by the\nOmniDriver free runtime.\n\nPackage **'ooacquire'** manages acquisition settings semi-automatically\nstoring all the settings needed for acquisition into a single data\nobject. Functions for automatic tuning of integration time are also\nprovided. Settings used for acquisition of spectra and a descriptor of\nthe instrument are stored at the time of acquisition as attributes of\nthe object where the raw counts are stored. These metadata are preserved\nthrough all processing steps. Most of these metadata are also available\nin the header of data files created with software from Ocean Insight.\nWhen raw-counts data are read from files, these metadata are read and\nsaved to the objects together with the data. The aim is to make\ntraceability of the origin of the data automatic.\n\n## Technical aspects\n\nPackage **'rOmniDriver'** makes available in R the API functions from\nthe *OmniDriver SDP* by wrapping the Java calls in R functions of the\nsame name and doing argument type conversions when needed. *OmniDriver*\nallows to change settings and acquire spectra using most Ocean Optics\nUSB-connected spectrometers. *As support for some older devices has been\ndiscontinued in recent versions of OmniDriver*, to use, for example, the\nformerly very popular USB2000 spectrometer, it is necessary to install\nan old version of *OmniDriver* instead of the current one.\n\n## Installation for data acquisition and conversion\n\n*The 'ooacquire' package should be preferably installed after the system\nrequirements are met by installing drivers and software required at the\noperating system level. Please, read carefully the whole installation\ninstructions before attempting to install this package.*\n\n*Some of the system requirements need to be installed only for direct\nconnection of spectrometers. If spectral data will be input from files\non disk to do computations rather than acquired from a connected\nspectrometer, installation of the OmniDriver runtime, package\n'rOmniDriver' and their respective dependencies can be skipped.\n'ooacquire' detects their absence and switches to an \"off-line\" mode.*\n\nInstallation of Java/Temurin and OmniDriver should be done first.\n\n1.  **Temurin 8 OpenJDK**, **Corretto 8 OpenJDK**, or **Java 8 JDK**\n    (Java Open development kit). *The Java run-time is not enough!*\n    Temurin OpenJDK and Corretto OpenJDK are free distributions, in\n    contrast Oracle's Java 8 JDK, has some restrictions and is less\n    frequently updated.\n2.  **rOmniDriver run-time** from Ocean Optics which is a free \n    download, but support has been discontinued.\n    It is the same installer as for the non-free SDP, but if run-time is\n    selected during installation no key/password are required.\n3.  Install 'rOmniDriver' and 'ooacquire' after setting the `repos`\n    option, which ensures dependencies will be installed automatically.\n    Once the option is set, installation is as for packages hosted at\n    CRAN. Using the menu entry in RStudio or RGui or R prompt.\n\nThe package is not hosted in CRAN, but instead at \"CRAN-like\" repository in the\nR-Universe serving source packages as well as Windows, OS X (Apple Mac) and\nUbuntu binaries.\n\nIn recent versions of R an option can be set to make this\nrepository visible to R before installing this package and\n'rOmniDriver' as usual.\n\n```{r, eval=FALSE}\nrepos \u003c- getOption(\"repos\", default = list())\nrepos[[\"r4photobiology\"]] \u003c- \"https://aphalo.r-universe.dev\"\noptions(repos = repos)\n```\n\n```{r, eval=FALSE}\ninstall.packages(c('rOmniDriver', 'ooacquire'))\n```\n\nWithout setting the option, it is also possible to pass the URL in the call,\ntogether with the CRAN URL to ensure that dependencies are installed.\n\n```{r, eval=FALSE}\ninstall.packages(c('rOmniDriver', 'ooacquire'), \n                 repos = c('https://aphalo.r-universe.dev', \n                           'https://cloud.r-project.org'))\n```\n\n**Steps 1 and 2 are described in the README file of 'rOmniDriver', which\ncan be found in its [on-line\ndocumentation](https://docs.r4photobiology.info/rOmniDriver/) site. Make\nsure to read it, follow step by step the installation, testing success\nafter each step making sure all the required software is properly\ninstalled before attempting to install 'ooacquire'.**\n\n## Installation for data import and conversion\n\nIf 'ooacquire' will not be used to connect to a spectrometer, there is no need\nto install Ocean Optics' Omnidiver or package 'rOmniDriver'.\n\nIn recent versions of R an option can be set to make this\nrepository visible to R before installing this package and\n'rOmniDriver' as usual.\n\n```{r, eval=FALSE}\nrepos \u003c- getOption(\"repos\", default = list())\nrepos[[\"r4photobiology\"]] \u003c- \"https://aphalo.r-universe.dev\"\noptions(repos = repos)\n```\n\n```{r, eval=FALSE}\ninstall.packages('ooacquire')\n```\n\nWithout setting the option, it is also possible to pass the URL in the call,\ntogether with the CRAN URL to ensure that dependencies are installed.\n\n```{r, eval=FALSE}\ninstall.packages('ooacquire', \n                 repos = c('https://aphalo.r-universe.dev', \n                           'https://cloud.r-project.org'))\n```\n\n## Installation from GitHub\n\nInstallation from sources is also possible directly from\nthe Git repository at GitHub. **This rarely needed, except to install a non default\nbranch or from a specific old commit.** The repository [![:name status badge](https://aphalo.r-universe.dev/badges/:name)](https://aphalo.r-universe.dev/)\nis updated with no more than 1 h of lag to match default branch of 'ooacquire' and 'rOmniDriver'.\n\nPackage 'ooacquire' although coded mainly in R, includes one function in C++.\nThus, build chain for R packages needs to be installed when installing it\ndirectly from GitHub. In MS-Windows this is achieved by installing Rtools and in\nOS X and Linux by installing the tools needed to build R packages from sources.\n\nAssuming that R and the build tools are installed the following steps\nshould be done in sequence:\n\n1.  **Temurin 8 OpenJDK**, **Corretto 8 OpenJDK**, or **Java 8 JDK**\n    (Java Open development kit). *The Java run-time is not enough!*\n    Temurin OpenJDK and Corretto OpenJDK are free distributions, in\n    contrast to Oracle's Java 8, which has some restrictions and is less\n    frequently updated.\n2.  **rOmniDriver run-time** from Ocean Optics which was until recently a free \n    download but has been discontinued.\n    It is the same installer as for the non-free SDP, but if run-time is\n    selected during installation no key/password are asked for.\n3.  Install the **R packages** 'photobiology', 'photobiologyInOut',\n    'ggspectra' 'rJava' and 'tidyverse', all available from CRAN.\n4.  Install 'rOmniDriver' from GitHub.\n5.  Install 'ooacquire' from GitHub.\n\n**Steps 1, 2, 3 and 4 are described in the README file of 'rOmniDriver',\nwhich can be found in its [on-line\ndocumentation](https://docs.r4photobiology.info/rOmniDriver/) site. Make\nsure to read it, follow step by step the installation, testing success\nafter each step making sure all the required software is properly\ninstalled before attempting to install 'ooacquire'.**\n\nInstallation of the current version from GitHub:\n\n```{r bb-installation, eval=FALSE}\n# install.packages(\"remotes\")\nremotes::install_github(\"aphalo/rOmniDriver\")\nremotes::install_github(\"aphalo/ooacquire\")\n```\n\n## Setting-up for your own spectrometer\n\nThe package includes calibration data for the spectrometers used in\ntesting the package and that are used by myself and collaborators. Before \n'ooacquire' can be used with other spectrometers for measuring irradaince\ncalibration data and their descriptor has to be available. The functions\nfall-back into retrieving calibration data from the spectrometer when\nno other calibration or correction methods are available. This restricts\ncorrections to simpler ones.\n\nWhen measuring optical properties, transmittance or reflectance, measurements\nare relative, and only a wavelength calibration is needed, and one is almost\nalways retrievable from the spectrometer. The case is the same for \nlinearization as the polynomial coefficients are also retrievable from the\nspectrometer. At least one correction method needs also to\nbe defined for each spectrometer. \n\nDepending on how detailed has been the characterization of the spectrometer\ndifferent corrections are possible. The source package includes a folder\n'data-raw' with examples of how this can be done. The process cannot be easily\nautomated as bad pixels and suitable reference wavelengths need to be chosen\nbased both on the instrument used and light source to be measured.\n\n## Documentation and examples\n\nDocumentation includes five vignettes in addition to help pages. The\nexamples in the vignettes and help pages use spectral data from\nmeasurements done with this package as well as output files created by\nOcean Optics's software. These data files are in folder `extdata`.\nScripts containing examples that can be in most cases used with only\nsmall edits are in folder `example-scripts` of this package.\n\n## Examples\n\nA simple example using no dark reference scans.\n\n```{r example-1, message = FALSE}\nlibrary(ooacquire)\nfolderpath \u003c- system.file(\"extdata\", package = \"ooacquire\")\nfile_names \u003c- list(light = paste(folderpath, \n                                 \"irrad-files/light-short.txt\", sep = \"/\"))\none_file.spct \u003c- \n  s_irrad_corrected(x = file_names,\n                    descriptor = which_descriptor(\"2016-10-11\" , \n                                                  MAYP11278_descriptors),\n                    correction.method = MAYP11278_ylianttila.mthd)\nautoplot(one_file.spct, unit.out = \"photon\", range = c(300, 850))\n```\n\n## Example scripts\n\nThe package includes several example scripts, with some of then containing multiple examples of how functions can be used to acquire data from spectrometers. users will most likely edit local copies of these files as the need arises. The list of files can be obtained as shown below. \n\n```{r scripts-1, message = FALSE}\nscripts.path \u003c- system.file(\"example-scripts\", package = \"ooacquire\")\nscripts.files \u003c- list.files(scripts.path, full.names = FALSE)\ncat(paste(scripts.files, collapse = \"\\n\"))\n```\n\nAll files (as shown), or the files of interest, can be copied to the currently active folder (as shown), or to any folder path, once the paths to the files are obtained as shown below passing `full.names = TRUE` in the call to `list.files()`.\n\n```{r, eval = FALSE}\nscripts.filepaths \u003c- list.files(scripts.path, full.names = TRUE)\nfile.copy(from = scripts.filepaths, to = \".\")\n```\n\n## Non-commercial status\n\nPackages **'rOmniDriver'** and **'ooacquire'** are both open source and\nreleased under a GPL license. Neither **'rOmniDriver'** nor\n**'ooacquire'** require the commercial software *OceanView* or\n*SpectraSuite* to be installed, but should be able to coexist with\neither of them. They do not require the purchase of any software from\nOcean Optics, but the use of these packages or the free *OmniDriver*\nruntime is not supported in any way by Ocean Optics, unless you acquire\na license to the *OmniDriver SDP*. The *OmniDriver SDP* is not open\nsource and is proprietary software copyrighted by Ocean Optics and\nsupporting only the use of hardware sold by this company\n(\u003chttps://oceanoptics.com/\u003e).\n\n## Documentation\n\nHTML documentation for this package is available at\n(\u003chttps://docs.r4photobiology.info/ooacquire/\u003e), including a *User\nGuide* and a description of the algorithms.\n\nThe API documentation for the *OmniDriver SDP* is available from Ocean\nInsight\n[on-line](https://www.oceaninsight.com/globalassets/catalog-blocks-and-images/software-downloads-installers/javadocs-api/omnidriver/index.html \"API\").\n\nNews about updates are regularly posted at\n(\u003chttps://www.r4photobiology.info/\u003e).\n\n## Folder Structure\n\nThe folder structure of the Git repository is shown below. Folders `pkgdown`, `inst-not`, `data-raw` and `tests-scripts-interactive` are not included in the built package. Folder `data-raw` also contains raw calibration data and R scripts used to convert them into the objects included in folder `data`. Folder `tests-scripts-interactive` contains R scripts used to test data acquisition with specific spectrometers used during development. Other folders are the usual ones for R packages: `src` contains C++ code sources based on R package 'Rcpp', folder `packadown` contains bitmaps and other files used in the HTML version of the documentation, and folder `test` files implementing unit tests for functions and objects that do not require special hardware, i.e., spectrometers, for execution.\n\n```\noacquire\n├── .github \n├── data\n├─┬ data-raw\n│ └── \u003ccalibration data in original format and scripts\u003e\n├─┬ inst\n│ ├── example-scrips\n│ └── extdata\n├─┬ inst-not\n│ └── \u003cexample data not included in package build\u003e\n├── man \n├── pkgdown\n├── R\n├── src\n├── test-scripts-interactive\n├─┬ tests\n│ └── testthat\n└── vignettes\n```\n\n## Contributing\n\nPlease report bugs and request new features at\n(\u003chttps://github.com/aphalo/ooacquire/issues\u003e). Pull requests are\nwelcome at (\u003chttps://github.com/aphalo/ooacquire\u003e).\n\n## Citation\n\nIf you use 'ooacquire' to produce scientific or commercial publications,\nacknowledge this by citing the package according to:\n\n```{r}\ncitation(\"ooacquire\")\n```\n\n## License\n\n© 2016-2026 Pedro J. Aphalo\n([pedro.aphalo\\@helsinki.fi](mailto:pedro.aphalo@helsinki.fi)) for the\ncode. Lasse Ylianttila developed the majority of the algorithms used.\nReleased under the GPL, version 2 or greater. This software carries no\nwarranty of any kind.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faphalo%2Fooacquire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faphalo%2Fooacquire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faphalo%2Fooacquire/lists"}