Jump to content

Tech Support

Administrators
  • Posts

    1,811
  • Joined

  • Days Won

    338

Everything posted by Tech Support

  1. This feature was added long time ago and is available in 3.9.1, check this post: http://www.kernel-video-sharing.com/forum/forum/general-discussion/announcements/30-kvs-3-9-1-implementation?p=82#post82
  2. Added support for new Mass select videos / albums GUI, which allows specifying list of URLs / IDs to select videos / albums from them and do one of the following: - select them in list page - mass edit them - mark them as deleted - delete them completely Here is the new GUI:
  3. It was implemented in 3.9.2 update: http://www.kernel-video-sharing.com/forum/forum/general-discussion/announcements/273-kvs-3-9-2-implementation?p=513#post513
  4. For storage servers we added sync option, which will allow to sync content on one server based on content on other servers from the same group. This is needed in 2 cases: 1) When you want to move all content to a new server, you add a new server into the same storage group and previously you had to manually copy all content to a new server, before it can be activated. 2) When you want to load balance the same content between multiple servers. Now we added a sync option and you won't need to copy anything manually. When you add a new storage server into the existing group, you can use this option to start syncing content on this server: This will create low priority background task, which will sync all content using iterations limited to max 100 objects (videos or albums) per iteration. Since this task may take long time (days and even weeks to copy all content between servers), the iterative approach will ensure that your conversion queue won't be frozen for the long period:
  5. In videos massedit we changed the way how video format can be created or deleted. Previously it was only possible to create / delete 1 format at a time. Now it will be possible to create / delete multiple formats with the same massedit operation: Also it will now be possible to change Access level field via massedit for both videos and albums.
  6. OK, I get your point! We may need to create "sync content" option which can be executed manually when needed and it will verify all content at the given server and if some content is missing (which is true for ALL content in your case) it will sync this missing content from any other servers of this group. So that you don't need to do that manually with SSH. Well, probably this is doable.
  7. In 3.9.2 we continue advertising enhancements with some important player advertising improvements. First of all it will now be possible to connect all HTML ads (start screen, pre-roll, post-roll and on-pause screen) to a site advertising spot: This will not simply allow you to rotate ads in player, but with the bunch of other advertising features we've added into 3.9.2 this will allow ULTIMATE control on what and where is displayed in player HTML ads: - you can now show separate player ads for desktop and mobile users - you can disable specific ads for phone users where screens are too small to show ads - you can easily disable ads for premium / registered users in just few clicks - you can show specific ads for specific countries - you can show specific ads for specific video categories - you can control the exact date and time when specific ads will be displayed Here is an example configuration of Player start advertising spot, which basically has 2 ads: one for desktop and tablet users and another for phones: And also for pre-roll ads (advertising which plays some time before the actual video starts) it will now be possible to configure how often it will be repeated. It may be annoying to show this ad for every video, so player settings will allow to reduce the frequency of this advertising by specifying how many videos should be skipped before the next pre-roll repeat:
  8. I think you don't need anything in KVS to be able to use it. They should provide some kind of JS code that you can add into footer or header template and it will automatically load all necessary functionality. This is not a good idea. Many customers do not understand completely how KVS storage system works, they are trying to add servers in whatever way they think and this is not necessary the correct way. Right now automatic copying doesn't happen, so it is always possible to fix easily if something is not correctly configured and redo the configuration. If adding new server triggers automatic content copying for 100s GB of existing content, this operation will not be easily undone and somebody may even not notice it. Therefore we think that adding automation here will cause more issues, than benefits. The situation when you need to manually copy content is rare, it is only needed when you want to load balance content between multiple servers (e.g. 1 or 2 times in a life). While the more common case is when you want to extend storage space to store new content and this doesn't require any automatic copying.
  9. Unfortunately we will not be able to finish all planned emailing changes in 3.9.2, they will be postponed to 3.9.3. We are planning to implement at least ability to configure emails via 3rd-party mail servers, which is the highly demanded feature. As for your question, we planned that user should be able to configure email templates in admin panel, e.g. specify their HTML code like currently for page templates. Their design and appearance should be of cause designed by someone. You can actually modify email templates right now in KVS, but not from admin panel.
  10. We added ability to minify HTML code generated by KVS on the fly, however we decided not to add this option into admin panel. The reason is that this is mostly needed for "geeks", it can produce some issues for other users if enabled. Here is what we've noticed: 1) If users provide multi-line descriptions when uploading videos or albums, they will be reset to single-line if this video or album is edited in site area again, since multi-line text will not be supported in textareas anymore. 2) If using custom JS or CSS inline code, the lines which are not terminated correctly will produce browser errors and will stop working. Consider this example: <style> .test { display: none color: black } </style> This CSS will not work, since there are no semicolons at the end of each statement. Same with JS code, but may also break other valid JS code on the page. If you would like to enable this, you can add this option into /admin/include/setup.php file (or change to true, if it exists already): $config['minify_html']="true";
  11. Added support for paid subscriptions inside KVS for users and channels by using tokens. This functionality utilizes the same subscription model, as was used before (ability to subscribe models, users, content sources and channels). However for users and channels it will now be possible to enable paid subscription, so that users can only subscribe them if they have enough tokens on their balance. The settings are located in Settings -> Memberzone settings area, which were also regrouped for clear understanding. In settings it is possible to define default price in tokens (can be 0, which means that they do not require tokens by default) and period of subscription. Individual users and channels can override the default price in their settings. When subscribing a user or channel that requires payment, user will spend the needed amount of tokens and will get PREMIUM access level to all videos / albums that are owned by this channel or user for the configured period of time. When the period ends, KVS will try to extend subscription if this user has enough tokens. If not, subscription will be expired and user will no longer have PREMIUM access to this content. All such purchases are shown in purchase stats in admin panel. The example picture shows several subscription purchases rebilled by KVS every 24 hours: Then it is also possible to enable users to earn 100% or less tokens from the subscriptions they sell. Users can either sell their profile as a whole, or their created channels separately. Users cannot specify subscription period, but they can specify price in tokens they want to get. In order to activate that in themes, it will be needed to adjust template codes for member_profile_edit / dvd_edit blocks to allow user specify tokens. Here is example template code for default theme, that will work in both blocks and will render a textfield to enter tokens price either for the whole profile (if put into member_profile_edit) or for individual channels (if put into dvd_edit): {{if $allow_tokens==1}} <div class="row"> <label for="edit_profile_tokens_required" class="field-label">Tokens required for {{$tokens_period_default}} days</label> <input type="text" name="tokens_required" id="edit_profile_tokens_required" class="textfield" value="{{if $smarty.post.tokens_required>0}}{{$smarty.post.tokens_required}}{{/if}}" placeholder="default price {{$tokens_price_default}} with commission {{$tokens_commission}}%"/> <div class="field-error down"></div> </div> {{/if}} Then if settings allow users to earn tokens from selling subscriptions to their profiles or channels, they will get awards with each subscription and rebill. The sum of award depends on subscription price and your commission configured in memberzone settings: Finally if users want to cancel their rebills on specific subscriptions, they can unsubscribe using existing way (either on user / channel page, or in the list of their subscriptions). They will still have PREMIUM access until the period will end, then their subscription will not be rebilled. Within this new functionality we also updated several blocks to display the needed data: - list_members_subscriptions: mode_purchased parameter was added to display list of active subscriptions that were paid. In this mode it will be possible to display expiry date {{$item.expiry_date}}, whether the subscription was cancelled {{if $item.is_cancelled==1}}cancelled{{else}}active{{/if}} and also tokens required for every rebill {{$item.tokens}}. - list_members_tokens: added 2 types of awards {{if $item.flow_type=='award_user_sale'}}subscription sold{{elseif $item.flow_type=='award_dvd_sale'}}channel subscription sold{{/if}} and 2 types of purchases {{if $item.flow_type=='purchase_dvd'}}channel purchase{{elseif $item.flow_type=='purchase_user'}}user purchase{{/if}}. - dvd_view, member_profile_view: added ability to display price for this channel / user in tokens {{$data.tokens_required}} and period of subscription in days {{$data.tokens_required_period}}. If you want to separate free channels /users from paid channels / users, you should compare price with 0: {{if $data.tokens_requred==0}}free{{else}}paid{{/if}}. - dvd_edit, member_profile_edit: exposed variable to check if it is possible to earn tokens from selling channels / users {{if $allow_tokens==1}}user can specify price{{/if}}, show default price {{$tokens_price_default}}, show subscription period configured in settings {{$tokens_period_default}} and show your site commission rate in percents {{$tokens_commission}}.
  12. You can show an array in smarty using foreach iterator: https://www.smarty.net/docsv2/en/language.function.foreach.tpl The only difference is that in smarty docs they use single brackets {foreach}, but in KVS you should use double brackets {{foreach}}
  13. # global --------------------------------------------------------------------------------------------------------------- rewrite ^/terms/$ /terms.php last; rewrite ^/dmca/$ /dmca.php last; rewrite ^/2257/$ /2257.php last; rewrite ^/privacy/$ /privacy.php last; rewrite ^/random_video(/)?$ /redirect_random_video.php last; rewrite ^/random_album(/)?$ /redirect_random_album.php last; rewrite ^/rss/videos/$ /rss_videos.php last; rewrite ^/rss/albums/$ /rss_albums.php last; rewrite ^/rss/tags/([^/]+)/videos/$ /rss_videos.php?tag=$1 last; rewrite ^/rss/tags/([^/]+)/albums/$ /rss_albums.php?tag=$1 last; rewrite ^/rss/categories/([^/]+)/videos/$ /rss_videos.php?category=$1 last; rewrite ^/rss/categories/([^/]+)/albums/$ /rss_albums.php?category=$1 last; rewrite ^/rss/models/([^/]+)/videos/$ /rss_videos.php?model=$1 last; rewrite ^/rss/models/([^/]+)/albums/$ /rss_albums.php?model=$1 last; # search --------------------------------------------------------------------------------------------------------------- rewrite ^/search/([^/]+)/albums/([0-9]+)/$ /albums_list.php?q=$1&from=$2 last; rewrite ^/search/([^/]+)/albums/$ /albums_list.php?q=$1 last; rewrite ^/search/([^/]+)/models/([0-9]+)/$ /models_list.php?q=$1&from=$2 last; rewrite ^/search/([^/]+)/models/$ /models_list.php?q=$1 last; rewrite ^/search/([^/]+)/([0-9]+)/$ /videos_list.php?q=$1&from=$2 last; rewrite ^/search/([^/]+)/$ /videos_list.php?q=$1 last; rewrite ^/search/$ /videos_list.php last; # videos --------------------------------------------------------------------------------------------------------------- rewrite ^/videos/([0-9]+)/$ /videos_list.php?from=$1 last; rewrite ^/videos/$ /videos_list.php last; rewrite ^/videos/([0-9]+)/([^/]+)/$ /view_video.php?id=$1&dir=$2 last; rewrite ^/videos/([^/]+)/$ /view_video.php?dir=$1 last; # albums --------------------------------------------------------------------------------------------------------------- rewrite ^/albums/([0-9]+)/$ /albums_list.php?from=$1 last; rewrite ^/albums/$ /albums_list.php last; rewrite ^/albums/([0-9]+)/([^/]+)/$ /view_album.php?id=$1&dir=$2 last; rewrite ^/albums/([^/]+)/$ /view_album.php?dir=$1 last; # playlists ------------------------------------------------------------------------------------------------------------ rewrite ^/playlists/([0-9]+)/([^/]+)/$ /view_playlist.php?id=$1&type=fav_videos&ipp=30&playlist_id=$1 last; # tags --------------------------------------------------------------------------------------------------------------- rewrite ^/tags/([^/]+)/([0-9]+)/$ /content_list.php?tag=$1&from=$2 last; rewrite ^/tags/([^/]+)/$ /content_list.php?tag=$1 last; rewrite ^/tags/([^/]+)/videos/([0-9]+)/$ /videos_list.php?tag=$1&from=$2 last; rewrite ^/tags/([^/]+)/videos/$ /videos_list.php?tag=$1 last; rewrite ^/tags/([^/]+)/albums/([0-9]+)/$ /albums_list.php?tag=$1&from=$2 last; rewrite ^/tags/([^/]+)/albums/$ /albums_list.php?tag=$1 last; # categories ---------------------------------------------------------------------------------------------------------- rewrite ^/categories/([0-9]+)/$ /categories_list.php?from=$1 last; rewrite ^/categories/$ /categories_list.php last; rewrite ^/categories/([^/]+)/([0-9]+)/$ /content_list.php?category=$1&from=$2 last; rewrite ^/categories/([^/]+)/$ /content_list.php?category=$1 last; rewrite ^/categories/([^/]+)/videos/([0-9]+)/$ /videos_list.php?category=$1&from=$2 last; rewrite ^/categories/([^/]+)/videos/$ /videos_list.php?category=$1 last; rewrite ^/categories/([^/]+)/albums/([0-9]+)/$ /albums_list.php?category=$1&from=$2 last; rewrite ^/categories/([^/]+)/albums/$ /albums_list.php?category=$1 last; # models -------------------------------------------------------------------------------------------------------------- rewrite ^/models/([0-9]+)/$ /models_list.php?from=$1 last; rewrite ^/models/$ /models_list.php last; rewrite ^/models/([^/])/([0-9]+)/$ /models_list.php?section=$1&from=$2 last; rewrite ^/models/([^/])/$ /models_list.php?section=$1 last; rewrite ^/models/([^/]+)/([0-9]+)/$ /content_list.php?model=$1&from=$2 last; rewrite ^/models/([^/]+)/$ /content_list.php?model=$1 last; rewrite ^/models/([^/]+)/videos/([0-9]+)/$ /videos_list.php?model=$1&from=$2 last; rewrite ^/models/([^/]+)/videos/$ /videos_list.php?model=$1 last; rewrite ^/models/([^/]+)/albums/([0-9]+)/$ /albums_list.php?model=$1&from=$2 last; rewrite ^/models/([^/]+)/albums/$ /albums_list.php?model=$1 last; # memberzone ----------------------------------------------------------------------------------------------------------- rewrite ^/my/$ /member_profile_view.php last; rewrite ^/my/favourites/videos/([0-9]+)/$ /member_profile_view.php?type=fav_videos&from_my_fav_videos=$1 last; rewrite ^/my/favourites/videos/$ /member_profile_view.php?type=fav_videos last; rewrite ^/my/favourites/albums/([0-9]+)/$ /member_profile_view.php?type=fav_albums&from_my_fav_albums=$1 last; rewrite ^/my/favourites/albums/$ /member_profile_view.php?type=fav_albums last; rewrite ^/my/favourites/models/([0-9]+)/$ /member_profile_view.php?type=fav_models&from_my_fav_models=$1 last; rewrite ^/my/favourites/models/$ /member_profile_view.php?type=fav_models last; rewrite ^/my/playlist/([0-9]+)/([0-9]+)/$ /member_profile_view.php?type=fav_videos&playlist_id=$1&from_my_fav_videos=$1 last; rewrite ^/my/playlist/([0-9]+)/$ /member_profile_view.php?type=fav_videos&playlist_id=$1 last; rewrite ^/my/playlists/([0-9]+)/$ /member_profile_view.php?type=playlists&from_my_playlists=$1 last; rewrite ^/my/playlists/$ /member_profile_view.php?type=playlists last; rewrite ^/my/playlist/view/([0-9]+)/([0-9]+)/$ /view_video.php?playlist=$1&id=$2 last; rewrite ^/my/playlists/new/$ /index.php?mode=async&function=get_block&block_id=playlist_edit_edit_playlist_form&global=true last; rewrite ^/my/playlists/select/$ /index.php?mode=async&function=get_block&block_id=list_playlists_playlists_selector&global=true last; rewrite ^/my/playlists/edit/([0-9]+)/$ /index.php?mode=async&function=get_block&block_id=playlist_edit_edit_playlist_form&global=true&playlist_id=$1 last; rewrite ^/logout/$ /logout.php last; rewrite ^/email/$ /email_links.php last; rewrite ^/payments/$ /payment_links.php last; rewrite ^/login/$ /index.php?mode=async&function=get_block&block_id=logon_logon_form&global=true last; rewrite ^/login-required/$ /index.php?mode=async&function=get_block&block_id=signup_signup_form_premium&global=true&error=only_for_members last; rewrite ^/signup/$ /index.php?mode=async&function=get_block&block_id=signup_signup_form_premium&global=true last; rewrite ^/upgrade/$ /index.php?mode=async&function=get_block&block_id=upgrade_upgrade_access&global=true last; rewrite ^/upgrade-required/$ /index.php?mode=async&function=get_block&block_id=upgrade_upgrade_access&global=true&error=only_for_members last; rewrite ^/reset-password/$ /index.php?mode=async&function=get_block&block_id=signup_reset_password_form&global=true last; rewrite ^/feedback/$ /index.php?mode=async&function=get_block&block_id=feedback_feedback_form&global=true last; rewrite ^/captcha/([^/]*)/$ /index.php?mode=async&function=show_security_code&captcha_id=$1 last; # SYSTEM / DO NOT CHANGE ----------------------------------------------------------------------------------------------- rewrite ^/sitemap.xml$ /sitemap.php last; rewrite ^/embed/(.+)$ /player/iframe_embed.php?video_id=$1 last; rewrite ^/related_videos_html/([0-9]+)/?$ /related_videos_html.php?video_id=$1 last; rewrite ^/get_file/([0-9]+)/([^/]*)/(.*)$ /get_file.php?sg_id=$1&hash=$2&file=$3 last; rewrite ^/get_image/([0-9]+)/([^/]*)/(.*)/$ /get_image.php?sg_id=$1&hash=$2&file=$3 last; # END SYSTEM -----------------------------------------------------------------------------------------------------------
  14. You can find them in docs: http://www.kernel-scripts.com/en/documentation/kvs_website_ui/#section_website_ui_other_session Also if you log in with any user and open debug mode for any page, e.g. (must be logged in admin panel as well to see debug mode): http://kvs-demo.com?debug=true You an see all session variables and their actual values for the currently logged user:
  15. You can display the number of tokens for the current user anywhere in templates: You have {{$smarty.session.tokens_available}} tokens For payout request, we will check if we can add it in the future update.
  16. In tube scrappers also enhanced filtering support and in addition to duration filter added rating and date filters. In the below configuration example only videos greater than 1 minute AND having rating more than 70% AND also published less than 5 days ago will be added by this scrapper:
  17. We don't think we will be able to implement such a complicated logic right now.
  18. You don't need to include any dependent libraries, as these libraries already included into the theme JS file. The code you posted at the very beginning is working if simply copy it to footer, the only thing you need is to add CSS styles to make it be displayed correctly.
  19. This script works for me, but it misses some CSS styling, because the dialog is created under the footer without any visual styling. When I press yes button it creates a cookie and is not displayed next time. You don't need to modify anything related to cookie, it uses its own cookie, which works just fine. Thanks for sharing it, it will be great if you can put link to its website, so that other users can also download if needed.
  20. Another big set of changes to multi-threaded import and grabbers plugin. For grabbers plugin we will move all grabbers to youtube-dl. We will start doing this as soon as 3.9.2 beta will be available. It will now be possible to specify youtube-dl path in the plugin settings, and also to provide any options you want. One of the useful options is to install aria2 tool, which can be used together with youtube-dl to speed up downloads by downloading files in multiple threads. Many tube sites use bandwidth throttling, which limits download speed for a single request, but it can be skipped if download in multiple threads, which can be done with aria2 tool. Therefore grabbers can download video files much much faster. Another possibly useful option is to limit download speed, if you don't want grabbers to fully utilize your server's bandwidth (-r 20k). Here is an example of configuration: One more enhancement for grabbers is ability to specify list of proxy servers for particular grabber, which site has blocked your server IP: There will be another way to workaround this if your server has multiple available IPs, you can change IP by adding this option to youtube-dl path to force it use another IP for outgoing requests: --source-address <IP> Finally, an option was added to allow importing categories as tags from specific grabbers to avoid mess in category names in your database: In import we've put a set of more enhancements which should prevent creating duplicate videos, categories and tags when running import in multi-threaded mode.
  21. There should be plenty of ready-made solutions which you can find in google, for example this one: https://ageverify.co
  22. Please create support ticket with providing us the URL where you see this and make sure that KVS support access in admin panel is enabled.
  23. This feature comes historically from earlier KVS times. It was decided that premium videos need to have separate set of video formats. This is the most common scenario used at that times, e.g. this one: Standard videos (public and private types, public is available to everybody, private is available to friends or members only): - 360p - 480p Premium videos (videos for PAID access only): - Trailer - 360p - 480p - 720p - 1080p - 4k The idea is that there can be 2 sets of videos on a tube site. One set contains free videos (e.g. public / private with standard set of formats) and another set contains premium videos with HQ formats available. Premium videos are for PAID access only. Such videos SHOULD have a trailer as a teaser for free users to join premium membership. From this concept we have in mind, private videos are just free videos limited either to friends or to free members (e.g. to promote your visitors create a free account to watch more videos). Such videos do not need trailer. One of the most important issues of this concept is that once uploaded a video as a premium you can't change its type to public or private. In 3.9.1 we eased this by adding one more option for individual videos where you can change access level for this particular video. So even if it was uploaded as a premium one, you can change its access level to public and allow all users access it. But its type and set of formats will still remain as premium. Now this concept requires changing. Instead of connecting video type (public, private or premium) to a set of video formats (standard or premium set) we should separate these concepts from one another. It should be possible to create as much sets of formats as needed as a replacement for the current 2 predefined sets of formats. And let admin decide either manually or configure which set of formats should be used for particular videos being added. One possible scenario would be to create 3 sets of formats, one for public, one for private and one for premium videos if needed. Or create only 2 sets of formats: one for public and another for private, and premium videos can use any of these sets. Or have the same formats for all these video types. Or have one set of formats for 4k videos and another set of formats for VR videos and 3rd set of formats for the rest of videos. But this is a plan for 4.0, since a lot of code changes and testing is needed.
×
×
  • Create New...