Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Простая скачивалка сайтов  (Прочитано 2879 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн phucker

  • Автор темы
  • Новичок
  • *
  • Сообщений: 1
  • Linux - вот какая тема нынче самая модная…
    • Просмотр профиля
    • PHUCKER
Простая скачивалка сайтов
« : 16 Апреля 2012, 00:18:18 »
Полмесяца назад начал урывками осваивать язык Питон (Python). Сегодня выкроил минутку и создал графический интерфейс пользователя (GUI) для линуксовой команды wget. Теперь скачивать сайты для локального просмотра на компьютере можно через очень простую "гуёвину".

Для работы скрипта Питону может понадобиться библиотека Tkinter. Если скрипт не сработает, то установите эту библиотеку через synaptic или apt-get.

Теги: GNU, Linux, wget, GUI, качалка сайтов, phucker, Питон, Python, программирование



#!/usr/bin/python
# -*- coding: utf-8 -*-

# Скачивание сайтов для локального просмотра на компьютере
# Автор: phucker http://phucker.narod.ru http://arraylove.narod.ru
# Графический интерфейс пользователя для команды wget

# Подключение библиотек Tkinter и os
from Tkinter import *
import os

# Процедура-обработчик для кнопки "Скачать"
def balet():
  adrst = entry01.get()
  os.system('/usr/bin/xterm -e /usr/bin/wget -r -k -l 7 -p -E -nc -np ' + adrst)

# Создаём основную форму
root = Tk()
root.title(u'Скачивалка сайтов')

# Создаём надпись (лейбл) "Адрес" на форме
label01 = Label(root, text=u'Адрес')
label01.grid(row=1, column=0)

# Создаём строку для ввода адреса скачиваемого сайта
entry01 = Entry(root, width=69, borderwidth=2)
entry01.grid(row=1, column=1)

# Создаём кнопку "Скачать"
button01 = Button(root, text=u"Скачать", command=balet)
button01.grid(row=2, column=1)

# Запуск формы
root.mainloop()

Пользователь решил продолжить мысль 16 Апреля 2012, 00:19:53:
Я пытался сделать чтоб работа wget отображалась внутри формы, но не смог найти соответствующих примеров. Пришлось запускать wget через xterm. Конечно, можно было запустить скачивание фоном, но тогда бы пользователь чувствовал дискомфорт от работы вслепую.
« Последнее редактирование: 16 Апреля 2012, 00:19:53 от phucker »
А на работе его реально уважают и ценят, и то что он никогда на пьянки не остаётся, так это ему даже в плюс. Считается солидный человек, только немного замкнутый.

Оффлайн deniska2

  • Участник
  • *
  • Сообщений: 211
  • Учусь долго,но запоминаю навсегда :)
    • Просмотр профиля
Re: Простая скачивалка сайтов
« Ответ #1 : 16 Апреля 2012, 22:53:34 »
Будет ли он работать на 11.10?Поставил IDLE для питона 3.2 (его выдало в ответ на запрос Tkinter в центре приложений).Скопировал код,вставил ,сохранил в .py ,сделал исполняемым.Жму запустить и ничего.Может чего не так делаю?
Будет ли программа дорабатываться?Можно ли ввести меню с выбираемыми для работы параметрами (т.е. по анологии как терминале вводим wget -ключ -ключ ссылка) ?
Ubuntu 12.04

Оффлайн НеФормат

  • Участник
  • *
  • Сообщений: 117
  • Ubuntu 11.10
    • Просмотр профиля
    • Линукс по Русски
Re: Простая скачивалка сайтов
« Ответ #2 : 17 Апреля 2012, 16:41:49 »
А через терминал скомплисть не осилишь?

Мой сайт -  http://linuxfanat.ru!
Могу помочь с PHP,CSS,Html

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Простая скачивалка сайтов
« Ответ #3 : 10 Октября 2012, 15:49:17 »
Вариант, который я написал под себя
#!/bin/sh
SITE=`zenity --entry \
--title="Скачивание сайта" \
--text="результат скачивания в ~/Download.\nВведите начальный URL:" \
--entry-text ""`
cd ~/Download
wget -m --proxy-user=my_name --proxy-password=my_password $SITE
zenity --info --text="Done."

Оффлайн assistent

  • Активист
  • *
  • Сообщений: 682
    • Просмотр профиля
    • Caйт плеера foobnix
Re: Простая скачивалка сайтов
« Ответ #4 : 13 Октября 2012, 17:48:09 »
Я пытался сделать чтоб работа wget отображалась внутри формы, но не смог найти соответствующих примеров...
Не знаю, пройдет ли подобное c Tkinter, но в своей программе на Pygtk я вывожу работу ffmpeg так:
        self.ffmpeg = Popen(list, universal_newlines=True, stderr=PIPE)
       
        for line in iter(self.ffmpeg.stderr.readline, ""):
            gobject.idle_add(self.output.buffer.insert_at_cursor,line)
            adj = self.output.scroll.get_vadjustment()
            gobject.idle_add(adj.set_value,adj.upper - adj.page_size + 1)
       
        self.ffmpeg.wait()
Что странно, весь вывод идет через поток ошибок. Но возможно это исключение и Вам надо использовать stdout
Конечно, хотя этот код и не применим для Вас, но хотя бы принцип вывода возьмете себе. Надеюсь, что помог.
Foobnix - наше всё.

 

Страница сгенерирована за 0.085 секунд. Запросов: 23.