-This Python sample demonstrates the following process of uploading large video files asynchronously with the Twitter API.
+# Large Media Upload
+
+This Python sample demonstrates the following process of uploading large media (video / GIF / image) files asynchronously with the Twitter API, via the "chunked upload" method.
1. **INIT** media upload.
2. **APPEND** chunked data.
3. **FINALIZE** media uploaded.
1. **INIT** media upload.
2. **APPEND** chunked data.
3. **FINALIZE** media uploaded.
-4. Check **STATUS** of video processing.
-5. Tweet with attached video.
+4. Check **STATUS** of media processing.
+5. Tweet with attached media.
-Large video files are longer than 30 seconds up to 140 seconds, and/or a file size larger than 15 megabytes up to 512 megabytes.
+Large video files are longer than 30 seconds / up to 140 seconds, and/or a file size larger than 15 megabytes up to 512 megabytes.
-[Learn more](https://dev.twitter.com/rest/media) about the Twitter Media APIs. Pay attention to the other requirements such as encoding, frame size and video formats supported.
+[Learn more](https://developer.twitter.com/en/docs/media/upload-media/overview) about the Twitter Media APIs. Pay attention to the other requirements such as encoding, frame size and video formats supported, as these may be reasons for uploads failing at the processing stage.
## Running the sample
1. Install requirements:
```
## Running the sample
1. Install requirements:
```
- $ pip install -r requirements.txt
+ $ pipenv shell
+ $ pipenv install
```
```
-2. Fill in your [consumer keys and access tokens](https://apps.twitter.com) in `async-upload.py`:
+2. Fill in your [consumer keys and access tokens](https://developer.twitter.com/en/apps) in `async-upload.py`:
```
CONSUMER_KEY = 'your-consumer-key'
```
CONSUMER_KEY = 'your-consumer-key'
@@ -29,7+33,7 @@ Large video files are longer than 30 seconds up to 140 seconds, and/or a file si
ACCESS_TOKEN_SECRET = 'your-access-secret'
```
ACCESS_TOKEN_SECRET = 'your-access-secret'
```
-3. Edit path to your video file in `async-upload.py`:
+3. Edit path to your media file in `async-upload.py`: