xtrime-ru / TelegramApiServer

Fast, simple, async php telegram api server: MadelineProto + Amp HTTP Server
https://tg.i-c-a.su
MIT License
534 stars 120 forks source link

downloadToResponse #87

Closed im-rasulev closed 2 years ago

im-rasulev commented 2 years ago

Здравствуйте, как я понял, в этом запросе нужно передавать второй аргумент в качестве пути для скачивания файла (ошибка «A few many arguments...»)?

curl --location --request POST '127.0.0.1:9503/api/downloadToResponse' \
--header 'Content-Type: application/json' \
--data-raw '{
    "media": {
        "_": "messageMediaDocument",
        "document": {
            "_": "document",
            "id": 5470079466401169993,
            "access_hash": -6754208767885394084,
            "file_reference": {
                "_": "bytes",
                "bytes": "AkKdqJkAACnyXshwzMhdzeC5RkdVZeh58sAB/UU="
            },
            "date": 1551713685,
            "mime_type": "video/mp4",
            "size": 400967,
            "dc_id": 2,
            "attributes": [
                {
                    "_": "documentAttributeFilename",
                    "file_name": "одолдол.mp4"
                }
            ]
        }
    }
}'
xtrime-ru commented 2 years ago

Такая ошибка появляется, когда передан невалидный json в --data-raw Путь для скачивания не нужен, так как этот метод отдает файл в ответе.

FranzGeringer commented 2 years ago

Так чё делать чтоБы всё работало ?

xtrime-ru commented 2 years ago

Так чё делать чтоБы всё работало ?

В dataRaw нужно передать объект с одним свойством. Внутри этого свойства должен быть

Message, an Update, a MessageMedia

https://docs.madelineproto.xyz/docs/FILES.html#downloading-files

Так же есть методы getMedia и getMediaPreview: https://github.com/xtrime-ru/TelegramApiServer/blob/master/src/MadelineProtoExtensions/ApiExtensions.php#L342

Туда можно передать просто массив с peer и id сообщения:

curl 'http://127.0.0.1:9503/api/getMedia?data[peer]=breakingmash&data[id][]=123' -g