download.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/bash
  2. # Config
  3. source ~/.download.config
  4. TIMEOUT=10
  5. AGENT="Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"
  6. # Grab the input URLs
  7. URLS="`cat -`"
  8. # Bail if there's nothing to process
  9. if [ -z "${URLS}" ]; then
  10. exit 0
  11. fi
  12. # Choose an inter-file delay
  13. DELAY="${2}"
  14. if [ -z "${DELAY}" ]; then
  15. DELAY=5
  16. fi
  17. # Find the destination directory
  18. DEST="${1}"
  19. if [ -z "${DEST}" ]; then
  20. DEST="${HOME}/Desktop"
  21. if [ -e "${DEST}" ]; then DEST="${HOME}"; fi
  22. fi
  23. SLEEP=0
  24. IFS=$'\n'
  25. for i in ${URLS}; do
  26. if [ $SLEEP -gt 0 ]; then sleep $SLEEP; fi
  27. SLEEP="${DELAY}"
  28. # Use Transmission if the URL is a magenet link
  29. if [ -n "${TRANS_URL}" ] && echo "${i}" | grep -Eqi '^magnet:'; then
  30. SESSION_ID=$(curl --silent --max-time "${TIMEOUT}" "${TRANS_URL}" | sed 's/.*<code>//g;s/<\/code>.*//g')
  31. if [ -n "${SESSION_ID}" ]; then
  32. SLEEP="${DELAY}"
  33. RESULT="`curl --silent --max-time "${TIMEOUT}" \
  34. --header "${SESSION_ID}" "${TRANS_URL}" \
  35. -d '{"method":"torrent-add", "arguments":{"paused": "false", "filename": "'${i}'"}}'`"
  36. if ! echo "${RESULT}" | grep -q '"result":"success"'; then
  37. echo "Remote error: ${RESULT}" 1>&2
  38. echo "Magnet URL: ${i}"
  39. fi
  40. else
  41. echo "Transmission not available for magnet link: ${i}" 1>&2
  42. fi
  43. # Use NZBGet if the URL is an NZB file
  44. elif [ -n "${NZB_URL}" ] && echo "${i}" | grep -Eqi '\/(getnzb\/|api\?t\=get\&)'; then
  45. if curl -k --silent --max-time "${TIMEOUT}" "${NZB_URL}" | grep -q 'version'; then
  46. URL="`echo "${i}" | cut -d '#' -f 1`"
  47. NAME="`echo "${i}" | cut -d '#' -f 2-`"
  48. RESULT="`curl -k --silent --max-time "${TIMEOUT}" "${NZB_URL}" \
  49. -d '{"method":"append","params":["'"${NAME}"'.nzb","'"${URL}"'","",0,false,false,"",0,"force"]}'`"
  50. if ! echo "${RESULT}" | grep 'result' | grep -q '[1-9]'; then
  51. echo "Remote error: ${RESULT}" 1>&2
  52. echo "NZB URL: ${i}"
  53. fi
  54. else
  55. echo "NZBGet not available for NZB link: ${i}" 1>&2
  56. fi
  57. # Unknown URL type
  58. else
  59. echo "Cannot fetch unknown URL type: ${i}" 1>&2
  60. fi
  61. done