Pull to refresh

Скачиваем Google Docs без браузера

Reading time 2 min
Views 7.1K
Скриптик выглядит как-то так:

#!/bin/bash
token=$(curl -s www.google.com/accounts/ClientLogin -d Email=user.name@gmail.com -d Passwd=qwerty -d accountType=GOOGLE -d service=writely -d Gdata-version=3.0 |cut -d "=" -f 2)
set $token
curl --silent --header "Gdata-Version: 3.0" --header "Authorization: GoogleLogin auth=$3" "http://docs.google.com/feeds/user.name@gmail.com/private/full" | tidy -xml -indent -utf8 -quiet > /tmp/gdocs.xml
file=(doc1 doc2 doc3 doc4)
resourceId=(document:0ASpnxqo7zPlfZGQ3Z2Zwc183NWZteDNiM2Y ...) # и ещё 3 resourceId
i=0
while (( i < 4 )) # match num_files
do
wget --header "Gdata-Version: 3.0" --header "Authorization: GoogleLogin auth=$3" "https://docs.google.com/feeds/download/documents/Export?docID=${resourceId[$i]}&exportFormat=txt" -O /tmp/${file[$i]}.txt

sleep 2
i=$i+1
done

А теперь, как принято, разоблачение.
  • Первой строкой получаем жетон аутентификации. Далее его предъявляем для скачивания RSS потока, который сохраняем в файл. Далее из него берём resourceId и скачиваем доки. Тут следует сделать оговорку, что resourceId берётся «вручную» из сохраненного RSS файла. Можно, конечно, и это автоматизировать, но если документов не много то и раздувать скрипт не обязательно.
  • Ссылка для скачивания доков:
    GET /feeds/download/documents/Export?docID=resource_id&exportFormat=format
  • service=writely. Список наименований кодов Гугло-сервисов берется отсюда.
  • resourceId ключевое элемент. Это идентификатор дока. Его берём из RSS потока скачанного в файл /tmp/gdocs.xml. Релевантные тэги выглядят так и находятся в той же записи где название доки.
    <gd:resourceId>
    document:0ASpnxqo7zPlfZGQ3Z2Zwc183Zzc3NnZkY2g</gd:resourceId>
  • exportFormat=txt. Можно выбрать и другие форматы для скачивания. Список тут.
Написано на скорую руку, поэтому любые замечания и критика приветствуются.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+19
Comments 17
Comments Comments 17

Articles