*another update*

mostly just code clean-up &maybe even a lil bug fixing just cause i was needing some distractions from my major project.  anyways this script rocks &if anyone just listens to their podcasts on their 'puter; really this script is killer so please give it a shot.  any feedback would be so cool.  well here it is; hope it helps.

goodness, love, &caring,
Katy... blessed be.  healthy, hopeful, &safe may we all always be ^_^
I have 'it', thousands do, and you've probably never heard of 'it'. 'it' twists our bodies, 'it' can ruin our lives; and occasionally 'it' will take them... what 'it' cannot twist, ruin, or take is our DREAMS! 'it' is Generalized Dystonia!

help test firefox3 &rediscover the web!


Katy G. B. wrote:
*correction*

malformed perl regular _expression_.

goodness, love, &caring,
Katy... blessed be.  healthy, hopeful, &safe may we all always be ^_^
I have 'it', thousands do, and you've probably never heard of 'it'. 'it' twists our bodies, 'it' can ruin our lives; and occasionally 'it' will take them... what 'it' cannot twist, ruin, or take is our DREAMS! 'it' is Generalized Dystonia!

help test firefox3 &rediscover the web!


Katy G. B. wrote:
*here's another update*,

this just has a work around for a lil issue with VLC and file's with colons(:) in their filename's... just some times but weird huh.  anyways here's a work around.  &yeah i'll eventually prolly remember to submit a bug fix, but if anyone wants to beat me to it(or has), woot1(&thnx).  anyways if any one else is finding this useful could you let me know, i'd just like to know if i 'should' keep updating this thread.  *crosses her fingers*

goodness, love, &caring,
Katy... blessed be.  healthy, hopeful, &safe may we all always be ^_^
I have 'it', thousands do, and you've probably never heard of 'it'. 'it' twists our bodies, 'it' can ruin our lives; and occasionally 'it' will take them... what 'it' cannot twist, ruin, or take is our DREAMS! 'it' is Generalized Dystonia!

help test firefox3 &rediscover the web!


Katy G. B. wrote:
*whoops*

the version i posted before had a lil bug in it; a < where i meant >, here is the corrected version... now i hope this helps others out.

goodness, love, &caring,
Katy... blessed be.  healthy, hopeful, &safe may we all always be ^_^
I have 'it', thousands do, and you've probably never heard of 'it'. 'it' twists our bodies, 'it' can ruin our lives; and occasionally 'it' will take them... what 'it' cannot twist, ruin, or take is our DREAMS! 'it' is Generalized Dystonia!

help test firefox3 &rediscover the web!



_______________________________________________ gpodder-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/gpodder-devel

_______________________________________________ gpodder-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/gpodder-devel

_______________________________________________ gpodder-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/gpodder-devel


#!/usr/bin/php
<?php

        /*TODO: i want to add more comments so gPodderDoesWeirdStuff
          is more understandable.  but even as it is, i'm pretty proud of it.
          its simply, quick, &makes watching &listening to podcasts like tons 
easier.
          
          *hugs* &super big thnx Thomas,
          for writing &working on gPodder and i hope that i get to
          contribute a lot mor than just this script in the future.
          what i hoping to contribute next is a playlist creator
          that will make watching &listening to podcasts from right
          inside gPodder like way easier.
        */

        /*
                (c) 2007-Present Katy G. B. <[EMAIL PROTECTED]>
                Writen by a disabled uberChick.  i have Generalized Dystonia.
                if you like any of my software, or script, please visit one of
                my myspace pages at:
                        http://www.myspace.com/uberchicgeekchick (my geekChick 
stuff)
                or
                        http://www.myspace.com/imdesigningdreams (my MUCH more 
personal stuff)
                        if you go there thinking 'MUCH more personal' means 
naughty you'll sorely reget it!
                
                currently all of my software is released under the RPL, but i'm 
working
                on my own license focused on software writen by myself and other
                open source internet artists(web design &developers)
                if you'd like to help or contribute on the new license
                please, please, pretty please contact me.
                
                --------------------------- current RPL disclaimer 
------------------------------
                |       a opy of the RPL may be found with this project or 
online at            |
                |       http://www.technicalpursuit.com/licenses/RPL_1.3.html   
                |
                
---------------------------------------------------------------------------------
                
                Unless explicitly acquired and licensed from Licensor under 
another license,
                the contents of this file are subject to the Reciprocal Public 
License
                ("RPL")
                Version 1.3, or subsequent versions as allowed by the RPL, and 
You
                may not copy or use this file in either source code or 
executable
                form, except in compliance with the terms and conditions of the 
RPL.
                
                All software distributed under the RPL is provided strictly on 
an "AS
                IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR 
IMPLIED, AND
                LICENSOR HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
                WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
FOR
                A PARTICULAR PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See 
the
                RPL for specific language governing rights and limitations under
                the RPL.
        */



        function gPodderDoesWeirdStuff_help() {
                print("Usage: {$PHP_SELF} [options]..."
                        ."\n\toptions:"
                        ."\n"
                        ."\n\t--help                    displays this screen."
                        ."\n"
                        ."\n"
                        ."\n\t--keep-original           keeps gPodders GUID 
named files while making hard-links to all"
                        ."\n\t                          podcasts with easier to 
understand directories &filenames."
                        ."\n"
                        ."\n"
                        ."\n\t--update                  runs `gpodder --run` 
automatically before moving podcasts."
                        ."\n"
                        ."\n"
                        ."\n\t--quiet                   surpresses all 
messages.  this effects different messages ."
                        ."\n"
                        ."\n\t--leave-trail             thise makes 
gPodderDoesWeirdStuff leave [GUID].trail files."
                        ."\n\t                          these are symlinks to 
gPodder's GUID folder."
                        ."\n"
                        ."\n"
                        ."\n\t--verbose                 outputs very verbose 
debugging messages about whats happening"
                        ."\n\t                          for when gPodder isn't 
displaying my channel listings."
                        ."\n\t                          if that's all you want 
gPodderDoesWeirdStuff to do than use"
                        ."\n\t                          using this switch will 
fix everything without moving any"
                        ."\n\t                          downloaded podcasts."
                        ."\n"
                        ."\n"
                        ."\n"
                        ."\n\t          *wink* &remember gPodderDoesWeirdStuff 
is written in PHP;"
                        ."\n\t          so it should be super easy to 
customize."
                );
                
                exit(0);
                
        }//end 'gPodderDoesWeirdStuff_help' function.



        function gPodderDoesWeirdStuff_grabSettings() {
                /*      here's where i setup and check all the directories i 
need
                        to use, find, &rename/move all of my podcasts and their
                        names and etc.
                */
                if(((
                        (is_dir(
                                
(((($GLOBALS['gPodderConfigDir']=(getenv("HOME"))."/.config/gpodder"))))
                        ))
                        &&
                        (
                                ((($GLOBALS['homeDir']=ltrim(exec("grep 
--max-count=1 'download_dir' {$GLOBALS['gPodderConfigDir']}/gpodder.conf|cut 
-d'=' -f2")))))
                                &&
                                (
                                        ((is_dir($GLOBALS['homeDir'])) && 
(is_dir(dirname($GLOBALS['homeDir']))))
                                        &&
                                        ((chdir(dirname($GLOBALS['homeDir']))) 
&& (basename($GLOBALS['homeDir'])))
                                )
                        )
                )))
                        return TRUE;
                
                print("Unable to load gPodder configuration."
                        ."\n\ti tried to read gPodders configuration from:"
                        ."\n\t\t{$GLOBALS['gPodderConfigDir']}/gpodder.conf"
                );
                
                exit(-1);
                
        }//end of 'gPodderDoesWeirdStuff_grabSettings' function.



        function gPodderDoesWeirdStuff_setup() {
                /*      check to make sure that gPodder has already been 
converted to download
                        podcasts to a hidden directory.  so than i can 
move/hard-link podcasts
                        in the non-hidden directory with the original name.
                */
                exec("sed 
--expression='1,$s/^\(download_dir.*\)\/\([^\/]*\)$/\1\/\.\2/' 
{$GLOBALS['gPodderConfigDir']}/gpodder.conf 
>{$GLOBALS['gPodderConfigDir']}/new_gPodder.conf");
                rename("{$GLOBALS['gPodderConfigDir']}/new_gPodder.conf", 
"{$GLOBALS['gPodderConfigDir']}/gpodder.conf");
                rename(GPODDER_DL_DIR, ".".GPODDER_DL_DIR);
                
                if(!(in_array("--quiet", $GLOBALS['argv'])))
                        print("gPodder's actual/temporary download directory is 
now hidden."
                                ."\ngPodder's original download directory will"
                                ."\ncontain podcasts in an easily browsable 
structure."
                                ."\ngpodder.conf has also been updated."
                                ."\n"
                                ."\nso gPodder will now download podcasts to 
the hidden directory:"
                                
."\n\t".(dirname($GLOBALS['homeDir']))."/.".GPODDER_DL_DIR
                                ."and podcasts will be moved(hard-linked) to 
when gPodderDoesWeirdStuff's ran:"
                                
."\n\t".(dirname($GLOBALS['homeDir']))."/".GPODDER_DL_DIR
                                ."\nwhere you can easily browse and organize 
podcasts &playlists."
                        );
                
        }//end 'gPodderDoesWeirdStuff_setup' function.

        function gPodderDoesWeirdStuff_downloadPodcasts() {
                if(!((is_executable(($gpodderProgie=exec("which gpodder"))))))
                        return (((in_array("--quiet", $GLOBALS['argv']))
                                ?("can't find gPodder in path.")
                                :(print("i can't try to download any new 
podcasts."
                                        ."\ni couldn't find gPodder in your 
path."
                                ))
                        ));
                
                if(
                        (!((in_array("--quiet", $GLOBALS['argv']))))
                        ||
                        (((in_array("--verbose", $GLOBALS['argv']))))
                )
                        print("Please wait while gPodder downloads any new 
podcasts.\n\n");
                
                if(!( (preg_match("/^D/", (ltrim(
                                ( ((in_array("--verbose", $GLOBALS['argv'])))
                                        ?(system("{$gpodderProgie} --run"))
                                        :(exec("{$gpodderProgie} --run"))
                                )
                        ))))
                ))
                        return FALSE;
                
                print("\nPlease wait while gPodder finishes downloading");
                for($i=0; $i<10; $i++) {
                        if(!($i%3))
                                print(".");
                        
                        usleep(500000); // waits for one half second.
                }
                
        }//end 'gPodderDoesWeirdStuff_downloadPodcasts' function.


        //here's where my progie gPodderDoesWeirdStuff actually starts.
        if((in_array("--help", $GLOBALS['argv'])))
                gPodderDoesWeirdStuff_help();//this exits gPodderDoesWeirdStuff

        if(!((gPodderDoesWeirdStuff_grabSettings())))
                exit(-1);

        if(!(preg_match("/^\./", (basename($homeDir)))))
                gPodderDoesWeirdStuff_setup();

        define("GPODDER_DL_DIR", preg_replace("/^\.?/", "", 
(basename($homeDir))));

        define("TODAYS_DATETIME", date("Y-m-d @ h:ip"));
        
        if((in_array("--update", $GLOBALS['argv'])))
                gPodderDoesWeirdStuff_downloadPodcasts();

        $totalMovedPodcasts=0;

        $gPoddersPodcastDir=opendir(".".GPODDER_DL_DIR);
        while($podcastsGUID=readdir($gPoddersPodcastDir)) {
                /* if a podcast's 'cover' file is not a valid image gPodder 
won't
                   show the channels.  so here i check just to make sure, that 
if
                   this podcast has a 'cover' file, that its a valid image.  and
                   not just another kinda file, like an xhtml or xml file.
                */
                if(!((is_dir(".".GPODDER_DL_DIR."/".$podcastsGUID))))
                        continue;
                
                
                if((in_array("--leave-trail", $GLOBALS['argv'])))
                        symlink(".".GPODDER_DL_DIR."/".$podcastsGUID,
                                
GPODDER_DL_DIR."/{$podcastsName}/{$podcastsGUID}.trail"
                        );
                
                /* here i try to load this podcast's 'index.xml' file.
                   if i can't find it, i'll try and find it in gPodder's cache,
                   if i find there i'll restore it; if not i have to skip-it.
                */
                $podcastsXML=".".GPODDER_DL_DIR."/".$podcastsGUID."/index.xml";
                if(!((is_readable($podcastsXML)))) {
                        
if(!((is_readable("{$gPodderConfigDir}/cache/{$podcastsGUID}.xml"))))
                                continue;
                        
                        copy("{$gPodderConfigDir}/cache/{$podcastsGUID}.xml", 
$podcastsXML);
                }
                
                exec("touch {$podcastsXML}");
                
                $podcastsFiles=array();
                exec("ls -t --width=1 
.".GPODDER_DL_DIR."/".$podcastsGUID."/*.*|cut -d'/' -f3", $podcastsFiles);
                if((($podcastsFiles['total']=count($podcastsFiles))==1))
                        continue;
                
                $podcastsInfo=array();
                exec("grep '<title>' {$podcastsXML}|cut -d'>' -f2|cut -d'<' 
-f1", $podcastsInfo);
                $podcastsInfo['total']=count($podcastsInfo);
                
                /* replaces forward slashes with hyphens &removes leading 
dots('.').
                   both for obvious(linux) reasons.
                   colons(:) because withsome files vlc doesn't like them.
                   i dunno why, but here's a work around.  and yes i'll submit 
a bug report.
                */
                for($i=0; $i<$podcastsInfo['total']; $i++)
                        $podcastsInfo[$i]=preg_replace("/[\/:]/", "-", 
                                preg_replace("/^\.*/", "", 
                                        trim($podcastsInfo[$i])
                                )
                        );
                
                $podcastsName=$podcastsInfo[0];
                
                $podcastsInfo['total']=$podcastsFiles['total'];
                
                if(!((is_dir(GPODDER_DL_DIR."/".$podcastsName))))
                        if(!((mkdir(GPODDER_DL_DIR."/".$podcastsName, 0744, 
TRUE)))) {
                                printf("\n\ti have to skip %s because i 
couldn't create it's directory.  please edit '%s' to fix this issue.", 
$podcastsName, $podcastsXML);//*wink*, it just kinda felt like a printf moment 
:P
                                continue;
                        }
                
                if(!(in_array("--quiet", $GLOBALS['argv']))) {
                        if($totalMovedPodcasts)
                                print("\n");
                        print("\nMoving: {$podcastsName} ({$podcastsXML})");
                }
                
                $movedPodcasts=0;
                for($i=1,$z=1; $i<$podcastsFiles['total']; $i++) {              
        
                        if(!($podcastsInfo[$i]))
                                $podcastsInfo[$i]=(TODAYS_DATETIME." - show 
#".$z++);
                        
                        $podcastsInfo[$i]=preg_replace("/[\.]*$/", "", 
$podcastsInfo[$i]);
                        
                        $ext="";
                        while((
                                ($i<$podcastsFiles['total'])
                                &&
                                
(($ext=preg_replace("/^[^\.]*(\.[a-zA-Z0-9]{3,4})$/", "$1", $podcastsFiles[$i]))
                                ==
                                ".xml")
                        ))
                                $i++;
                        
                        if( ($i >= $podcastsFiles['total']) )
                                continue;
                        
                        if((in_array("--verbose", $GLOBALS['argv'])))
                                
print("\n\tMoving:\n\t.".GPODDER_DL_DIR."/".$podcastsGUID."/".$podcastsFiles[$i]
                                        ."\n\t\tto"
                                        
."\n\t".GPODDER_DL_DIR."/".$podcastsName."/".$podcastsInfo[$i].$ext
                                );
                        
                        if(((in_array("--leave-trail", $GLOBALS['argv']))))
                                
if(!((file_exists((GPODDER_DL_DIR."/{$podcastsName}/{$podcastsName}.trail")))))
                                        symlink(
                                                
(".".GPODDER_DL_DIR."/".$podcastsGUID),
                                                
(GPODDER_DL_DIR."/{$podcastsName}/{$podcastsName}.trail")
                                        );
                        
                        $a=2;
                        $subfix="";
                        $podcastsTestingInfo=$podcastsInfo[$i];
                        
while((file_exists(GPODDER_DL_DIR."/{$podcastsName}/{$podcastsTestingInfo}{$ext}")))
 {
                                $podcastsTestingInfo=$podcastsInfo[$i]
                                .($subfix=" - "
                                        .( ($a < 100)
                                                ?( ($a < 10) ?"00" :"0" )
                                                :""
                                        )
                                        .$a++
                                );
                        }
                        
                        if(($subfix)) {
                                rename(
                                        
GPODDER_DL_DIR."/{$podcastsName}/{$podcastsInfo[$i]}{$ext}",
                                        
GPODDER_DL_DIR."/{$podcastsName}/{$podcastsInfo[$i]}{$subfix}{$ext}"
                                );
                                $podcastsInfo[$i]=$podcastsTestingInfo;
                        }
                        
                        unset($a);
                        unset($subfix);
                        
                        if((
                                (((
                                        (link(
                                                
(".".GPODDER_DL_DIR."/".$podcastsGUID."/".$podcastsFiles[$i]),
                                                
(GPODDER_DL_DIR."/".$podcastsName."/".$podcastsInfo[$i].$ext)
                                        ))
                                ))) //why so many?  so i create the hardlink 
before i check arguments.
                                &&
                                (!((in_array("--keep-original", 
$GLOBALS['argv']))))
                        )) {
                                $movedPodcasts++;
                                if(in_array("--verbose", $GLOBALS['argv']))
                                        print("\n\t\t----Moved 
successfully----");
                                
unlink(".".GPODDER_DL_DIR."/".$podcastsGUID."/".$podcastsFiles[$i]);
                        }
                }
                
                if(in_array("--verbose", $GLOBALS['argv'])) {
                        print("\nMoved {$movedPodcasts} of {$podcastsName}'s 
podcasts.");
                        $totalMovedPodcasts+=$movedPodcasts;
                }
                
        }

        closedir($gPoddersPodcastDir);

        if(in_array("--verbose", $GLOBALS['argv']))
                print("\n\n\nMoved {$totalMovedPodcasts} total podcasts.");

?>
_______________________________________________
gpodder-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/gpodder-devel

Reply via email to