<commit_before>![alt text](https://github.com/dthompson/billboard/raw/master/img/billboard.png "Billboard")


# Billboard

    Hold on one second, buddy. Let me see something here.
    Boy, I am good. I commandeered your screens.
    I need them. Time for a little transparency.
    - <NAME>

Got screens in your home or office? Wish you could magically zap stuff onto them? Here's an API for that.

Simply open a unique URL in a fullscreen web browser on as many or as few screens as you'd like, and issue calls to the  Billboard API. Your content will appear on the screens you've specified, through the magic of node.js and Socket.io.

## Setup 

1. Deploy a copy of Billboard to a location of your choice. (We like Heroku.)
2. On a computer connected to a screen, open the following URL: http://{host_location}/screen/{screen_name_of_your_choice}. (We suggest using Google Chrome in fullscreen mode.)
3. Repeat Step 2 for as many screens as you have. 
4. Issue calls to the API (see below) and your content appears.

## API Usage

### List Available Screens
List the names of screens that are currently available:

`curl http://{billboard_instance_url}/api/screens`

response:
```javascript
    {   
      "screens": [
        "all", // all currently connected screens
        "right",
        "left"
        ]
    }
```

### Reload a screen
Runs `window.location.reload()` to force get a screen to update:

`curl http://{billboard_instance_url}/api/screens/:name:/reload`

response:
```javascript
{   
  "status": "ok"
}
```

### Display content on a screen

#### Image
Show an image on a screen:

`curl -X POST -d action=image -d url="<Path to Image>" http://{billboard_instance_url}/api/screens/home`

response:
```javascript
{
  "status": "ok"
}
```

### Coming Soon:

#### Default content
Content that shows when other content expires.

#### Minimum and Maximum time
Show content for a specified length of time.

#### iframe
Shows web content within an iframe on the screen.

#### Video
Plays a video.

##### carousel
Rotate through content items on  a timer.

#### Persistence
Save the display settings so that they persist through server / client restarts.<commit_msg>Add video api call to readme<commit_after>![alt text](https://github.com/dthompson/billboard/raw/master/img/billboard.png "Billboard")


# Billboard

    Hold on one second, buddy. Let me see something here.
    Boy, I am good. I commandeered your screens.
    I need them. Time for a little transparency.
    - <NAME>

Got screens in your home or office? Wish you could magically zap stuff onto them? Here's an API for that.

Simply open a unique URL in a fullscreen web browser on as many or as few screens as you'd like, and issue calls to the  Billboard API. Your content will appear on the screens you've specified, through the magic of node.js and Socket.io.

## Setup 

1. Deploy a copy of Billboard to a location of your choice. (We like Heroku.)
2. On a computer connected to a screen, open the following URL: http://{host_location}/screen/{screen_name_of_your_choice}. (We suggest using Google Chrome in fullscreen mode.)
3. Repeat Step 2 for as many screens as you have. 
4. Issue calls to the API (see below) and your content appears.

## API Usage

### List Available Screens
List the names of screens that are currently available:

`curl http://{billboard_instance_url}/api/screens`

response:
```javascript
    {   
      "screens": [
        "all", // all currently connected screens
        "right",
        "left"
        ]
    }
```

### Reload a screen
Runs `window.location.reload()` to force get a screen to update:

`curl http://{billboard_instance_url}/api/screens/:name:/reload`

response:
```javascript
{   
  "status": "ok"
}
```

### Display content on a screen

#### Image
Show an image on a screen:

`curl -X POST -d action=image -d url="<Path to Image>" http://{billboard_instance_url}/api/screens/home`

response:
```javascript
{
  "status": "ok"
}
```

#### Video
Plays a a youtube video.

`curl -X POST -d action=video -d url="<Youtube URL>" http://{billboard_instance_url}/api/screens/home`

response:
```javascript
{
  "status": "ok"
}
```


### Coming Soon:

#### Default content
Content that shows when other content expires.

#### Minimum and Maximum time
Show content for a specified length of time.

#### iframe
Shows web content within an iframe on the screen.

##### carousel
Rotate through content items on  a timer.

#### Persistence
Save the display settings so that they persist through server / client restarts.
{'fraction_non_alphanumeric': 0.10731599823710886, 'fraction_numerical': 0.0022036139268400176, 'mean_word_length': 3.5987841945288754, 'pattern_counts': {'":': 7, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '996337', 'n_tokens_mistral': 1398, 'n_tokens_neox': 1314, 'n_words': 583}