рдкрд╛рдпрдерди + Google рд░реАрдбрд░ рдкреЙрдбрдХрд╛рд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдкрд░рд┐рдЪрдп



рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреЛрд╕реНрдЯ рдерд╛ " рдПрдордкреА рдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдкреЙрдбрдХрд╛рд╕реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ "ред рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ iTunes рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЕрдиреНрдп рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ (рдореИрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ :)ред рдореБрдЭреЗ рдмрд╕ рдкреЙрдбрдХрд╛рд╕реНрдЯ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдкрд╛рдардХ рдХреЗ рдлреАрдб рдореЗрдВ рдЗрдХрдЯреНрдард╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдореИрдВ рдЕрдЬрдЧрд░ рдХреЛ PHP рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред



рдореИрдВ рдХреБрдЫ рд╕рд▓рд╛рд╣ рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ - рдореИрдВ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рдЖрд▓реЛрдЪрдХ рдХрд░реЗрдВрдЧреЗ ... рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ред



рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдЧрдарди

рдореИрдВ Google рд░реАрдбрд░ рдореЗрдВ рдкреЙрдбрдХрд╛рд╕реНрдЯ рдЯреЗрдк рдХреА рдПрдХ рд╕реВрдЪреА рд░рдЦрддрд╛ рд╣реВрдВред рд░рд┐рдмрди рдХреЛ рдЙрдирдХреЗ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдЭреВрда рд╣реЛрддрд╛ рд╣реИ:





рдкреЙрдбрдХрд╛рд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЧрд┐рд░реЗ рдирдП рдкреЙрдбрдХрд╛рд╕реНрдЯ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреАред рдореИрдВрдиреЗ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд┐рд░рд╛рдорд┐рдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓рд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧреА GoogleReader рдХреНрд▓рд╛рд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рд╣реИред рд╕рдЪ рд╣реИ, рдореБрдЭреЗ рдХреЗрд╡рд▓ Google рд░реАрдбрд░ API рдкрд░ рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд┐рд▓рд╛, рди рдХрд┐ рд╕реНрд╡рдпрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ред рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рднреА рд╣реИред



рд╕реНрд░реЛрдд рдХреЛрдб

рдЕрдВрдд рдореЗрдВ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

рдФрд░ рдпрд╣рд╛рдБ рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕реНрд░реЛрдд рд╣реИ:

  рдЖрдпрд╛рдд sys
 рдЖрдпрд╛рдд os
 рдЖрдпрд╛рдд рдХрд╛ рд╕рдордп
 рдЖрдпрд╛рдд urlparse
 рдЖрдпрд╛рдд urlib

 рдЖрдпрд╛рдд рдкреНрд░рдЧрддрд┐
 GoogleReader рдЖрдпрд╛рдд рдХрд░реЗрдВ

 downloadDir = "myDownloadDir";
 logFile = downloadDir + "PodcastsDownloadTool.log";
 рдЯреИрдЧ = "рдкреЙрдбрдХрд╛рд╕реНрдЯ";
 рд▓реЙрдЧрд┐рди = "myGoogleReaderLogin";
 рдкрд╛рд╕рд╡рд░реНрдб = "myGoogleReaderPassword";

 GetLocalFileNameFromURL (рдкреВрд░реНрдгрдкрде):
     (рдлрд╝рд╛рдЗрд▓рдкрде, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо) = os.path.split (urlparse.urlparse (рдкреВрд░реНрдгрдкрде) .path)
     рдбрд╛рдЙрдирд▓реЛрдб рдбрд╛рдЙрдирд▓реЛрдбDIR + рдлрд╝рд╛рдЗрд▓ рдирд╛рдо

 logMessage (рд╕рдВрджреЗрд╢) рдХреЛ рд╣рд░рд╛рдпрд╛:
     f = рдЦреБрд▓рд╛ (logFile, "a")
     рдкреНрд░рд┐рдВрдЯ >> рдПрдл, рд╕рдВрджреЗрд╢;
     f.close ();
     рдкрд╛рд╕

 рдбреАрдПрдлрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рд┐рд▓реЗ (рдпреВрдЖрд░рдПрд▓, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо):
     рдкреНрд░рдЧрддрд┐рдмреЗрд░.рд░реЗрд╕реЗрдЯрдкреНрд░реЛрдЧреНрд░реЗрд╕рдмрд╛рд░ ();
     urllib.urlretrieve (url, filename, reporthook = progressBar.ProgressBarReportHook);
     рдкрд╛рд╕

 рдбреАрдлрд╝ рдкреНрд░реЛрд╕реЗрдкреЛрдбрдХрд╛рд╕реНрдЯ рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ ():
     # рдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ dir рдмрдирд╛рдПрдВ
     рдпрджрд┐ os.path.exists рдирд╣реАрдВ рд╣реИ (рдбрд╛рдЙрдирд▓реЛрдб):
         os.mkdir (downloadDir);
        
     # рдЧреВрдЧрд▓ рд░реАрдбрд░ рдкрд░ рд▓реЙрдЧрдЗрди рдХрд░реЗрдВ
     gr = GoogleReader.GoogleReader ();
     gr.identify (рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб);
     рдЕрдЧрд░ gr.login ():
         рдкреНрд░рд┐рдВрдЯ "рд▓реЙрдЧрд┐рди рдареАрдХ рд╣реИ";
     рдмрд╛рдХреА:
         "рд▓реЙрдЧрд┐рди рдХреЛрдУ" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ;
         рд╡рд╛рдкрд╕реА

     xmlfeed = gr.get_feed (рдлрд╝реАрдб = "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / - / рд▓реЗрдмрд▓ /% s"% рдЯреИрдЧ, n = 17, xt = "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / - / рд░рд╛рдЬреНрдп / com.google / read");
     xmlfeed.get_entries () рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП:
         рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
             googleID = рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['google_id'];
             рдЕрдЧрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐.рд╣рд╛рд╕_рдХреА ('рд╕рдВрд▓рдЧреНрдирдХ'):
                 # рд╡реЗрд░рд┐рдП рдФрд░ рдкреНрд░рд┐рдВрдЯ рдЬрд╛рдирдХрд╛рд░реА рддреИрдпрд╛рд░ рдХрд░реЗрдВ
                 URLToDownload = рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['рд╕рдВрд▓рдЧреНрдирдХ'];
                 localFilePath = GetLocalFileNameFromURL (URLToDownload);
                 рдкреНрд░рд┐рдВрдЯ "рд╢реАрд░реНрд╖рдХ:% s"% рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['рд╢реАрд░реНрд╖рдХ'];
                 рдкреНрд░рд┐рдВрдЯ "URL рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:% s ..."% URLToDownload;
                 рдкреНрд░рд┐рдВрдЯ "рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓:% s"% localFilePath;

                 # рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
                 DownloadFile (url = URLToDownload, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо = localFilePath)
                
                 # рд▓реЙрдЧ рд╕рдВрджреЗрд╢
                 LogMessage ("% s% s% s% s \ n"% (time.strftime ('% x% X'), URLToDownload, googleID, рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['рдкреНрд░рдХрд╛рд╢рд┐рдд']]);
                
                 рдкреНрд░рд┐рдВрдЯ "рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред"
                 # рдкрдврд╝рд╛ рд╣реБрдЖ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ
                 gr.set_read (googleID);
                 рдкреНрд░рд┐рдВрдЯ "рдЪрд┐рд╣реНрдирд┐рдд";
         рд╕рд┐рд╡рд╛рдп:
             # рдкреНрд░рд┐рдВрдЯ рдФрд░ рд▓реЙрдЧ рддреНрд░реБрдЯрд┐
             рдкреНрд░рд┐рдВрдЯ "рддреНрд░реБрдЯрд┐:", sys.exc_info ();
             LogMessage ("% s \ nError:% s \ nEntry:% s \ n рд╕рдВрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА:% s \ n% s \ n"% ("=" * 80, time.strftime ('% x% X'), рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ sys.exc_info (), "=" * 80));
     рдкрд╛рд╕

 рдЕрдЧрд░ __name __ == '__ main__':
     ProcessPodcastDownloading ();




рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ:

рдФрд░ рдлрд┐рд░ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ:

рдкрд╛рдЗрд░рдлрд╛рдЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЦреБрдж рдЖрд╡реЗрджрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдПрдХ рджреЛ рд▓рд╛рдЗрдиреЗрдВ (рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ) рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЬрдЧрд╣ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдм рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рдкрд╛рдпрдерди рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдлрд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореЗрд░реА GoogleReader рдФрд░ рд╡реЗрдм рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ рдЬрд╣рд╛рдБ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд┐рдд рд╣реИред



рдЗрдВрдЯрд░рдлрд╝реЗрд╕

рдпрд╣ рдПрдХ рд╕рд╛рдВрддреНрд╡рдирд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ред

рдмрд╕ рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:





рдкреНрд░рдЧрддрд┐ рдмрд╛рд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдХ рдЬреИрд╕реЗ рд╣реИрдВред рд╕реНрд░реЛрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╣реИред



рдлреАрдб-рдереНрд░реВ рдХреЗ рд▓рд┐рдП рдкреИрдЪ

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, GoogleFeed рд╡рд░реНрдЧ рдкрд░рд┐рдгрд╛рдореА XML рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рдмрд╛рдж XML рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛:

  elif dom_entry_element.localName == 'рд▓рд┐рдВрдХ':
     рдЕрдЧрд░ dom_entry_element.getAttribute ('rel') == 'рд╡реИрдХрд▓реНрдкрд┐рдХ'
         рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['рд▓рд┐рдВрдХ'] = dom_entry_element.getAttribute ('href') 




рдРрд╕рд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛:

  рдЕрдЧрд░ dom_entry_element.getAttribute ('rel') == 'рд╕рдВрд▓рдЧреНрдирдХ'
     рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['рд╕рдВрд▓рдЧреНрдирдХ'] = dom_entry_element.getAttribute ('href') 




рдпрд╣ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:

  elif dom_entry_element.localName == 'рд▓рд┐рдВрдХ':
     рдЕрдЧрд░ dom_entry_element.getAttribute ('rel') == 'рд╡реИрдХрд▓реНрдкрд┐рдХ'
         рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['рд▓рд┐рдВрдХ'] = dom_entry_element.getAttribute ('href')
     рдЕрдЧрд░ dom_entry_element.getAttribute ('rel') == 'рд╕рдВрд▓рдЧреНрдирдХ'
         рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ['рд╕рдВрд▓рдЧреНрдирдХ'] = dom_entry_element.getAttribute ('href')
 elif dom_entry_element.localName == 'рд╢реНрд░реЗрдгреА': 




рдиреБрдХрд╕рд╛рди рдЬреЛ рдореБрдЭреЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ

рдлрд┐рдирд┐рд╢ рд▓рд╛рдЗрди

рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрд░реЛрдд ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреЗрдЬ рд╕реЗ рдиреЛрдЯ рдХреЙрдкреА рдХрд┐рдпрд╛ред



All Articles