nossaflex
Functions to batch rename photo files with information rich names following the NOSSAFLEX standard and a function to save these metadata inside the exif slots of the scans
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.8%) to scientific vocabulary
Keywords
analog-photography
data-management
exif-metadata
photography
r
weekend-project
Last synced: 6 months ago
·
JSON representation
Repository
Functions to batch rename photo files with information rich names following the NOSSAFLEX standard and a function to save these metadata inside the exif slots of the scans
Basic Info
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
- Releases: 0
Topics
analog-photography
data-management
exif-metadata
photography
r
weekend-project
Created about 2 years ago
· Last pushed 6 months ago
Metadata Files
Readme
License
Codemeta
README.Rmd
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# nossaflex
[](https://github.com/AlbanSagouis/nossaflex/actions/workflows/R-CMD-check.yaml)
The nossaflex package is the entry of the NOSSAFLEX file naming convention into the R
universe to help scientific, professional or amateur photographers to name their
picture files consistently and informatively.
When taking a picture with an analog camera, data such as aperture, shutter speed
or focal length are not automatically saved the way they are in a digital camera.
Many photographers write down these precious metadata in a notebook, we want to
help them improve their workflow and data quality.
## What is NOSSAFLEX?
Here is an explanation from the creators:
> It’s as easy as the name – NOSSAFLEX has all of the information in the title.
>
> NO = Number
> SS = Shutter Speed
> A = Aperture
> FL = Focal Length
> EX = Exposure
NOSSAFLEX file names looks like this: `NO03_SS250_A8_FL80_EX0.jpg` or this:
`NO34_SS30_A2.8_FL35_EX+1.tiff`!
Learn more on their [website]{https://nossaflex.io/the-system} or on their
[Youtube channel]{https://www.youtube.com/@NOSSAFLEX}.
## The package
Here are the two main functions in the package:
- `renaming_nossaflex` batch-renames picture files from uninformative `DSC_00345.jpg`
to information-rich NOSSAFLEX name based on data provided by the user, see {analog}
section: `NO03_SS250_A8_FL80_EX0.jpg`.
- `editing_exif` batch-saves the metadata of the pictures into the exif slots of
the scan files (jpg, tiff, etc).
## Analog or an other app
## The workflow
## Installation
You can install the development version of nossaflex from [GitHub](https://github.com/) with:
``` r
# install.packages("devtools")
# devtools::install_github("AlbanSagouis/nossaflex")
```
## Example
This is a basic example which shows you how to solve a common problem:
```{r renaming, eval = FALSE}
library(nossaflex)
files <- c("Pictures/2024/01 02 Winter in Berlin/DSC_001034",
"Pictures/2024/01 02 Winter in Berlin/DSC_001035",
"Pictures/2024/01 02 Winter in Berlin/DSC_001036")
filenames <- reading_nossaflex(path = "path_to_the_filenames.txt") # provided by the `analog` app
renaming_nossaflex(filenames = filenames, files = files)
```
Additionally you may want to safely save the shots metadata inside the scan files:
```{r exif_editing, eval = FALSE}
metadata <- reading_nossaflex(path = "path_to_the_filenames.txt") |> # provided by the `analog` app
parsing_nossaflex()
editing_exif(files, metadata)
```
## Related work
The package relies heavily on the great `exiftoolr`{https://github.com/JoshOBrien/exiftoolr/}
package by @JoshOBrien which itself depends on the great `exiftool`{https://exiftool.org/}
software by Phil Harvey.
Finally, jExifToolGUI{https://github.com/hvdwolf/jExifToolGUI} offers exif
editing and with a Graphical Interface, nice. And for Apple users, the Frames iPhone and Mac apps allow integrated shot metadata recording and including the metadata in the exif slots.
Owner
- Name: Alban Sagouis
- Login: AlbanSagouis
- Kind: user
- Location: Berlin
- Company: iDiv
- Repositories: 2
- Profile: https://github.com/AlbanSagouis
Ecologist and scientific programmer
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "nossaflex",
"description": "This package relies on a file naming convention for, essentially analog, photography. Photographs taken on film, then developed, then scanned are lacking important metadata or if they have, it's from the scanning device, not the original camera. The nossaflex package takes NOSSAFLEX structured file names and can 1) batch rename corresponding pictures and 2) edit their exif data to add information such as focal length, shutter speed, aperture. This allow a photographer to take notes on the `analog` app while shooting pictures, export nossaflex compatible file names and use R to rename scans and edit their exif metadata with corresponding shot information.",
"name": "nossaflex: Edit Exif Data of Pictures",
"relatedLink": "https://nossaflex.io/",
"codeRepository": "https://github.com/albansagouis/nossaflex/",
"license": "https://spdx.org/licenses/GPL-3.0",
"version": "0.1.0",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.3.2 (2023-10-31)",
"author": [
{
"@type": "Organization",
"name": "c"
},
{
"@type": "Person",
"givenName": [
"email",
"="
],
"familyName": "\"sagouis@pm.me\""
},
{
"@type": "Person",
"givenName": [
"comment",
"="
],
"familyName": "c))"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": "Alban",
"familyName": "Sagouis",
"email": "sagouis@pm.me"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "withr",
"name": "withr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=withr"
},
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"version": ">= 3.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 4.1.0"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "exiftoolr",
"name": "exiftoolr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=exiftoolr"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "stringi",
"name": "stringi",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=stringi"
},
"4": {
"@type": "SoftwareApplication",
"identifier": "data.table",
"name": "data.table",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=data.table"
},
"5": {
"@type": "SoftwareApplication",
"identifier": "checkmate",
"name": "checkmate",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=checkmate"
},
"SystemRequirements": null
},
"fileSize": "14.394KB"
}
GitHub Events
Total
- Push event: 4
- Pull request event: 1
Last Year
- Push event: 4
- Pull request event: 1
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| AlbanSagouis | a****s@i****e | 7 |
Committer Domains (Top 20 + Academic)
idiv.de: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 0
- Total pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 0
- Pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 1
Top Authors
Issue Authors
Pull Request Authors
- dependabot[bot] (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (1)
github_actions (1)
Dependencies
.github/workflows/R-CMD-check.yaml
actions
- actions/checkout v4 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
DESCRIPTION
cran
- R >= 4.1.0 depends
- checkmate * imports
- data.table * imports
- exiftoolr * imports
- jsonlite * imports
- stringi * imports
- testthat >= 3.0.0 suggests
- withr * suggests