Metadata-Version: 2.1
Name: framefile
Version: 0.0.5
Summary: Matching and parsing file names like IMG_####.JPG or IMG_%04d.JPG
Home-page: https://github.com/rtmigo/framefile_py
Author: Artyom Galkin
Author-email: ortemeo@gmail.com
License: MIT
Keywords: text,string,pattern,regex,parsing,integer,glob,hash,digit,number
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Typing :: Typed
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE

# [framefile](https://github.com/rtmigo/framefile_py#readme)

Python library for parsing and matching file name patterns like `IMG_####.JPG` or 
`IMG_%04d.JPG`.

Such patterns are used, for example, for the file names of individual video
frames in  [ffmpeg](https://www.ffmpeg.org/)
and [Blender](https://www.blender.org/).

# Install

```
pip3 install framefile
```

<details>
<summary>other options</summary>

#### Install pre-release from GitHub:
```
pip3 install git+https://github.com/rtmigo/framefile_py@staging#egg=framefile
```

</details>

# Use

## Guess pattern from file name

```python
import framefile

print(framefile.filename_to_hash_pattern("IMG_4567.JPG"))  # IMG_####.JPG
print(framefile.filename_to_pct_pattern("IMG_4567.JPG"))  # IMG_%04d.JPG
```



## Find files by pattern

```python
import glob
import framefile

file_mask = framefile.hash_pattern_to_glob('/path/to/img####.jpg')

print(glob.glob(file_mask))

# prints all files matching /path/to/img####.jpg
```

For percent patterns `pct_pattern_to_glob` can be used instead of `hash_pattern_to_glob`.

## Match file names as strings

```python
import re
import framefile

regex = framefile.hash_pattern_to_regex('img####.jpg')

a = re.match(regex, 'img0023.jpg')
print(a.group(0))  # img0023.jpg
print(a.group(1))  # 0023

b = re.match(regex, 'anything.txt')
print(b)  # None
```

For percent patterns `pct_pattern_to_regex` can be used instead of `hash_pattern_to_regex`.

## Extract number from file name

```python
import framefile

x: int = framefile.hash_extract_number("img####.jpg", "img0023.jpg")

print(x)  # 23

try:
    y = framefile.hash_extract_number("img####.jpg", "thumbs.db")
except framefile.PatternMismatchError:
    print("Oops!")
```

For percent patterns `pct_extract_number` can be used instead of `hash_extract_number`.



