Video Pornster


Thank you for purchasing Video Pornster!

Import new content from various video sites into WordPress for unlimited amounts of fresh search engine food to update your niche blog all day, every day.

How does it work?

Each Video Pornster feed is a query for a channel, playlist, keyphrase, etc. that is sent to the video site’s API. The API returns the results of the query, and Video Pornster creates a post for each video returned, including comments, tags, categories, statistics and it even imports the featured image. Your theme handles the rest.

These video feeds can be scheduled to run in the background to continually look for new video content, letting your site build itself automatically.

Yes, Video Pornster includes advanced processing, so you can spin content, translate languages, remove text or links, have full control of the content layout, and more. You can save as any user, any post type, any status, any format, and any taxonomy.

 

Video Pornster is a WordPress plugin so this guide assumes you have a basic understanding of WordPress.
  1. Download the Video Pornster zip file from Envato to your computer.
  2. From the WordPress admin menu, select Plugins -> Add New.
  3. Click on the 'Upload Plugin' button at the top.
  4. Select the Video Pornster zip file you downloaded and click 'Install Now'.
  5. Enter the server's FTP details to upload and install the zip file.
  6. After sucessfully uploading, click on 'Activate Plugin'.
  7. The Video Pornster menu will now appear in the WordPress admin menu.
  8. Plugin updates will automatically show on your WordPress Updates page.

For those familiar with WordPress and plugins. Let's quickly import the highest rated 10 amateur videos from YouPorn.

  1. Install and activate the Video Pornster plugin on your WordPress site.

  2. From the admin menu, Go to Video Pornster -> Main Settings and validate the plugin with your purchase information.

  3. Click Make Video Feed to build your first YouPorn query. YouPorn is the default video site, but you can switch to others.

    1. Change the number of videos to import to 10.
    2. Click on the 'Amateur' category.
    3. Change Sort by to 'mostviewed' to get the most viewed Amateur videos.
    4. We will leave the other tabs to their defaults.

  4. For this example we are just going to manually query this feed to import some videos.
    Scroll down and click the Import YouPorn Videos Now button.

    It will take a few seconds for YouPorn to respond and the results to be processed and each post draft created.

  5. You should see some admin messages similar to:

    Note that API queries do not 'remember' your previous queries.
    If you click the Import YouPorn Videos Now button again right now, YouPorn should return the exact same 10 results.
    However Video Pornster will automatically skip videos it has already imported to avoid duplicates.
    If you want to import the next batch of 10 instead, you can change the QueryBehavior to continuous.

  6. Results are imported as standard WordPress content, so you can preview, edit, publish or delete these results by clicking 'Posts' in the main dashboard.

    (Note: I'm using the Featured Image Admin Thumb plugin to show thumbnails in the WordPress' Posts screen)

    As standard WordPress content, these posts will be easily compatible with other plugins and standard themes. If using a premium theme, we may need to connect Video Pornster to their custom meta fields, if used. See the Premium Theme Support section.

  7. Now you can explore all the options and flexiblity with Video Pornster!

A video feed is comprised of Feed Details, Build the Query (unique to each video site), Process the Results returned into Post Templates and Create the Posts with the finished data. These 5 sections are broken down below.

Quick usage note: most circumstances break down into these several concepts:

  1. Request all videos from a search term/category/pornstar/etc. - Set Videos to Request to -1 and the feed will import all results returned from the query. Can use lots of time, resources and quota depending on number of total videos. After doing this once, you should consider concept 3.
  2. Request all videos from a search term/category/pornstar/etc. but only X at a time - Set Videos to Request to X and set Query Behavior to Continuous. This will only import videos that you have not imported before, until all results from the query have been imported. After that, you should consider concept 3.
  3. Request only new videos added to a search term/category/pornstar/etc. - Set Order Videos by to date (or similar), set Query Behavior to Strict and compare the Scheduler time to how many videos might be added in that time. For instance, if the Scheduler is set to run every 24 hours, how many new videos could be added to the search term/category/pornstar/etc. in that time? I recommend a number between 5 and 50, which will save much in time, resources and quota.

Build ContentFeed Query

This declares the content feed URL and how to parse it for import. It must be simple text, with one video result per line.

These are typically .txt or .csv files a sponsor program might supply. You only need to match the fields and Video Pornster will import them to be available in the Post Templates for the theme to use.

API Request

Build GayTube Query

This builds the query that will be sent to the GayTube API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build GotPorn Query

This builds the query that will be sent to the GotPorn API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

GotPorn has an API that can be used for searching for keyphrases or specific videos, but it does not support any filters. They also have a content feed that supports filters, but it does not support keyphrases.

API Request

Video Metadata

Video Image

Build PornHub Query

This builds the query that will be sent to the PornHub API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build PornTube Query

This builds the query that will be sent to the PornTube Export page to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build PornerBros Query

This builds the query that will be sent to the PornerBros Export page to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build RedTube Query

This builds the query that will be sent to the RedTube API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build SpankWire Query

This builds the query that will be sent to the SpankWire API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build Tube8 Query

This builds the query that will be sent to the Tube8 API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build YouPorn Query

This builds the query that will be sent to the YouPorn API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build xHamster Query

This builds the query that will be sent to the xHamster Content Export page to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build xTube Query

This builds the query that will be sent to the xTube API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Video Comments

Build xVideos Query

This builds the query that will be sent to the xVideos API to retrieve videos.

If the results are missing details, VP will attempt to scrape them off the video html page.

API Request

Video Metadata

Video Image

Build the Query for RSS feeds

This builds the query that will read the RSS Feed to retrieve entries.

Feed Request

Entry Metadata

Entry Image

  • Import featured image - If enabled, the image will be imported from the RSS item's thumbnail field. If it does not exist, the image will be extracted from the item content, if available.
  • Valid RSS feeds are generally in two flavors:

    IMPORTANT! Know the RSS feed style you wish to import. You can load the RSS feed URL in your browser and look for the <media:content> field to see if you need the Wordpress player shortcode. I know this is a bit of a pain, but it allows maximum flexibility.

    Process the Results

    The content returned from the SOURCE will then be processed using these rules.

    Content Exclusion Rules

    Content Filters

    The Post Templates

    Processed content will then be used to build each post. Template tags will be replaced with content info.

    Post Title

    • Post Title Template - This is the title of the post, where any template tags will be replaced with information from the video.
    • If Title a Duplicate? - If the post title would match an existing WordPress post title, then the import can be skipped. This can be useful if, for instance, someone uploads the exact same video under multiple YouTube accounts (against their TOS) in order to spam.

    Post Body

    • Post Body Template - This is the body of the post, where any template tags will be replaced with information from the video. Most themes use Post Body but some premium themes will use custom meta fields for content data instead. KSES is toggled off so you can use 'evil scripts' like iframe ads. You may also use spintax for more variations.

    Post Custom Meta Fields

    • Post Custom Meta Fields - Define your own meta data using a meta name and value, with template tags supported. This is useful if your theme or plugin requires it's own custom meta data, and this allows Video Blogster to fill out those fields automatically when the post is created.

      To insert an array, WordPress requires it must be serialized into a json string. For instance array(100,101) would be stored as a:2:{i:0;i:100;i:1;i:101;}. If you needed to store array(%VideoURL%,%VideoEmbed%) it would be stored as a:2:{i:0;i:%VideoURL%;i:1;i:%VideoEmbed%;}. Video Blogster will then replace the template tags with the content values with each content imported.

    Post Image

    • Post Image Template - The desired filename for the imported image, where any template tags will be replaced with information from the video. This will be the featured image filename of the post.

    Supported Template Tags

    • All the template tags available in the post templates.

    Create the Posts

    Content processed will then be saved in WordPress with these settings, one post per successful import.

    Post Details

    • Set Post Author - Presents a list of valid users to be author of the created posts. Random will choose an author randomly. To avoid WordPress running out of memory, a max of 1000 authors will be shown. If you want to change this, use this code snippet:
      function vb_change_args_get_users( $args ) {
      	// Option 1. set number fetched to 5000
        	$args[number] = 5000;	
      	// Option 2. Get all taxonomies. (I have plenty of memory and script execution timeout is high)	
        	$args[number] = -1;		
      	return $args;
      }
      add_filter('vb_get_users_args' , 'vb_change_args_get_users');
      
      See get_users for other parameters you could change.
    • Set Post Type - All public and registered post types will be listed here, including any custom post types.
    • Set Post Status - All public and registered post statuses will be listed here, including any custom post statuses.
    • Set Post Format - If your theme supports them, you can choose any post format for the posts created (usually it would be 'video').
    • Set Post Publish Date to - Uses the original publish date of the content or comment when importing instead of the date the post or comment is imported (recommended). Note that if you manually publish a post later, WordPress will change the post date to the current time. If you wish to keep the content's publish date instead, see this FAQ.
    • Content Post Excerpt - Some themes use excerpts, which if created will be a shorter version of the content description.

    Post Taxonomies

    • All public and registered taxonimies will be listed here, including any custom taxonomies. To avoid WordPress running out of memory, a max of 1000 values per taxonomy will be shown. If you want to change this, use this code snippet:
      function vb_change_args_get_terms( $args ) {
      	// Option 1. set number fetched to 5000
        	$args[number] = 5000;	
      	// Option 2. Get all taxonomies. (I have plenty of memory and script execution timeout is high)	
        	$args[number] = -1;		
      	return $args;
      }
      add_filter('vb_get_terms' , 'vb_change_args_get_terms');
      
      See get_terms for other parameters you could change.

    The buttons will contain the name of the media site for this feed.

    Import [MEDIA SITE] Videos Now - Will send this query immediately and create posts from the results. Note: If you haven't saved this feed, then no VideoFeed meta data will be saved for the posts created.
    Save [MEDIA SITE] Video Feed - Will save this video feed in the database. Whenever the Scheduler is triggered, all active video feeds will be queried sequentially.

    Shows a summary list of video feeds that can be queried when the Scheduler is triggered. Inactive feeds will be greyed out and the name, id and source will be striked out. You can import, edit or delete feeds entirely, either singly or using the mass edit section below the summary list.

    The Build the Query section of Mass Edit does not have many fields because each media site has a different API.

    The Scheduler allows the content feeds to be queried continuously at certain intervals, as well as the utility functions that help manage the videos.

    If Scheduler is enabled it shows the times of the next scheduled triggers.

    • Once enabled, start querying content feeds in - The delay in hours before the Scheduler starts querying active feeds.
    • then Query the content feeds every - The number of hours between querying all the active content feeds.
    • Once enabled, start running utility functions in - The delay in hours before the Scheduler starts running utility functions.
    • then Run the utility functions every - The number of hours between running the utility functions.
    • Email error summary to - Enter a valid email and VBP will send a summary of any errors encountered after every completed run of querying content feeds and the utility functions.
    If a range is specified a random time will be chosen between them (example: 12-24 hours).

    Note: Video Blogster Pro schedules events into the WordPress Cron (aka wp-cron) for checking. These cron events are only checked when a visitor loads a non-cached WordPress page on the site. If there are no visitors, there can be no cron checks and therefore no scheduler checks.

    If you have a high traffic site and wish to turn off WP-Cron and use server cron jobs instead, see this FAQ.

    All important log events will be shown here. Also, the message display options will be used when manually importing content.

    Display Messages

    • Critical - Important messages like errors and posts created.
    • Video Import - Secondary messages when importing like comments and images.
    • Video Skipped - Displays a message when content is not imported and the skip reason.
    • Utility Function - Messages related to the Utility Functions to help manage imported content.
    • Debug - Lots of programming information to help with support requests.

    • Max log messages to save - Log messages are saved to the database, and this limit prevents the database from getting too large. If you are on a virtual host, I recommend NOT entering 0.

    Miscellaneous utility functions for Video Pornster. Can be triggered via Scheduler or run manually.

    1. Trash Broken Embeds - Send posts to Trash if its embedded video has been removed from source media site. Sometimes the video owner or the remote site itself deletes or otherwise disables a video. In particular YouTube does well policing inappropriate, misleading and spammy videos. This cleans up your site instead of showing posts with broken embeds.
    2. Fetch Missing Images - If "Import featured image" is selected and the remote API fails to return an image for whatever reason, this tool lets the plugin re-request the image at the next opportunity. If "Twice" selected and unable to fetch image after 2 additional attempts, post will be sent to Trash. If "Import featured image" was NOT selected at time of import, the images are therefore NOT considered missing. You can override this by using the filter "vb_image_import" to return TRUE.
    3. Remove Trash Images - Remove any images associated with Trashed Video Pornster posts to save space. If you Trash posts created by Video Pornster because the videos are spam, non-related, removed, etc., this will also delete the images too to save space (WordPress does NOT do this for you). Will ONLY apply to Trashed posts that were created by Video Pornster.
    1. Why don't the scheduler events trigger? Nothing is happening.
    2. Can I turn off WP-Cron and use server cron jobs instead?
    3. I’m seeing the message “Error: [plugin] hook not found, likely another plugin misuse of cron_schedules. See FAQ.” What is that?
    4. Why does the Scheduler use hours? Why can’t I query every X minutes or seconds?
    5. Video Pornster imported videos, but they don't display properly with my theme.
    6. How can I use schema.org microdata for the videos?
    7. How can I use a different video player?
    8. How can I convert VideoDuration into other formats?
    9. I'm getting strange characters when I save my feeds. What is it?
    10. How can I customize something specific when a post is created?
    11. How can I customize something specific when a post is updated?
    12. Why is the script timing out? I'm seeing a blank page, 404 error or 500 error.?
    13. How can I use the video's publish date when I publish a post manually?
    14. On some posts I'm seeing 'missed schedule'. What does that mean?
    15. How can I map video categories to match my own site?

    1. Why don't the scheduler events trigger? Nothing is happening.

      • The plugin hooks into the WordPress WP-Cron for scheduling. These cron events are only checked when a visitor loads any WordPress page on the site. If there are no visitors, there can be no cron checks and therefore no scheduler checks.
      • If you are using a caching plugin, WP-Cron won't be called until a cached page is rebuilt.
      • If you've disabled WP-Cron in the wp-config.php file, make sure you have a cron job set properly on your server to invoke wp-cron.php periodically.
      • If you are using .htaccess to allow,deny by IP, make sure to allow the IP of your WordPress site itself as the WP-Cron uses that IP address.
      • Are you sure nothing is happening? Be sure to check the log file. Perhaps the videos are being skipped because they have already been imported. Try running with debug mode turned on.
    2. Can I turn off WP-Cron and use server cron jobs instead?

      • Yes, this is recommended (for any site) if you have high traffic or low server resources.
        1. Edit /wp-config.php and add the line
          define('DISABLE_WP_CRON', true);
        2. Edit your cron on the server via the command line with 'crontab -e' or administration panel and add the line
          */15 * * * * wget -q -O /dev/null http://www.mydomain.com/wp-cron.php > /dev/null 2>&1
          and change 'mydomain' to your site domain.

        This crontab entry will call wp_cron.php every 15 minutes and trigger any scheduled action hooks. Note that even though the 'next video feeds check' may be scheduled for 9:22, the above cron only fires every 15 minutes, so it won't be triggered until 9:30.

        See this excellent article for more details: WP-Cron: Scheduling Tasks in WordPress.

        If you are unfamiliar with cronjobs and/or are unable to edit your server's cron you may use a web based cron service such as EasyCron.

    3. I'm seeing the message "Error: [plugin] hook not found, likely another plugin misuse of cron_schedules. See FAQ." What is that?

      • This happens when another plugin incorrectly replaces cron_schedules with their own schedules instead of correctly adding to the existing schedules. This means the other plugin actually wipes out all existing cron hooks set by WordPress and plugins, including our plugin hook. The offending plugin code needs to be fixed or deactivated. I've only seen this happen with two other plugins - 1 was fixed and the other is no longer supported (php my video blog), but there are many many plugins out there. The chances of seeing this are slim, but if you do see this message, please let me know the offending plugin.
    4. Why does the Scheduler use hours? Why can't I query every X minutes or seconds?

      • The various media sites have daily quotas and/or throttling, so it's best to request 100 videos an hour than it is 1 video a minute. If you want to publish the posts at that frequency, save them in bulk as Drafts and use the free plugin Auto Post Scheduler.
    5. Video Pornster imported videos, but they don't display properly with my theme.

      • You are most likely using a Premium theme that uses custom meta data to store video information, and Video Pornster doesn't know what those custom fields are unless we declare them. See Premium Theme Support.
    6. How can I use schema.org microdata for the videos?

      • We can add this right into the Post Content Template for the video feed. Here is an example:
        <div itemscope itemtype='http://schema.org/VideoObject'>
        <meta itemprop='name' content='%VideoTitle%'><meta itemprop='thumbnailURL' content='%VideoImage%'><meta itemprop='embedURL' content='%VideoUrl%'><meta itemprop='width' content='640'><meta itemprop='height' content='480'>
        [embed width='640' height='480']%VideoUrl%[/embed]
        <p><span itemprop='description'>%VideoDescription%</span></p>
        </div>
        
    7. How can I use a different video player?

      • The adult sites use custom players when embedding their videos. There is no known way to use another player without breaking their TOS.
    8. How can I convert VideoDuration into other formats?

      • You can attach an action to when the VideoDuration post meta is added and perform your conversion. For instance the following code could be used to convert the VideoDuration from HH:MM:SS into just seconds and save it under the post meta key 'VideoSeconds':
        // Add this code to child theme's function.php file or in Code Snippets plugin (recommended)
        function video_duration_convert( $meta_id, $post_id, $meta_key, $meta_value ) {
                if ( 'VideoDuration' == $meta_key ) {
                        sscanf($meta_value, "%d:%d:%d", $hours, $minutes, $seconds);
                        $secs = isset($seconds) ? $hours * 3600 + $minutes * 60 + $seconds : $hours * 60 + $minutes;
                        add_post_meta( $post_id, 'VideoSeconds', $secs );
                }
        }
        
        add_action('added_post_meta', 'video_duration_convert', 10, 4);
    9. I'm getting strange characters when I save my feeds. What is it?

      charset
      • This might happen on older PHP versions that are not using the UTF-8 charset (default since PHP 5.4). You can either upgrade to a supported PHP version or modify your PHP .ini file to set the default_charset to UTF-8.
    10. How can I customize something specific when a post is created?

      We can insert a filter hook with the WordPress function add_filter. The filter 'vb_create_the_post' is checked right before Video Pornster would call the function wp_insert_post, allowing us to hook in and customize the post creation functionality to do anything we want.

      This code snippet shows several examples of how we could customize post creation for an imported video.

      
      add_filter( 'vb_create_the_post', 'my_create_post_hook' );
      
      // vidpost - the array of args we would send to wp_insert_post()
      // videoInfo - the array of info for this imported video
      // returns: either the postID, null, or $vidpost
      function my_create_post_hook( $vidpost, $videoInfo ) {
      
        // Usage 1: If we don't want VB to create the post at all, just return null. 
        // Useful for debugging or checking your own custom rules.
        if ( false !== stripos( $videoInfo['title'], "BAD WORD" ) ) {
      	return null;
        }
        if ( $videoInfo['videoLikes'] < 10 ) {
      	return null;
        }
        
        // Usage 2: If we want a custom rule to change something in the post creation, modify the $vidpost and return it.
        if ( $videoInfo['likeCount'] >= 10 ) {
      	$vidpost['post_content'] .= "<p> " . $videoInfo['likeCount'] . " likes</p>".;
        }
        return $vidpost;
      
        // Usage 3: We could also return a postID here, then tell VB it doesn't have to.
        // VB would still attach meta and comments to the postID.
        // This allows you to do other customizations with the postID before control is returned to VB.
        $postID = wp_insert_post( $vidpost, TRUE );
        return $postID;
      
      }
      
    11. How can I customize something specific when a post is updated?

      We can insert a filter hook with the WordPress function add_filter. The filter 'vb_update_the_post' is checked right before Video Pornster would call the function wp_update_post, allowing us to hook in and customize the post update functionality to do anything we want.

      Post updates can only occur when you have 'Update existing posts instead of skipping duplicate videos?' checked in the 'Process the Results' tab and the API returns a video you have already imported.

      This code snippet shows several examples of how we could customize a post update for an imported video

      
      add_filter( 'vb_update_the_post', 'my_update_post_hook' );
      
      // vidpost - the array of args we would send to wp_update_post()
      // videoInfo - the array of info for this imported video
      // returns: either the postID, null, or $vidpost
      function my_update_post_hook( $vidpost, $videoInfo ) {
      
        // Usage 1: If we don't want VB to update the post at all, just return null. 
        // Useful for debugging or checking your own custom rules.
        if ( false !== stripos( $videoInfo['title'], "BAD WORD" ) ) {
      	return null;
        }
        if ( $videoInfo['videoLikes'] < 10 ) {
      	return null;
        }
        
        // Usage 2: If we want a custom rule to change something in the post update, modify the $vidpost and return it.
        if ( $videoInfo['likeCount'] > 10 ) {
      	$vidpost['post_content'] .= "<p> " . $videoInfo['likeCount'] . " likes</p>".;
        }
        return $vidpost;
      
        // Usage 3: If we don't want VB to call wp_update_post, we can just return the existing post ID.
        // VB would still attach meta and comments to it.
        return $vidpost['ID'];
      
      }
      
    12. Why is the script timing out? I'm seeing a blank page, 404 error or 500 error.

      If your server uses mod_php (common) then a PHP script like Video Pornster will extend its script time automatically to handle any and all requests.

      However if your server uses mod_fcgid or mod_fastcgi or a fastcgi process manager like php-fpm then that mod will automatically terminate any PHP script after its timeout limit is reached. Video Blogster will be unable to extend the script time or recover or even log an error message. In this case, you'll have to edit the appropriate configuration files and extend the timeout manually (depends on which module), or preferably, create a server cron job which will not be subject to timeout limits.

      To know which module is currently used on your server, you can check your details with the plugin PHP Info.

    13. How can I use the video's publish date when I publish a post manually?

      Video Pornster can set the post's publish date to be the same as the remote video's publish site. However, if you then publish the post manually, WordPress changes the publish date to the current time. If you wish to keep the video's publish date instead after publishing the post manually, we can use this filter code:

      // Add this code to child theme's function.php file or in Code Snippets plugin (recommended)
      function vbp_keep_publish_date( $post_id ) {
        $videoPublish = get_post_meta( $post_id, 'VideoPublish', TRUE );
        if ( empty( $videoPublish ) ) return;
        // unhook this function so it doesn't loop infinitely
        remove_action( 'publish_post', 'vbp_keep_publish_date', 99 );
        // update the post with the video publish date, which calls save_post again
        wp_update_post( array( 'ID' => $post_id, 'post_date' => $videoPublish ) );
        // re-hook this function
        add_action( 'publish_post', 'vbp_keep_publish_date', 99 );
      }
      
      add_action('publish_post', 'vbp_keep_publish_date', 99 );
      
    14. On some posts I'm seeing 'missed schedule'. What does that mean?

      This can sometimes happen when you're importing videos with post status set to 'Publish' and the 'Use the video publish dates instead of the current date?' checked. Video Pornster imports a video recently uploaded, and the video's publish date is ahead of the server's current time because of the timezone difference and/or server has the wrong time. Therefore, WordPress schedules it for a future publish at the video's publish date. I don't know why WordPress misses its scheduled posts sometimes, but you can try a plugin like Scheduled Post Guardian.

    15. How can I map video categories to match my own site?

      With Video Pornster you can do just about anything with a bit of hook coding. Unfortunately, each tube uses its own category names, so you'll have to code this manually depending on which tubes you're importing from and your own site's category structure. Some tubes will use 'Lesbians' while others may use 'Girl-Girl', etc.

      Here is a code snippet to get you started:

      
      add_filter( 'vb_create_category', 'vb_category_submap');
      
      // see if the tube's category name should be a subcat of an existing category on your site.
      // this code snippet assumes the parent categories 'Softcore' and 'Hardcore' already exist.
      function vb_category_submap( $catName ) {
        
        $catID = 0;
        
        // example to map tube site's 'BBW' to your site's 'Hardcore/BBW' category.
        if ( $catName == 'BBW' ) {
      	$parent = get_cat_ID( 'Hardcore' );
      	$catID = wp_create_category( 'BBW', $parent );  
        }
        // example to map tube site's 'HD Videos' to your site's 'Hardcore/Videos' category.
        else if ( $catName == 'HD Videos' ) {
      	$parent = get_cat_ID( 'Hardcore' );
      	$catID = wp_create_category( 'Videos', $parent ); 
        }
        // example to map tube site's 'Close-ups' to your site's 'Softcore/Solo' category.
        else if ( $catName == 'Close-ups' ) {
      	$parent = get_cat_ID( 'Softcore' );
      	$catID = wp_create_category( 'Solo', $parent ); 
        }
        
        // if there was a match above then we already checked/created the category so we can return its ID.
        if ( $catID ) return $catID;	
        
        // otherwise no match above so return the category name for WordPress to check/create the ID.  
        return $catName;  
        
      }
      
    1. I use Video Pornster myself on numerous sites. I've added all the features I wanted plus everything else I could easily think of. Please let me know if any instructions need clarification - it all makes sense to me because I programmed it. :) If you have a feature request I'll try to implement it if possible.
    2. Trying to import zillions of videos on a free or virtual host will probably encounter low resource issues.
    3. Here's what I do:
      1. Save my feeds that use search terms to create posts in 'draft' status so they can be curated later. Feeds from 'trusted' sources such as channels or playlists can create posts in 'pending' or 'publish' status.
      2. Every X days I log into WordPress and check my new drafts imported by Video Pornster. Any spammy videos and the like are trashed and the rest edited/spun and are set to 'pending' status.
      3. My free plugin Auto Post Scheduler publishes those pending posts at time intervals for me automatically.

    Video Pornster imports videos as WordPress data, to ensure compatibility with any plugin or theme that uses WordPress data. However, some premium themes use their own custom data to display videos instead of WordPress. In those cases Video Pornster may not know how to save that data (it's impossible to know what premium themes name their custom video fields in advance).

    You can identify if your theme is using custom meta data if you see a custom meta box that is not standard WordPress. Each theme will probably be different. Example custom meta box:

    Luckily, all we have to do is tell Video Pornster to fill in those custom data fields automatically when it imports videos. Unfortuantely, we have to figure out what variable names those custom data fields are using, and that might require some html and/or css knowledge. Fortunately, some popular video themes have already been done for you, below. If a supported Premium theme is detected, the custom meta fields will be filled out automatically for you in the 'Process the Results' section when making a NEW feed.

    For example, these are the custom meta fields entered when the VideoTube theme is detected. The VideoTube custom fields video_frame, count_viewed, like_key, and layout will be filled in automatically for each video imported into WordPress so they display properly with VideoTube.

    These are FREEBIES and I do not promise compatability if their themes change or stop working, but I can try. If you have another premium theme not listed below that uses custom data for videos and cannot determine the variables they use, please contact support with a copy of the theme and I will take a look for you (Please note it's not my fault if a theme uses custom data fields).

    WordPress identifies the theme based on the Theme Name declaration in it's style.css file and Video Pornster uses that theme name to include the necessary file in its /theme-helpers/ sub-directory. If you've renamed your Theme Name from 'truemag' to 'truemag (shared on themelot.net)' in the style.css file, then the plugin will not be able to load the '/theme-helpers/truemag.php' file functions.

    Premium Themes recognized:

    Adult WordPress Theme, Bestia, deTube, Furious, Katastrof, Newspaper, NewsTube, NovaVideo, PopCorn, Sahifa, TrueMag, Valenti, VideoTube.

     

     

     

    Some WordPress plugins use custom meta data to store video info, just like some Premium themes, and are handled the same way. Read that section for more details.

    Special plugins recognized:

    Post Views Count, WordPress SEO, WP-PostViews, WP-PostRatings, WTI Like Post.

     

     

     

    Post Views Count

    When Video Pornster detects this plugin, it will automatically set these form fields so Video Pornster will save the custom data the plugin uses:

    • New Custom Field '_count-views_all' set to
      %VideoViews%

     

     

     

    WordPress SEO aka Yoast SEO

    When Video Pornster detects this plugin, it will automatically set these form fields so Video Blogster will save the custom data the plugin uses:

    • New Custom Field '_yoast_wpseo_title' set to
      %VideoTitle%
    • New Custom Field '_yoast_wpseo_metadesc' set to
      %VideoDescription%

     

     

     

    WP-PostViews and WP-PostRatings

    Video Pornster automatically saves custom meta data with the same names as these plugins. No additional definitions are necessary.

     

     

     

    WTI Like Post

    When you import videos with Video Pornster and it detects this plugin, it will automatically include the file /plugin-helpers/wti-like-post.php to add these filter hooks to save the custom data the plugin uses:

    • add_action hook to the 'vb_create_the_post_finished' filter which will insert video likeCount and dislikeCount numbers into the custom 'wti_like_post' database table for each video imported.

     

     

     

    Filter hooks allow programmers to modify WordPress code that uses them, especially useful for Premium Themes that use their own custom data tables. This is advanced WordPress usage, so be careful. If you're familiar with filter hooks, you'll know to search the Video Pornster code for the 'apply_filters' function you want and hook them to your own code.

    Simple Code Snippet Examples :
    // If imported video has more than 10 'Likes' then open comments on the post to be created.
    function my_create_post_hook( $videoPost, $videoInfo ) {
            if ( $videoInfo['VideoLikes'] > 10 )
    		$videoPost['comment_status'] = 'open';
            return $videoPost;
    }
    add_filter( 'vb_create_the_post', 'my_create_post_hook' );
    
    // don't create the post if video meets a certain condition
    function my_create_post_hook2( $videoPost, $videoInfo ) {
            if ( $videoInfo['VideoLikes'] < 10 )
    		return null;  // post will not be created
            return $videoPost;
    }
    add_filter( 'vb_create_the_post', 'my_create_post_hook2' );