Jump to content

Tech Support

Administrators
  • Posts

    1,807
  • Joined

  • Days Won

    338

Everything posted by Tech Support

  1. There is no built-in functionality in KVS to require users verify their documents or selfie, but there is alternative way to use Posts functionality for that. Even posts don't allow users to upload files, so it will be required to ask users to upload their documents to their own cloud services and specify secure link to the uploaded file. Here is how to configure that. Creating post type for the task and configuring global block for the users Step 1. Please go to Posts -> Post types and create new post type with the following data: Title: any of your choice, e.g. Identity Confirmation External ID: identity_confirmation Post page URL pattern: 404.php?%ID% Step 2. Go to Website UI -> Global blocks and add block with the following parameters: Block name: Identity Confirmation Block type: post_edit Cache: 86400 (default value) After saving global blocks list you will notice Identity Confirmation block added to the end. Click to edit this block. Step 3. Set the following Template code for this block: {{query_kvs select="single" table="posts_types" where_external_id='identity_confirmation' assign='post_type'}} {{query_kvs select="list" table="posts" where_user_id=$smarty.session.user_id where_post_type_id=$post_type.post_type_id assign='post'}} {{if $async_submit_successful=='true'}} <div class="success" data-fancybox="refresh"> {{$lang.edit_profile.success_message_identity_confirmation_requested}} </div> {{else}} <strong class="popup-title">{{$lang.edit_profile.title_identity_confirmation}}</strong> <div class="popup-holder"> {{if count($post)>0}} <div class="success" data-fancybox="refresh"> {{$lang.edit_profile.success_message_identity_confirmation_requested}} </div> {{elseif $smarty.session.status_id==6}} <div class="success" data-fancybox="refresh"> {{$lang.edit_profile.success_message_identity_confirmed}} </div> {{else}} <form action="{{$lang.urls.identity_confirmation}}" data-form="ajax" method="post"> <div class="generic-error hidden"></div> <p> {{$lang.edit_profile.field_identity_confirmation|replace:"%site%":$lang.project_name|smarty:nodefaults}} </p> <div class="row"> <input type="text" name="content" class="textfield"/> <div class="field-error down"></div> </div> <div class="bottom"> {{if $use_captcha==1}} <label>{{$lang.common_forms.field_captcha_hint}}</label> <div class="captcha-control"> {{if $recaptcha_site_key!=''}} <div data-name="code"> <div data-recaptcha-key="{{$recaptcha_site_key}}" data-recaptcha-theme="{{if $lang.theme.style=='metal'}}dark{{else}}light{{/if}}"></div> <div class="field-error down"></div> </div> {{else}} <div class="image"> <img src="{{$lang.urls.captcha|replace:"%ID%":"signup"}}?rand={{$smarty.now}}" alt="{{$lang.common_forms.field_captcha_image}}"/> <label for="identity_confirmation_code" class="field-label required">{{$lang.common_forms.field_captcha}}</label> <input type="text" name="code" id="identity_confirmation_code" class="textfield" autocomplete="off"/> <div class="field-error up"></div> </div> {{/if}} </div> {{/if}} <input type="hidden" name="action" value="add_new_complete"/> <input type="hidden" name="title" value="Identity Confirmation"/> <input type="submit" class="submit" value="{{$lang.edit_profile.btn_request}}"/> </div> </form> {{/if}} </div> {{/if}} Under block parameters change the following: post_type (String): identity_confirmation duplicates_allowed (On/Off): switch ON optional_description (On/Off): switch ON optional_tags (On/Off): switch ON optional_categories (On/Off): switch ON use_captcha (On/Off): switch ON, if you want users to solve captcha puzzle Step 4. Go to Website UI -> Language files -> default and add the following texts at the end. Feel free to adjust as needed: memberzone.profile_member_action_identity_confirmation = Verify your account here. edit_profile.title_identity_confirmation = Account Verification edit_profile.field_identity_confirmation = Create a selfie of yourself holding an A4 sheet with our site name written by hand:<br/><br/><b>%site%</b><br/><br/>Then upload this image to a cloud of your choice (e.g. Google Docs) and send us link to the uploaded file: edit_profile.success_message_identity_confirmation_requested = Thank you! Your account confirmation request was successfully registered and will be reviewed by our team soon. edit_profile.success_message_identity_confirmed = Your account has already been confirmed. edit_profile.btn_request = Submit Request edit_video.warning_upload = Only verified accounts can upload videos. urls.identity_confirmation = /confirm-account/ Step 5. You need to edit .htaccess file that is located in www root with your FTP client, or any other File Manager that might be provided by your server panel. Add the following line (could be added in the beginning, or next to RewriteRule ^delete-profile/$): RewriteRule ^confirm-account/$ index.php?mode=async&function=get_block&block_id=post_edit_identity_confirmation&global=true [L,QSA] Changing upload block to allow upload only for verified users To be noted, it will be required to use webmaster status to manually control which users are allowed to upload. In member profile editor in admin panel you should manually change member status to webmaster as a result of account verification process. Step 6. In order to change video upload block behavior, please go to Website UI -> Theme settings and scroll down to Functionality options group. Click on Video Edit link there to open video upload block settings. In Template code, your first line should look like this: {{if $async_submit_successful=='true'}} If it has something else, your video edit template is modified and you will need to adjust the proposed code to your template changes. The proposed code is to replace this line with this block: {{if $smarty.session.status_id!=6}} <div class="headline"> <h2> {{$lang.edit_profile.title_identity_confirmation}} </h2> </div> <div class="box"> {{$lang.edit_video.warning_upload}} <a href="{{$lang.urls.identity_confirmation}}" data-fancybox="ajax" style="text-decoration: underline; font-weight: bold">{{$lang.memberzone.profile_member_action_identity_confirmation}}</a> </div> {{elseif $async_submit_successful=='true'}} You may notice that we actually leave the old line almost there, with slightly changed from {{if}} to {{elseif}} syntax. This template change will hide video upload form for non-webmaster users and instead will show a link to verify their account: Step 7. However this may not stop bots, that could upload bypassing the actual site GUI, so you may need to add some small additional protection to make sure that bots can't upload as well. In the same video edit block settings activate the following parameters: max_duration (Integer): 1 max_duration_webmaster (Integer): 9999 These settings mean that all users will not be able to upload virtually any video, because of duration limit of 1 second. While webmaster users will be able to upload videos with duration up to 9999 seconds. So only webmaster users can actually upload videos. Testing all together Now log in with non-webmaster profile and go to upload page. You should see link to verify your account. If you see a white or partial page, you did wrong paste at step #6. You can go to Website UI -> Change history and look at your recent change to video edit block. There you can find original template version and return it back if needed, or check what you did wrong here. By clicking the account verification link you should see the popup to verify account. Submit something into the text field. This should show you success message that your data is submitted. If it shows any error, you did something wrong at step #3 with block parameters. If you go to admin panel start page, you may notice that it will show you alert like the following: Click this link and you will see Account Verification post submitted by you seconds ago. Open it and check the link under Content area. If you want to verify it, you first need to manually open user profile editor for this user and change their status to webmaster. Then approve this account verification post. If you want to reject it, you just need to delete it, so that user can re-submit again. Unfortunately KVS for now doesn't support any automated messages to be sent to users on different admin actions; if you want to notify user about some issue with their verification, you will need to manually submit a message to this user via Memberzone -> Messages.
  2. Here are steps to enable this. In Website UI -> Pages -> View Video page locate video_view block and open it for editing. In block template find this line of code: kt_player('kt_player', '{{$config.project_url}}/player/kt_player.swf?v={{$config.project_version}}', '100%', '100%', flashvars); And change it to assign result to player_obj variable: var player_obj = kt_player('kt_player', '{{$config.project_url}}/player/kt_player.swf?v={{$config.project_version}}', '100%', '100%', flashvars); Then add the following block next to it: player_obj.listen('ktVideoFinished', function() { window.location = $('#list_videos_related_videos .item a[href]:first').attr('href'); }); This code should redirect user to the first related video after the current video plays until end.
  3. There is no reason for SEO to parse login or signup pages, this pages are even removed from indexing by default via robots.txt. For sorting pages, maybe SEO experts tell you different things, but personally we think that different sortings of the same data is not something that should be exposed to SEO. These pages are actually duplicates, because they are showing the same data but in different order.
  4. What do you exactly mean by "next on list" please? Do you mean related videos for example, go to the first related video?
  5. Does your KVS version 5.5.0? It should be 5.5.0, because Wordpress plugin relies on some feed functionality that was added to 5.5.0.
  6. Well, not sure I understand their point and how breadcrumbs are connected to pagination... Also in some cases pagination is already present in default theme, but not visible to users. For example this URL: https://www.kvs-demo.com/latest-updates/ You can mouse over pagination links and see they are referring to next pages via URL structure: https://www.kvs-demo.com/latest-updates/2/ https://www.kvs-demo.com/latest-updates/3/ This is done for all major lists. But is excluded for categories, tags, models and etc. for performance reasons - otherwise tonnes of bots would navigate these pages every day and would consume your server resources without any reason. But if you need this, this can be enabled of cause. So the key point of the theme is that users do not see pagination in their browser URLs, but the pagination itself actually transparently exists on the background.
  7. Unfortunately, this is not possible with default theme without intensive theme changes. The structure of theme was designed in such way, that it renders multiple lists on the same page (e.g. search video + albums, profile page with multiple lists). When you have multiple lists on the same page, it is not possible to make a URL pagination for them within the same page. For example, when you have URL like this: https://www.kvs-demo.com/search/madonna/ And you want 2nd page to be https://www.kvs-demo.com/search/madonna/2/ The issue is that you can't paginate both videos and albums to page #2. Because if video list has 5 pages, and albums list have only 2 pages, scrolling to 3rd page will return 404 error, which is the expected behavior because albums list doesn't have page #3 and any other pages greater than 2. So in order to have URL-based pagination, the website must be built in completely another URL structure, for example: https://www.kvs-demo.com/search/madonna/videos/ https://www.kvs-demo.com/search/madonna/videos/2/ https://www.kvs-demo.com/search/madonna/videos/3/ https://www.kvs-demo.com/search/madonna/videos/4/ https://www.kvs-demo.com/search/madonna/videos/5/ https://www.kvs-demo.com/search/madonna/albums/ https://www.kvs-demo.com/search/madonna/albums/2/ And for default theme this means complete theme restructuring. And at the same time this doesn't bring any advantages.
  8. For testing purposes you don't need to upload grabber into KVS plugin. You need to put your CustomGrabberRedporn.php file next to test_grabber.php file in the same directory.
  9. Yes, this would apply. In setup.php for each storage directory (e.g. video screenshot directory) there are 2 variables defined: Filesystem PATH Public serving URL If you want them to be stored locally, but to be served from remote URL, all you need is to change URL variable and leave PATH variable as is.
  10. Please go to Website UI -> Pages -> View Video page -> Video View block and use corresponding block parameters to limit views:
  11. Using video cards requires specific ffmpeg builds and codecs, this means you will need qualified server engineer to build your ffmpeg. Or if providers have ffmpeg pre-built with all the needed nvidia drivers and codecs, this is a good option for video conversion.
  12. I would say not possible to reply this without testing the exact 2 configurations with the same video test. Both parameters are important, CPU clock and the number of cores. Also if you look into modern CPUs, they do not increase clock, but instead they have more performance by increasing the number of cores, and optimizing processing of specific instructions. Try this article: https://techgage.com/article/best-cpu-for-rendering-video-encoding-spring-2021/ There you can find real CPUs and their real encoding times.
  13. Do you mean to manually decide what to do with each title? Then editing via editor is the only possible way for now. No support for grid editing at the moment. If you need to delete some same text from titles, then could be done with direct SQL query (using phpmyadmin for example): update ktvs_videos set title = replace(title, 'xxxxx', '') where gallery_url!=''; NOTE: the code includes filter to affect only videos that were added by grabbers (to avoid accidentally affecting other videos). To apply this replace on all videos you need to remove "where gallery_url!=''" at the end.
  14. Hello, Tonight we were migrating our infrastructure to new servers. It could be possible that some features were temporary unavailable during transition period. For leased licenses, this only affects admin panel and won't affect sites. Apologies for any inconveniences.
  15. We still have much work to do in terms of new admin panel GUI.
  16. Satellite has the same sitemap location as any other KVS site, the sitemap is generated by theme. There are multiple URLs where you can reach your project's sitemap, here are all of them: https://www.kvs-demo.com/sitemap/ https://www.kvs-demo.com/sitemap.xml https://www.kvs-demo.com/sitemap.php Check these URLs in your project and locate which one returns XML file with sitemap.
  17. It is recommended to use another library called yt-dlp: https://github.com/yt-dlp/yt-dlp Youtube-dl library was not supported for almost 6 months, it looks like they have just released a new build, but it may not be stable, also there is no guarantee that they will continue releasing updates in future. Therefore please try to use yt-dlp instead.
  18. KVS features extremely powerful tube grabbers plugin (Plugins -> Grabbers). With this plugin you can import tons of content, even if you don't have any. We will not speculate on whether it is ethic or not to grab content from 3rd party sites, you should decide this yourself. For basic understanding on how to use grabbers plugin please check the corresponding section in this post: There are 3 different ways of how to import content from grabbers and as usual there is no perfect solution and each of them has its advantages and issues. Grabbing as embed codes This is the fastest way to fill your site with many content with few simple clicks. Install grabbers that support embed codes and set Mode of each grabber to Embed. Choose the other needed data you want to grab and submit lists where to grab videos from. Voila! Pros: The fastest way to import tons of content, as only screenshot will be download for each video. No conversion power is required, can be used in virtually any server. No storage and traffic payment is required, since no content is hosted within your server. Cons: You have no control on what is displayed inside embed code. The source site may opt to stop displaying embed codes, or to delete videos, or to redirect all visitors from embed codes to their site. You cannot control advertising that is displayed inside video player. But you can still use your advertising outside the player. No support for video previews. The whole idea of using embed codes is to avoid video files being downloaded to your server. Therefore there is nothing to create video previews from. See also: What video types are supported in KVS tube script and how they are different. Downloading videos as a single source file The idea here is that for each video KVS will download the file of the desired (typically maximum desired) quality, and then treat this file as a video source file to create all the needed formats from it (e.g. 720p, 480p, 1080p and video previews). In order to configure this you need to set grabber Mode to Download option and then choose which Quality you want to download as a source quality: So this option tells KVS that you want grabber to download 1080p file as a source file, and if a video doesn't have this quality - skip it. This will mean that only videos that have at least 1080p quality will be added by grabber. And if a video even has 4K quality, it will be added by grabber and KVS will download its 1080p file (not 4K file). This is normal, because you don't need to download 4K file, which has bigger size if your maximum video format is 1080p. Make sure you save your resources here. The most important fact here is that the downloaded file will be treated as Source file with processing. This will mean that all video files will be fully created by KVS, and you can even configure to cut intros from them and add your own watermark. Pros: You control your videos and player, you can show any advertising that you want inside the player. You do not depend on whether videos are removed from the source site or not. You can cut intro rendered by source site, you can put your watermark on top of theirs. Only 1 file needs to be downloaded, and everything else is created by KVS (but you still depend on the downloading speed for this file). Cons: Slower import speed than for embed codes, as you depend on the speed throttling imposed by source site. Huge conversion power will be required to create all video formats. Video files may have higher size after re-conversion, as KVS by default sets better compression quality then other sites. You may need to adjust compression quality, otherwise it may be a situation that the downloaded source file of 1080p quality is 100Mb, and KVS creates 720p quality (smaller resolution) that is 150Mb on disk - this makes absolutely no sense and should be checked and avoided. Downloading videos as multiple ready-made files This concept is different from the previous one in requiring KVS to download multiple video files of different qualities and uploading them as ready-made files without them being re-converted. In order to use it you need to set grabber Mode to Download and then choose Multiple Quality options similar to this: Configured like this KVS will download 480p, 720p and 1080p files (3 files in total) and will upload them into the corresponding video format slots. 240p and 2160p qualities will be skipped, even if source videos have them. The key fact here is that video files will be uploaded "as-is" without any conversion. This brings certain benefits and certain drawbacks. Pros: You still have full control on videos and player advertising in comparison to embed option. And you don't need any processing power for this, so virtually any server will allow this. Cons: Since KVS needs to download multiple files, the importing speed will be much slower. Since video files will be uploaded "as-is", you can't adjust them in any way, e.g. remove intros or do any watermarking. How grabber download works in KVS and how to make it faster Basically the last 2 scenarios are mostly different on what will be slower in your server environment: video conversion or downloading multiple files. Where download limit comes from? It is normal that source sites don't want to lose their network channel on your project downloading their videos, so they typically impose speed throttling, either per download or per IP. In the first case when you download one file, this file's download speed is limited to 100 mbit/s, when you download another file in parallel, its download speed is limited to 100 mbit/s as well, but the summary of your download speed is now 200 mbit/s. In the latter case no matter how many downloads your start from the same IP, the summary download speed will be limited to 100 mbit/s. So technically there are 2 ways of increasing download speed: Run downloads in parallel (will work if server only restricts speed per download). Run downloads in parallel + from different IPs (will work in all cases). In KVS each grabber creates a separate import task that can itself be executed in multiple threads. You can configure the number of threads per grabber either in grabber settings (when you enable auto-pilot), or for the whole import, when you import set of lists manually. So from the start if you grab videos via multiple grabbers, each grabber downloads its videos in a separate thread and thus you have multiple parallel downloads. You can see how this happens in Administration -> Background tasks -> filter by Status = In process: Here you can see 2 import tasks running in parallel. Each task comes from a separate grabber, each grabber has some download speed limit imposed by its source site, but the whole download speed of your system in increased. If you grab from 8 different sites, then the whole download speed will be ~8 times faster. Then you can also configure multiple threads per each import task, for example 2 threads. This will mean that each import task will be executed in KVS in 2 separate threads and will simply grab different videos from the same source site. This will definitely work to increase download speed for sites that do not have speed throttling by IP. But even for sites that limit download by IP, it may help in some cases. The download limit is configured at streaming servers, and theoretically when you try to download different videos from the same site you may reach different streaming servers, and downloading from 2 different streaming servers using the same IP will not trigger any IP limit, as every streaming server has its own IP limit. In practice if you import random videos from huge sites, you will most likely reach different streaming servers. So increasing the number of threads per grabber may also work to increase the overall download speed. However this comes with an increased risk of your server IP being blocked by source site, since the increased number of import threads will send an increased number of requests to their main site (not only to streaming servers). In order to reduce this risk we recommend to increase Timeout option available in each grabber settings. Timeout means the waiting interval for grabber to send next request to the source site. If your server sends 100s of requests within several minutes, its IP will be most likely banned, as no real user behaves like that. Therefore you should use some reasonable timeout time, which is set to 5 seconds by default, but should be definitely increased if you plan to grab videos 24/7. And each time you increase the number of threads per grabber, you also need to increase timeout so that the total number of requests within 1 hour or so is not increased. Here are simple calculations. Let's say a grabber downloads 1 video in 10:00 minutes. And you have timeout set to 30 seconds. So the whole time for grabber to import a video is 10:30. If you increase the number of threads per grabber to 2, then assuming that each thread will download video the same 10 minutes, the average download speed will be reduced to 5 minutes per video. In order to keep the number of requests same, you will need to increase timeout twofold from 30 to 60. This means that each thread will import 1 video every 11 minutes, but having 2 threads in parallel results in average time per video equals to 11:00/2 = 5:30. If you increase the number of threads to 4 and increase timeout x4 to 120 seconds, then it will be 12:00 minutes (the full time for each thread to process and download video) / 4 threads = 3:00 minutes per video in average. That's much better! And finally if you grab from 3 different sites in parallel you can increase your average importing speed to 1:00 minute per video, or 1440 videos per day. Even if downloading a single video takes 10:00 minutes. Of cause these calculations do not include some unexpected delays, when your site network is overloaded, or when source streaming server is overloaded and etc. The importing speed actually means how fast videos are parsed and downloaded into your site. You can follow importing speed by looking into the number of new video tasks in Administration -> Background tasks section. If the number of new video tasks is small and doesn't grow with time, then importing speed is slower than your conversion engine can consume. You may need to think about further increasing the number of threads per grabber, or adding more grabbers for other sites. If the number of new video tasks is constantly growing, this means that your conversion engine is overloaded and makes no sense to increase importing speed anymore. In the latter case you will need to understand how KVS conversion system works.
  19. Hello, if you created a new album format with watermark and you don't see watermark on big images in albums, then most likely your theme is still showing source images on click. Then you need to go to theme settings and ensure you select this format instead of source in Albums images format option.
  20. For now we don't have plans to add this feature, we think other features are more important.
  21. If you want to show for the current user (the user that is logged in), then you should use the value from user's session: $smarty.session.is_trusted {{if $smarty.session.is_trusted!=1}}Not trusted{{else}}Trusted{{/if}}
  22. Log4j is Java library, KVS is using PHP. We are not affected by this issue.
  23. You can render it like this: {{if $data.is_trusted!=1}}Not trusted{{/if}}
×
×
  • Create New...