Metadata-Version: 2.1
Name: DerPyBooru-Nullforce
Version: 0.9.1
Summary: Python bindings for Derpibooru's API
Home-page: https://github.com/nullforce-forks/NF-DerPyBooru
Author: Nullforce
Author-email: glenngit@nullforce.com
License: Simplified BSD License
Keywords: derpibooru ponies pony mlp
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: BSD License
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
Requires-Dist: requests
Requires-Dist: deprecation

# DerPyBooru

Python bindings for Derpibooru's API

License: **Simplified BSD License**

Version: **0.9.0**

[![Downloads](https://pepy.tech/badge/derpybooru-nullforce)](https://pepy.tech/project/derpybooru-nullforce)

## Features

- High-level abstraction over Derpibooru's REST API
- Parameter chaining for ease of manipulation
- Syntactic sugar for queries, e.g., "query.score >= 100" compiling to "score.gte:100"
- Design focusing on iterables and lazy generation for network efficiency

## Dependencies

- python2.7 or newer
- requests

## About this Fork

This is a fork of the DerPyBooru package; it is meant to be a drop in replacement
for the modules in that package.

To use, use `derpybooru_nullforce` where you see `derpybooru` used below.

## How to install

### Python 2.7

    $ pip install derpybooru-nullforce

### Python 3.x

    $ pip3 install derpybooru-nullforce

## Checking documentation

### Python 2.7

    $ pydoc derpibooru

### Python 3.x

    $ pydoc3 derpibooru

## Typical usage

### Getting images currently on Derpibooru's front page

```python
from derpibooru import Search

for image in Search():
  id_number, score, tags = image.id, image.score, ", ".join(image.tags)
  print("#{} - score: {:>3} - {}".format(id_number, score, tags))
```

### Searching posts by tag

```python
from derpibooru import Search

for image in Search().query("rarity", "twilight sparkle"):
  print(image.url)
```

### Crawling Derpibooru from first to last post

```python
from derpibooru import Search

# This is only an example and shouldn't be used in practice as it abuses
# Derpibooru's licensing terms
for image in Search().ascending().limit(None):
  id_number, score, tags = image.id, image.score, ", ".join(image.tags)
  print("#{} - score: {:>3} - {}".format(id_number, score, tags))
```

### Getting random posts

```python
from derpibooru import Search, sort

for post in Search().sort_by(sort.RANDOM):
  print(post.url)
```

### Getting top 100 posts
```python
from derpibooru import Search, sort

top_scoring = [post for post in Search().sort_by(sort.SCORE).limit(100)]
```

### Storing and passing new search parameters

```python
from derpibooru import Search, sort

params = Search().sort_by(sort.SCORE).limit(100).parameters

top_scoring = Search(**params)
top_animated = top_scoring.query("animated")
```

### Filtering by metadata

```python
from derpibooru import Search, query

q = {
  "wallpaper",
  query.width == 1920,
  query.height == 1080,
  query.score >= 100
}

wallpapers = [image for image in Search().query(*q)]
```

### Getting the latest images from a watchlist

```python

from derpibooru import Search, user

key = "your_api_key"

for post in Search().key(key).watched(user.ONLY):
  id_number, score, tags = post.id, post.score, ", ".join(post.tags)
  print("#{} - score: {:>3} - {}".format(id_number, score, tags))
```

## Changelog

**0.9.0**

* Update sort to include: *first_seen_at, tag_count, and updated_at*
* Deprecated Search() methods that appear to be no longer supported by derpibooru:
  * faves()
  * uploads()
  * upvotes()
  * watched()

**0.8.0**

* Updated sort to include *wilson* and *width*


