أصبح تنزيل Gists من Github أمرًا بسيطًا

جيثب جيست هو المكان الذي يمكنك من خلاله إنشاء محتوى خاص أو عام، أي تخزين ملفاتك إما بشكل خاص أو عام. لنفترض سيناريو حيث قمت بكتابة عدد لا بأس به من العناصر لمشروعك وتريد تنزيل مجموعة منها. الطريقة الوحيدة التي يمكنك القيام بها باستخدام جيثب جيست هو فتح كل Gist لتنزيل ZIP أو الاستنساخ عبر HTTP أو SSH. تدور هذه المقالة حول جعل المهمة المذكورة أعلاه أسهل. باستخدام الأوامر أدناه، يمكنك أيضًا تنزيل Gists من مستخدمي github الآخرين باستثناء المستخدمين الخاصين حتى تعرف كلمة المرور الخاصة بهم. سوف نستخدم طلبات حزمة لهذا الاقتراح. إنها حزمة رائعة لإرسال طلبات HTTP بأقل قدر من التعليمات البرمجية. تثبيت 1. قم بتنزيل الحزمة من بايبي عبر المحطة باستخدام pip3 بناء الجملة:
 pip3 install requests    ملحوظة:   To become a root user run the following command:  
 sudo pip3 install requests    البرنامج النصي بايثون3 لا يمكن تشغيل البرنامج النصي على IDE عبر الإنترنت وبالتالي يمكنك النقر فوقه هنا   to see how it works. Python   
   import   requests   import   os   def   create_directory  (  dirname  ):   #Creates a new directory if a directory with dirname does not exist   try  :   os  .  stat  (  dirname  )   except  :   os  .  mkdir  (  dirname  )   def   show  (  obj  ):   #Displays the items in the obj   for   i   in   range  (  len  (  obj  )):   print  (  str  (  i  )  +  ': '  +  str  (  obj  [  i  ]))   def   auth  ():   #Asks for the user details   ask_auth   =   input  (  'Do you want to download gists from your account   ?   Type   'yes'   or   'no'  :   ')   if  (  ask_auth  ==  'yes'  ):   user   =   input  (  'Enter your username: '  )   password   =   input  (  'Enter your password: '  )   request   =   requests  .  get  (  'https://api.github.com/users/'  +  user  +  '/gists'      auth  =  (  user     password  ))   elif  (  ask_auth  ==  'no'  ):   user   =   input  (  'Enter username: '  )   request   =   requests  .  get  (  'https://api.github.com/users/'   +  user  +  '/gists'  )   return   [  ask_auth     user     request  ]   def   load  (  request  ):   #Loads the files and the gist urls   output   =   request  .  text  .  split  (  ''  )   gist_urls   =   []   files   =   []   for   item   in   output  :   if   'raw_url'   in   item  :   gist_urls  .  append  (  str  (  item  [  11  :  -  1  ]))   if   'filename'   in   item  :   files  .  append  (  str  (  item  .  split  (  ':'  )[  1  ][  2  :  -  1  ]))   return   [  gist_urls     files  ]   def   write_gist  (  filename     text  ):   #Writes text(gist) to filename   fp   =   open  (  filename     'w'  )   fp  .  write  (  text  )   fp  .  close  ()   def   download  (  permission     user     request     fileno  ):   #Loads and writes all the gists to   dirname     if  (  permission   ==   'yes'   or   permission   ==   'no'  ):   gist_urls     files   =   load  (  request  )   dirname   =   user  +  ''s_gists/'   create_directory  (  dirname  )   if  (  fileno  [  1  ]   ==   'all'  ):   for   i   in   range  (  len  (  gist_urls  )):   gist   =   requests  .  get  (  gist_urls  [  i  ])   write_gist  (  dirname  +  files  [  i  ]   gist  .  text  )   else  :   for   i   in   range  (  1    len  (  fileno  )):   gist   =   requests  .  get  (  gist_urls  [  int  (  fileno  [  i  ])])   write_gist  (  dirname  +  files  [  int  (  fileno  [  i  ])]   gist  .  text  )   def   detailed  (  urls     pos  ):   #Prints out the contents of a file   gist   =   requests  .  get  (  urls  [  int  (  pos  )])   print  (  gist  .  text  )   def   main  ():   #Authenticates and downloads gists according to user's choice   #Commands:   #show: To show all the available gists with their assigned gistno   #download all: To download all the available gists   #download gistno(s): To download gist(s) assigned to gistno(s)   #detailed gistno: To print content of gist assigned to gistno   #exit: To exit the script   ask_auth     user     request   =   auth  ()   urls     files   =   load  (  request  )   try  :   while  (  1  ):   command   =   input  (  'Enter your command: '  )   if  (  'download'   in   command  ):   download  (  ask_auth     user     request     command  .  split  (  ' '  ))   elif  (  'detailed'   in   command  ):   detailed  (  urls     command  .  split  (  ' '  )[  1  ])   elif  (  command   ==   'show'  ):   show  (  files  )   elif  (  command   ==   'exit'  ):   return   except  :   pass   if  (  __name__   ==   '__main__'  ):   main  ()   
توضيح يقوم GithubGist API بتخزين معلومات حول كل مستخدم على https://api.github.com/users/username/gists.
  • أرسل طلب HTTP إلى عنوان url أعلاه لاسترداد معلومات حول المستخدم.
  • ابحث عن Raw_url من كل جوهر متاح وطلبات HTTP المرسلة لاسترداد المعلومات المتعلقة بها.
  • التلاعب بالمعلومات لاحتياجاتك.