الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Simple Download Manager In Python (pydm)

بدأه ASDen في 12 يوليو 2008 · 10 رد · 4,392 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاتة ,

قمت بكتابة Console Based Threaded Download Manager بسيط

فية الخيارات الأساسية بال Python أحب أسمع ارائكم فى المرفقات ال Source لمستخدمى ال Linux أو من يملكون Python Compiler من مستخدمى الويندوز بجانب Exe لا يحتاج لشىء لمستخدمى الويندوز

----

أمثلة :-

CONSOLE

C:\Python25\PyDM>client.py -h

PyDM Python Download Manager Alpha release

Syntax / Usage

Client[.py] Url [-tTmp][-lLocalfile][-iNumThreads]

-t :Path to temp folder will use current one if not stated

-l :Path to local file where you want to store file

-i :Number of threads used in the download process

Don't add [.py] if u r using the windows executable

جلب صفحة الجوجل وتخزينها فى مكان معين وتحديد ال Temp و ال NumThreads

CONSOLE

C:\Python25\PyDM>Client.py http://google.com -lgg.htm -tC:// -i5

/ google.com

Redirecting

www.google.com

Redirecting

www.google.com.eg

Part # 0 Bytes

Percent Not Available (Unknown size)

0.0 1.64

Finished

جلب ملف مثل

CONSOLE

C:\Python25\PyDM>Client.py http://www.riverbankcomputing.co.uk/static/Downloads/

sip4/sip-4.7.6.zip -lsip.zip -tC:// -i5

/static/Downloads/sip4/sip-4.7.6.zip www.riverbankcomputing.co.uk

Part # 104811 Bytes

Part # 104811 Bytes

Part # 104811 Bytes

Part # 104811 Bytes

Part # 104811 Bytes

Part # 4 Bytes

0.0 0.0 3.05 6.37 8.87 11.91 14.96 18.56 20.78 23.27 26.88 29.92 32.42 35.74 37.

96 39.07 40.18 41.56 42.11 42.67 44.33 48.21 52.09 57.35 63.17 68.16 73.15 75.64

78.18 82.06 85.44 88.59 91.36 94.41 97.18

Finished

---

ملاحظات :-

1) البرنامج حاليا يسجل كل شىء فى ال Memory قبل الكتابة على الملفات فلا تحاول مع ملفات ضخمة

2) فى مشكلة فى اعطاء اسم ملف من ال Console يحوى Get Parameters (يمكنك كتابتة داخل الكود :D )

3) البرنامج حاليا لايتعامل مع ال Transfer Encodings نوعية Deflate أو Gzipped وانما Chunked أو بدون

---

أحب اسمع ارائكم

PyDM_Source.zip

PyDM_exe.zip

#2

لم اتعلم البايثون لذلك لن اتكلم من وجهه نظر مبرمج ولكن ساتكلم من وجهه نظر مستخدم لذلك البرنامج

صور للبرنامج تحت اللينكس

post-115179-1215818602_thumb.png

post-115179-1215818664_thumb.png

post-115179-1215818680_thumb.png

البرنامج جيد ولكن هل لك توضح ما هى الخطوات التى تحدث عندما ياخذ لينك الملف

كيف تعالج مشكلات الشبكات وانقطاع التحميل اثناء عمل البرنامج

لماذا لم يكن برنامجك visual انا اسمع ان من مميزات البايثون الواجهه الرسومية ومكتاباتها فهل هذا مفهوم خاطئ

هل يمكن عمل اتصال باستخدام برتوكلات غير ال http مثل ال ftp وغيرها

عندما لا تعطى البرنامج سوى رابط الملف اين يحمل الملف

هل يمكن لبرنامجك ان يقوم بتنزيل اكثر من ملف فى نفس الوقت وهل يمكن لى ان اقوم بتشغيله اكثر من مرة فى نفس الوقت ام انه من المحتمل حدوث خطأ فى الملفات ال temp لانها باسم ثابت وليس عشوائى

لماذا تحمل وتضع على ال memory لماذا لم تقم بالتحميل مباشرتا على ملفات temp مؤقته

لماذا لم تقم بالتحميل مباشرتا على نفس الملف فى المكان الذى يريده المستخدم

ماذا يحدث عندما يكون الرابط خاطئ

وفى النهاية ما هو انطباعك عن لغة البايثون هل هى لغة ممتازة كما يقال عليها هل لها مكتبات ام انها تحتوى على الكثير built in

اطيب المنى:)

تم تعديل هذه المشاركة بواسطة eramax في 12 يوليو 2008 في 02:26

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#3
اقتباس
كيف تعالج مشكلات الشبكات وانقطاع التحميل اثناء عمل البرنامج

لماذا لم يكن برنامجك visual انا اسمع ان من مميزات البايثون الواجهه الرسومية ومكتاباتها فهل هذا مفهوم خاطئ

هل يمكن عمل اتصال باستخدام برتوكلات غير ال http مثل ال ftp وغيرها

عندما لا تعطى البرنامج سوى رابط الملف اين يحمل الملف

هل يمكن لبرنامجك ان يقوم بتنزيل اكثر من ملف فى نفس الوقت وهل يمكن لى ان اقوم بتشغيله اكثر من مرة فى نفس الوقت ام انه من المحتمل حدوث خطأ فى الملفات ال temp لانها باسم ثابت وليس عشوائى

لماذا تحمل وتضع على ال memory لماذا لم تقم بالتحميل مباشرتا على ملفات temp مؤقته

لماذا لم تقم بالتحميل مباشرتا على نفس الملف فى المكان الذى يريده المستخدم

ماذا يحدث عندما يكون الرابط خاطئ

وفى النهاية ما هو انطباعك عن لغة البايثون هل هى لغة ممتازة كما يقال عليها هل لها مكتبات ام انها تحتوى على الكثير built in

1) مشكلات ضعف التحميل تتم معالجتها بالاستمرار فى المحاولة حتى يصلا لأى شىء عند قطع الاتصال سينبهك ال Compiler

2) لا أنا استتخدم Http فقط حاليا

3) خطأ سوف يحملة ويحفظة فى المسار الافتراضى (مسار البرنامج ) ويسمية باسم افتراضى Name.Ext راجع صورتك التالثة كويس حتشوف انة موجود بعد ال ls

4)نعم عندما تشغل منة اكثر من نسخة فى نفس الوقت باكثر من Temp :P هذا الموضوع سيضاف ان شاء الله عند اضافة ال Gui عشان ليس لة داع أو معنى فى ال Console

5)لماذا فعلت هذا ... استسهال حتى الان الموضوع معالجتة سهلة ولكن ساحاول معالجتة بطريقتة Efficient فى استخدام ال HD

6)هذا ما فعلت راجع 3

7)عندها أيضا سينبهك ال Compiler

----

لست خير من يتكلم عن ال Python ولكنها -بالنسبة لى -تؤدى المطلوب -فمثلا بها مكتبات ولكن عندما تريد مستوى اكبر فى التحكم تستطيع استخدام Raw Sockets كما حدث فى حالتى هذة

هذا غير انى لم اغير سطر لكى يعمل البرنامج على ال Win وال Linux (أكيد لم اجرب ال Mac )

---

البرنامج مازال فى ال Alpha ومازلت اعتمد ان ال Compiler عنده رسائل خطأ :D ظريفة برضة

---

بالنسبة لل Gui باذن الله أنوى اضافة Qt Gui للبرنامج

---

جرب تحمل من المواقع التى تعمل Limit لعدد ال Connections

وحاول تقارن سرعة التنزيل للبرنامج بأى برنامج اخر للتنزيل (المفروض المتوسط سيكون واحد ان شاء الله )

#4

هلا اخي .. شكرا جزيلا وموفق ... ^_^ والله يكثر من شله البايثون :D

Be Happy

^_^

#5

السلام عليكم ورحمه الله وبركاتة ,

تم اصدار النسخة 1.1 من ال PyDM بالاضافات التالية :-

1) توفير طريقتين Interfaces للتعامل مع ال Core واحد من ال Qt و الاخرى ال Console

2) دعم ايقاف التحميل Pause

3) دعم الاستكمال Resume

4) توفير ملف PyDM.ini للاعدادات (عدد ال Threads ومكان ال Temp& Download Directory ) (ولكن لا توجد حتى الان Gui معين للتحكم فيها )

5) عرض ال Url / Rate / File name

التحميل من هنا :

http://sourceforge.net/projects/pycdm/

صوره :

post-110364-1220619653_thumb.jpg
#6

بارك الله فيك .. ساجربها باقرب وقت .. :)... يبدو انها اصداره ممتازه

Be Happy

^_^

#7

اخي العزيز.. البرنامج يعمل بشكل ممتاز خصوصا مع الملفات صغيره الحجم .. لكن الملفات الكبيره لا يعمل بشكل جيد .. لذلك ارجو ان تكون من المميزات القادمه دعم تحميل ملفات باحجام اكبر .. وايجاد حل بدل الذاكره ثم الهارد.. :) وشكرا

Be Happy

^_^

#8

@openSUSE : تتخيل هناك Bug معينة فى تحميل الملفات الكبيرة كنت ناسى اصلحها

هى ان البرنامج كان يحمل ملفات ال Temp كلها فى الذاكرة فى يكتبهم فى ملف واحد الناتج :P

شكرا على التذكير

بالنسبة لموضوع الذاكره فقد حللتة فقط راقب استهلاكة للذاكرة بغض النظر عن حجم الملف ( ال Bug لسابقة ستظهر عند دمجهم فى ملف واحد وتؤدى الى استهلاك شنيع للذاكره )

#9

بخصوص الذاكره .. الوضع تحسن الى الافضل .. الان راقبته ..

مثال عند تجربه تحميل ملف كبير نسبيا .. حوالي 50 ميجا

طبعا فيه سطر ناقص وهو مسار اللينك من دون الدومين .. ثم الدومين لوحده

هذه النتائج .. لتكون على درايه افضل لما وجدته ..

Unhandled exception in thread started by 
Traceback (most recent call last):
  File "/home/user/download/appz/pyDM/PyDM/PyDM/PyDM.py", line 23, in GetParallel
	c.HeaderChecker()
  File "/home/user/download/appz/pyDM/PyDM/PyDM/HttpC.py", line 97, in HeaderChecker
	HRead.RetrieveHeaders(self.client)
  File "PyDM\Headers.py", line 78, in RetrieveHeaders
  File "PyDM\Headers.py", line 82, in GetHeaders
IndexError: list index out of range
Traceback (most recent call last):
  File "PyDM\PyDMui_Main.py", line 129, in closeEvent
  File "PyDM\PyDMui_Main.py", line 155, in Table2List
AttributeError: 'NoneType' object has no attribute 'text'

ويلا .. شد حيلك ... الكل مستنيك :wink:

وتسلم على البرنامج ..

ترتيبه ممتاز جدا .... ^_^

بالتوفيق

تم تعديل هذه المشاركة بواسطة openSUSE في 6 سبتمبر 2008 في 04:30

Be Happy

^_^

#10

الحمد لله تم تحديث النسخة فى ال SF بحل ال Bug السابق ذكرها

----

شىء اخر تم اضافة نسخة Windows Exe لمستعملى الويندوز غير مالكى ل Python Compiler ايضا فى ال SF هنا :

http://sourceforge.net/projects/pycdm/

---

@openSUSE : هذه مشكلة اخرى لا علاقة لها بالحجم (تستطيع تحميل ما هو اضخم دون اى مشاكل )

المشكلة هنا فى انة لم يفهم ال Headers من ال Server ... هل من الممكن ان اعرف منك اللنك ؟

#11

بارك الله فيك على النسخه الجديده ....

اللينك .. افحص الخاص..

Be Happy

^_^

مواضيع مشابهة