mirror of
https://github.com/immich-app/immich.git
synced 2025-11-05 20:13:11 -05:00
* refactor: asset media endpoints * refactor: mobile upload livePhoto as separate request * refactor: change mobile backup flow to use new asset upload endpoints * chore: format and analyze dart code * feat: mark motion as hidden when linked * feat: upload video portion of live photo before image portion * fix: incorrect assetApi calls in mobile code * fix: download asset --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Zack Pollard <zackpollard@ymail.com>
43 lines
930 B
Markdown
43 lines
930 B
Markdown
# Python File Upload
|
|
|
|
```python
|
|
#!/usr/bin/python3
|
|
|
|
import requests
|
|
import os
|
|
from datetime import datetime
|
|
|
|
API_KEY = 'YOUR_API_KEY' # replace with a valid api key
|
|
BASE_URL = 'http://127.0.0.1:2283/api' # replace as needed
|
|
|
|
|
|
def upload(file):
|
|
stats = os.stat(file)
|
|
|
|
headers = {
|
|
'Accept': 'application/json',
|
|
'x-api-key': API_KEY
|
|
}
|
|
|
|
data = {
|
|
'deviceAssetId': f'{file}-{stats.st_mtime}',
|
|
'deviceId': 'python',
|
|
'fileCreatedAt': datetime.fromtimestamp(stats.st_mtime),
|
|
'fileModifiedAt': datetime.fromtimestamp(stats.st_mtime),
|
|
'isFavorite': 'false',
|
|
}
|
|
|
|
files = {
|
|
'assetData': open(file, 'rb')
|
|
}
|
|
|
|
response = requests.post(
|
|
f'{BASE_URL}/assets', headers=headers, data=data, files=files)
|
|
|
|
print(response.json())
|
|
# {'id': 'ef96f635-61c7-4639-9e60-61a11c4bbfba', 'duplicate': False}
|
|
|
|
|
|
upload('./test.jpg')
|
|
```
|