Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Page 48 of 75 FirstFirst ... 38464748495058 ... LastLast
Results 706 to 720 of 1111
Like Tree2Likes

Thread: YouTube-to-MP3 conversion - PHP class and script

  1. #706
    New Coder
    Join Date
    Jun 2013
    Posts
    29
    Thanks
    3
    Thanked 1 Time in 1 Post
    Quote Originally Posted by chump2877 View Post
    At the very least, you'll want a few GB of RAM...Depending on your traffic, you may need more. A good, economical approach is to find a hosting company that will enable you to upgrade RAM as needed. So you can start on the low end and upgrade to more RAM later.
    Thx for your suggestion!

  2. #707
    New Coder
    Join Date
    Mar 2010
    Posts
    11
    Thanks
    2
    Thanked 1 Time in 1 Post
    Hi, thanks for the update. I can convert most videos, but cannot convert the following:

    http://www.youtube.com/watch?v=U64bongHqYU

  3. #708
    New to the CF scene
    Join Date
    Jun 2013
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Java script text box open for radio selection

    I want to open a text box on radio selection ,i.e 5 radio selection for 5 text box,
    after selecting second radio, previous text box should not close and new text box should open for second selections

    Please help me on this

    sample code:

    Code:
    <html>
        <head>
          <script type="text/javascript">
            function show() { document.getElementById('area').style.display = 'block'; }
            function hide() { document.getElementById('area').style.display = 'none'; }
            function show() { document.getElementById('area1').style.display = 'block'; }
            function hide() { document.getElementById('area1').style.display = 'none'; }
          </script>
        </head>
        <body>
          <form name="radios">
          <table>
          <tr>
           <td>
            <INPUT TYPE=RADIO NAME="X" VALUE="H" onclick="hide();"/>A
           </td>
           <td>
            <INPUT TYPE=RADIO NAME="X" VALUE="L" onclick="show();"/>B
            </td>
            <td>
            <TEXTAREA id="area" style="display: none;" NAME="data" ROWS=5 COLS=50></TEXTAREA>
            </td>
          </tr>
          <tr>
            <INPUT TYPE=RADIO NAME="X" VALUE="H" onclick="hide();"/>C
    		<INPUT TYPE=RADIO NAME="X" VALUE="L" onclick="show();"/>B
            <TEXTAREA id="area1" style="display: none;" NAME="data" ROWS=5 COLS=50></TEXTAREA>
          </tr>
          </table>
          </form>
        </body>
    </html>
    Last edited by chump2877; 06-17-2013 at 10:28 PM. Reason: Added [code] tags

  4. #709
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    Quote Originally Posted by rbisconti97 View Post
    Hi, thanks for the update. I can convert most videos, but cannot convert the following:

    http://www.youtube.com/watch?v=U64bongHqYU
    When I visit that video in my browser, I get the following message:

    "This video contains content from SME, Music Services, Inc. and Sony ATV Publishing, one or more of whom have blocked it in your country on copyright grounds.
    Sorry about that."
    Please see this post for information regarding videos that are blocked by the videos' uploaders on a per-country basis.
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!

  5. #710
    New Coder
    Join Date
    Mar 2010
    Posts
    11
    Thanks
    2
    Thanked 1 Time in 1 Post
    Quote Originally Posted by chump2877 View Post
    So sorry, I'll check that next time. Thank you though

  6. #711
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    Quote Originally Posted by suresh.dhanapal View Post
    I want to open a text box on radio selection ,i.e 5 radio selection for 5 text box,
    after selecting second radio, previous text box should not close and new text box should open for second selections

    Please help me on this

    sample code:

    Code:
    <html>
        <head>
          <script type="text/javascript">
            function show() { document.getElementById('area').style.display = 'block'; }
            function hide() { document.getElementById('area').style.display = 'none'; }
            function show() { document.getElementById('area1').style.display = 'block'; }
            function hide() { document.getElementById('area1').style.display = 'none'; }
          </script>
        </head>
        <body>
          <form name="radios">
          <table>
          <tr>
           <td>
            <INPUT TYPE=RADIO NAME="X" VALUE="H" onclick="hide();"/>A
           </td>
           <td>
            <INPUT TYPE=RADIO NAME="X" VALUE="L" onclick="show();"/>B
            </td>
            <td>
            <TEXTAREA id="area" style="display: none;" NAME="data" ROWS=5 COLS=50></TEXTAREA>
            </td>
          </tr>
          <tr>
            <INPUT TYPE=RADIO NAME="X" VALUE="H" onclick="hide();"/>C
    		<INPUT TYPE=RADIO NAME="X" VALUE="L" onclick="show();"/>B
            <TEXTAREA id="area1" style="display: none;" NAME="data" ROWS=5 COLS=50></TEXTAREA>
          </tr>
          </table>
          </form>
        </body>
    </html>
    Does this have anything to do with my YouTube-to-Mp3 software, and if so, what exactly are you trying to accomplish? What is the purpose of these textboxes/textareas?
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!

  7. #712
    New Coder
    Join Date
    Sep 2012
    Location
    Germany
    Posts
    38
    Thanks
    11
    Thanked 1 Time in 1 Post
    Hi chump,

    can you Update that you can convert Facebook videos?

    would be nice

  8. #713
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    Quote Originally Posted by Luckyplaya View Post
    Hi chump,

    can you Update that you can convert Facebook videos?

    would be nice
    I will consider adding this functionality in a future version of the software. Thanks for your suggestion!
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!

  9. #714
    New to the CF scene
    Join Date
    Jun 2013
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Hello, is there any why to set the cache the MP3 files?

  10. #715
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    Quote Originally Posted by farhaty View Post
    Hello, is there any why to set the cache the MP3 files?
    I have not included that feature in either the free or paid-for versions because it seems that most people do not want to store potentially copyrighted material on their web servers any longer than they have to. In the commercial version of the software, I have even included a separate script -- that is intended to be run regularly as a cron job -- that deletes mp3 files that are older than X seconds.

    (Note: Log files and downloaded video files are deleted automatically after EVERY conversion.)

    That said, in the past, I have programmed mp3 cache functionality as a custom enhancement to the software, on a per-client basis. If you are interested, I am available to program such a thing for you, but clearly I would have to charge you extra for the service.
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!

  11. #716
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    Looks like Vevo videos can no longer be download again

    I was able to convert these same videos not more than a day ago!!

    [Note: You will notice that all the major YouTube-to-Mp3 sites can no longer convert the newest/latest Vevo videos. At least, this is what I have noticed! For example: http://www.youtube-mp3.org/#v=IDAqAgbM07g]

    I don't know what YouTube is up to, but I vow to persevere and continue to look for a way around this issue!

    My software still converts all other videos, but it appears Vevo (and its ilk) are getting special treatment from YouTube. Let's hope this is not the end for converting videos from these channels. Stay tuned, and please be patient, as I search for a solution.

    Thanks!
    Last edited by chump2877; 06-21-2013 at 08:07 AM.
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!

  12. #717
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    Here is the preliminary fix for the latest Vevo video problem. The following code is meant to be a drop-in replacement for the YouTubeToMp3Converter.class.php file for the free version only. If this solution continues to work after further testing, then I will release a similar fix for the paid-for version of my software at that time.

    Please let me know if this code works for you. I appreciate your help in testing this code.

    [Note: The only code to change is in the existing SetFlvUrls() method and the new DecryptYouTubeCypher() method. (I'm assuming that you are using the most recent release of the free version!)]

    YouTubeToMp3Converter.class.php
    PHP Code:
    <?php

        
    // Conversion Class
        
    include 'config.class.php';
        class 
    YouTubeToMp3Converter extends Config
        
    {
            
    // Private Fields
            
    private $_songFileName '';
            private 
    $_flvUrls = array();
            private 
    $_tempVidFileName;
            private 
    $_uniqueID '';
            private 
    $_vidSrcTypes = array('source_code''url');
            private 
    $_percentVidDownloaded 0;

            
    #region Public Methods
            
    function __construct()
            {
                
    $this->_uniqueID time() . "_" uniqid(''true);
            }

            function 
    DownloadVideo($youTubeUrl)
            {
                
    $file_contents file_get_contents($youTubeUrl);
                if (
    $file_contents !== false)
                {
                    
    $this->SetSongFileName($file_contents);
                    
    $this->SetFlvUrls($file_contents$youTubeUrl);
                    if (
    $this->GetSongFileName() != '' && count($this->GetFlvUrls()) > 0)
                    {
                        return 
    $this->SaveVideo($this->GetFlvUrls());
                    }
                }
                return 
    false;
            }

            function 
    GenerateMP3($audioQuality)
            {
                
    $qualities $this->GetAudioQualities();
                
    $quality = (in_array($audioQuality$qualities)) ? $audioQuality $qualities[1];
                
    $exec_string parent::_FFMPEG.' -i '.$this->GetTempVidFileName().' -vol '.parent::_VOLUME.' -y -acodec libmp3lame -ab '.$quality.'k '.$this->GetSongFileName() . ' 2> logs/' $this->_uniqueID '.txt';
                
    $ffmpegExecUrl preg_replace('/(([^\/]+?)(\.php))$/'"exec_ffmpeg.php""http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
                
    $postData "cmd=".urlencode($exec_string);
                
    $ch curl_init();
                
    curl_setopt($chCURLOPT_URL$ffmpegExecUrl);
                
    curl_setopt($chCURLOPT_POSTTRUE);
                
    curl_setopt($chCURLOPT_POSTFIELDS$postData);
                
    curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
                
    curl_setopt($chCURLOPT_TIMEOUT1);
                
    curl_exec($ch);
                
    curl_close($ch);
            }

            function 
    DownloadMP3($file)
            {
                
    $filepath parent::_SONGFILEDIR urldecode($file);
                
    $filename urldecode($file);
                if (
    parent::_ENABLE_CONCURRENCY_CONTROL)
                {
                    
    $filename preg_replace('/((_uuid-)(\w{13})(\.mp3))$/'"$4"$filename);
                }
                if (
    is_file($filepath))
                {
                    
    header('Content-Type: audio/mpeg3');
                    
    header('Content-Length: ' filesize($filepath));
                    
    header('Content-Disposition: attachment; filename="'.$filename.'"');
                    
    ob_clean();
                    
    flush();
                    
    readfile($filepath);
                    die();
                }
                else
                {
                    
    $redirect explode("?"$_SERVER['REQUEST_URI']);
                    
    header('Location: ' $redirect[0]);
                }
            }

            function 
    ExtractSongTrackName($vidSrc$srcType)
            {
                
    $name '';
                
    $vidSrcTypes $this->GetVidSrcTypes();
                if (
    in_array($srcType$vidSrcTypes))
                {
                    
    $vidSrc = ($srcType == $vidSrcTypes[1]) ? file_get_contents($vidSrc) : $vidSrc;
                    if (
    $vidSrc !== false)
                    {
                        if (
    preg_match('/(<title>)(.+?)( - YouTube)(<\/title>)/'$vidSrc$matches) == 1)
                        {
                            
    $name trim($matches[2]);
                            
    $name iconv("UTF-8""ISO-8859-1//TRANSLIT"$name);
                            
    $name = (!empty($name)) ? html_entity_decode($name) : 'unknown_'.time();
                        }
                    }
                }
                return 
    $name;
            }

            function 
    ExtractVideoId($youTubeUrl)
            {
                
    $v '';
                
    $urlQueryStr parse_url(trim($youTubeUrl), PHP_URL_QUERY);
                if (
    $urlQueryStr !== false && !empty($urlQueryStr))
                {
                    
    parse_str($urlQueryStr);
                }
                return 
    $v;
            }

            function 
    UpdateVideoDownloadProgress($downloadSize$downloaded$uploadSize$uploaded)
            {
                
    $percent round($downloaded/$downloadSize2) * 100;
                if (
    $percent $this->_percentVidDownloaded)
                {
                    
    $this->_percentVidDownloaded++;
                    echo 
    '<script type="text/javascript">updateVideoDownloadProgress("'$percent .'");</script>';
                    
    ob_end_flush();
                    
    ob_flush();
                    
    flush();
                }
            }
            
    #endregion

            #region Private "Helper" Methods
            
    private function SaveVideo(array $urls)
            {
                
    $success false;
                
    $vidCount = -1;
                while (!
    $success && ++$vidCount count($urls))
                {
                    
    $this->_percentVidDownloaded 0;
                    
    $this->SetTempVidFileName();
                    
    $file fopen($this->GetTempVidFileName(), 'w');
                    
    $ch curl_init();
                    
    curl_setopt($chCURLOPT_FILE$file);
                    
    curl_setopt($chCURLOPT_HEADER0);
                    
    curl_setopt($chCURLOPT_URL$urls[$vidCount]);
                    
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
                    
    curl_setopt($chCURLOPT_NOPROGRESSfalse);
                    
    curl_setopt($chCURLOPT_PROGRESSFUNCTION, array($this'UpdateVideoDownloadProgress'));
                    
    curl_setopt($chCURLOPT_BUFFERSIZE4096000);
                    
    curl_exec($ch);
                    
    curl_close($ch);
                    
    fclose($file);
                    if (
    is_file($this->GetTempVidFileName()))
                    {
                        if (!
    filesize($this->GetTempVidFileName()) || filesize($this->GetTempVidFileName()) < 10000)
                        {
                            
    unlink($this->GetTempVidFileName());
                        }
                        else
                        {
                            
    $success true;
                        }
                    }
                }
                return 
    $success;
            }

            private function 
    DecryptYouTubeCypher($signature)
            {
                
    $sigParts explode('.'$signature);
                if (
    count($sigParts) == 2)
                {
                    
    $sigParts[1] = substr(substr($sigParts[1], 08) . substr($sigParts[0], 01) . substr($sigParts[1], 99) . substr($sigParts[1], -41) . substr($sigParts[1], 1920) . substr($sigParts[1], 181), 040);
                    
    $sigParts[0] = substr($sigParts[0], -40);
                    
    $signature strrev($sigParts[0] . '.' $sigParts[1]);
                }
                return 
    $signature;
            }
            
    #endregion

            #region Properties
            
    public function GetSongFileName()
            {
                return 
    $this->_songFileName;
            }
            private function 
    SetSongFileName($file_contents)
            {
                
    $vidSrcTypes $this->GetVidSrcTypes();
                
    $trackName $this->ExtractSongTrackName($file_contents$vidSrcTypes[0]);
                if (!empty(
    $trackName))
                {
                    
    $fname parent::_SONGFILEDIR preg_replace('/_{2,}/','_',preg_replace('/ /','_',preg_replace('/[^A-Za-z0-9 _-]/','',$trackName)));
                    
    $fname .= (parent::_ENABLE_CONCURRENCY_CONTROL) ? uniqid('_uuid-') : '';
                    
    $this->_songFileName $fname '.mp3';
                }
            }

            public function 
    GetFlvUrls()
            {
                return 
    $this->_flvUrls;
            }
            private function 
    SetFlvUrls($file_contents$youTubeUrl)
            {
                
    $vidUrls = array();
                
    $vidSrcTypes $this->GetVidSrcTypes();
                
    $cypherUsed false;
                
    $vidInfoTypes = array('&el=embedded''&el=detailpage''&el=vevo''');
                
    $vidId $this->ExtractVideoId($youTubeUrl);
                foreach (
    $vidInfoTypes as $infotype)
                {
                    
    $content file_get_contents('https://www.youtube.com/get_video_info?&video_id='.$vidId.$infotype.'&ps=default&eurl=&gl=US&hl=en');
                    
    parse_str($content$output);
                    
    //@print_r($output);
                    //echo "\n\n";
                    
    if (isset($output['status']) && $output['status'] == 'ok')
                    {
                        
    //die(print_r($output));
                        
    $cypherUsed = isset($output['use_cipher_signature']) && $output['use_cipher_signature'] == 'True';
                        break;
                    }
                }
                if (
    preg_match('/(ytplayer\.config = )([^\r\n]+?)(;<\/script>)/'$file_contents$matches) == 1)
                {
                    
    $jsonObj json_decode(trim($matches[2], ';'));
                    if (isset(
    $jsonObj->args->url_encoded_fmt_stream_map))
                    {
                        
    $urls urldecode(urldecode($jsonObj->args->url_encoded_fmt_stream_map));
                        
    //$urls = urldecode(urldecode($jsonObj->args->adaptive_fmts));
                        //die($urls);
                        
    if (preg_match('/^((.+?)(=))/'$urls$matches) == 1)
                        {
                            
    $urlsArr preg_split('/,'.preg_quote($matches[0], '/').'/'$urls, -1PREG_SPLIT_NO_EMPTY);
                            foreach (
    $urlsArr as $url)
                            {
                                if (
    $matches[0] != 'url=')
                                {
                                    
    $url = ($url != $urlsArr[0]) ? $matches[0].$url $url;
                                    
    $urlBase preg_replace('/(.+?)(url=)(.+?)(\?)(.+)/'"$3$4"$url);
                                    
    $urlParams preg_replace('/(.+?)(url=)(.+?)(\?)(.+)/'"$1$5"$url);
                                    
    $url $urlBase "&" $urlParams;
                                }
                                else
                                {
                                    
    $url preg_replace('/^(url=)/'""$url);
                                }
                                
    $url preg_replace('/(.*)(itag=\d+&)(.*?)/''$1$3'$url1);
                                if (
    preg_match('/quality=small/'$url) != 1)
                                {
                                    
    $url preg_replace('/&sig=|&s=/'"&signature="$url);
                                    
    $url trim($url',');
                                    
    $url .= '&title=' urlencode($this->ExtractSongTrackName($file_contents$vidSrcTypes[0]));
                                    
    $url preg_replace_callback('/(&type=)(.+?)(&)/', function($match){return $match[1].urlencode($match[2]).$match[3];}, $url);
                                    if (
    $cypherUsed)
                                    {
                                        
    $urlParts parse_url($url);
                                        
    parse_str($urlParts['query'], $vars);
                                        
    //echo $vars['signature'] . "\n\n";
                                        
    $vars['signature'] = $this->DecryptYouTubeCypher($vars['signature']);
                                        
    //die($vars['signature'] . "\n\n");
                                        
    $queryStr http_build_query($vars'''&');
                                        
    $url $urlParts['scheme'] . '://' $urlParts['host'] . $urlParts['path'] . '?' $queryStr;
                                    }
                                    
    $vidUrls[] = $url;
                                }
                            }
                            
    $vidUrls array_reverse($vidUrls);
                            
    //die(print_r($vidUrls));
                        
    }
                    }
                }
                
    $this->_flvUrls $vidUrls;
            }

            public function 
    GetAudioQualities()
            {
                return 
    $this->_audioQualities;
            }

            private function 
    GetTempVidFileName()
            {
                return 
    $this->_tempVidFileName;
            }
            private function 
    SetTempVidFileName()
            {
                
    $this->_tempVidFileName parent::_TEMPVIDDIR $this->_uniqueID .'.flv';
            }

            public function 
    GetVidSrcTypes()
            {
                return 
    $this->_vidSrcTypes;
            }

            public function 
    GetUniqueID()
            {
                return 
    $this->_uniqueID;
            }
            
    #endregion
        
    }

    ?>
    Last edited by chump2877; 06-22-2013 at 12:25 AM.
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!

  13. #718
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    The new (updated and hopefully stable) distribution of files is located at the bottom of this post.

    PLEASE SEE THIS POST FOR IMPORTANT INFO REGARDING THE USE AND INSTALLATION OF THIS SCRIPT.

    DO NOT USE THE ZIP DISTRIBUTION LOCATED AT THE ABOVE LINKED PAGE. USE ONLY THE ZIP FILE ATTACHED TO THE BOTTOM OF THIS POST.
    New in this release:

    1) This fix addresses another problem with the conversion of Vevo videos.

    Only YouTubeToMp3Converter.class.php was modified, and (since the last update) only code in the existing SetFlvUrls() method and the new DecryptYouTubeCypher() method was updated.

    I will soon be updating the paid-for version of the app as well, and I will email an updated (free) copy to all those who have already purchased the script. (Updates will be sent to your Tradebit email addresses only.)

    As always, please let me know if you have any questions/concerns regarding the above and/or the code.
    Attached Files Attached Files
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!

  14. #719
    New Coder
    Join Date
    Jun 2013
    Posts
    29
    Thanks
    3
    Thanked 1 Time in 1 Post
    new version works!

    very nice, thanks for updating!

  15. #720
    Senior Coder chump2877's Avatar
    Join Date
    Dec 2004
    Location
    the U.S. of freakin' A.
    Posts
    2,744
    Thanks
    18
    Thanked 155 Times in 146 Posts
    Hello everyone,

    I have just finished updating the paid-for version of my software. New in this version:

    1. Fix to address another problem with the conversion of Vevo videos.


    The following files/directories were changed/added:
    1. VideoConverter.class.php updated


    Only VideoConverter.class.php was updated, and (since the last update) only code in the SetVidSourceUrls(), DecryptYouTubeCypher(), and PrepareYouTubeDownloadLink() methods was changed/added.

    All previous customers who have purchased the paid-for version of my app are receiving this new, updated version via the e-mail addresses that you provided at Tradebit.com.

    Please report any issues with either the paid-for version or the free version in this forum thread. Your feedback is encouraged. Donations are welcome!

    Thanks!
    Regards, R.J.

    ---------------------------------------------------------

    Help spread the word! Like my YouTube-to-Mp3 Conversion Script on Facebook !! :)
    [Related videos and tutorials are also available at my YouTube channel and on Dailymotion]
    Get free updates about new software version releases, features, and bug fixes!


 
Page 48 of 75 FirstFirst ... 38464748495058 ... LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •