<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>discuz Archives - CNERIS</title>
	<atom:link href="https://cneris.com/es/tag/discuz/feed/" rel="self" type="application/rss+xml" />
	<link>https://cneris.com/es/tag/discuz/</link>
	<description></description>
	<lastBuildDate>Sat, 28 Sep 2024 15:47:11 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>
	<item>
		<title>Script en Python para loggear y postear en un foro Discuz</title>
		<link>https://cneris.com/es/script-en-python-para-loggear-y-postear-en-un-foro-discuz/</link>
					<comments>https://cneris.com/es/script-en-python-para-loggear-y-postear-en-un-foro-discuz/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 28 Sep 2024 15:47:11 +0000</pubDate>
				<category><![CDATA[Administración de Sistemas]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[discuz]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[posting]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scripting]]></category>
		<guid isPermaLink="false">https://cneris.com/?p=2259</guid>

					<description><![CDATA[<p>#!/usr/bin/python3 # -*- coding: utf-8 -*- import logging import re import requests class AutoDiscuz: LOGIN_URL = "/member.php?mod=logging&amp;action=login&amp;loginsubmit=yes" LOGIN_POST = {"username": "", "password": ""} def __init__(self, forum_url, user_name, password): """初始化论坛 url、用户名、密码和代理服务器.""" self.forum_url = forum_url self.user_name = user_name self.password = password self.formhash = None self.is_login = False self.session = requests.Session() logging.basicConfig(level=logging.INFO, format="[%(levelname)1.1s %(asctime)s] %(message)s") def login(self): """登录论坛.""" [...]</p>
<p>The post <a href="https://cneris.com/es/script-en-python-para-loggear-y-postear-en-un-foro-discuz/">Script en Python para loggear y postear en un foro Discuz</a> appeared first on <a href="https://cneris.com/es">CNERIS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>#!/usr/bin/python3<br />
# -*- coding: utf-8 -*-</p>
<p>import logging<br />
import re</p>
<p>import requests</p>
<p>class AutoDiscuz:<br />
LOGIN_URL = «/member.php?mod=logging&amp;action=login&amp;loginsubmit=yes»<br />
LOGIN_POST = {«username»: «», «password»: «»}</p>
<p>def __init__(self, forum_url, user_name, password):<br />
«»»初始化论坛 url、用户名、密码和代理服务器.»»»<br />
self.forum_url = forum_url<br />
self.user_name = user_name<br />
self.password = password<br />
self.formhash = None<br />
self.is_login = False<br />
self.session = requests.Session()<br />
logging.basicConfig(level=logging.INFO,<br />
format=»[%(levelname)1.1s %(asctime)s] %(message)s»)</p>
<p>def login(self):<br />
«»»登录论坛.»»»<br />
url = self.forum_url + AutoDiscuz.LOGIN_URL<br />
AutoDiscuz.LOGIN_POST[«username»] = self.user_name<br />
AutoDiscuz.LOGIN_POST[«password»] = self.password<br />
req = self.session.post(url, data=AutoDiscuz.LOGIN_POST)<br />
if self.user_name in req.text:<br />
self.is_login = True<br />
if self.get_formhash():<br />
logging.info(«Login success!»)<br />
return<br />
logging.error(«Login faild!»)</p>
<p>def get_formhash(self):<br />
«»»获取 formhash.»»»<br />
req = self.session.get(self.forum_url)<br />
rows = re.findall(<br />
r»&lt;input type=\»hidden\» name=\»formhash\» value=\»(.*?)\» /&gt;», req.text)<br />
if len(rows) != 0:<br />
self.formhash = rows[0]<br />
logging.info(«Formhash is: » + self.formhash)<br />
return True<br />
else:<br />
logging.error(«None formhash!»)<br />
return False</p>
<p>def reply(self, tid, subject=»», msg=»6666666666666666666&#8243;):<br />
«»»回帖.»»»<br />
url = self.forum_url + \<br />
«/forum.php?mod=post&amp;action=reply&amp;replysubmit=yes&amp;inajax=1&amp;tid=» + \<br />
str(tid)<br />
post_data = {«formhash»: self.formhash,<br />
«message»: msg, «subject»: subject}<br />
content = self.session.post(url, post_data).text<br />
if «发布成功» in content:<br />
logging.info(«Tid: » + str(tid) + » reply success!»)<br />
return True<br />
else:<br />
logging.error(«Tid: » + str(tid) + » reply faild!»)<br />
return False</p>
<p>def main():<br />
auto_discuz = AutoDiscuz(«http://url», «account», «password»)<br />
auto_discuz.login()<br />
if auto_discuz.is_login:<br />
auto_discuz.reply(tid=1000)</p>
<p>if __name__ == «__main__»:<br />
main()</p>
<p>The post <a href="https://cneris.com/es/script-en-python-para-loggear-y-postear-en-un-foro-discuz/">Script en Python para loggear y postear en un foro Discuz</a> appeared first on <a href="https://cneris.com/es">CNERIS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cneris.com/es/script-en-python-para-loggear-y-postear-en-un-foro-discuz/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Script de tarea programada para reconstruir el número de publicaciones (del foro/grupo)</title>
		<link>https://cneris.com/es/script-de-tarea-programada-para-reconstruir-el-numero-de-publicaciones-del-foro-grupo/</link>
					<comments>https://cneris.com/es/script-de-tarea-programada-para-reconstruir-el-numero-de-publicaciones-del-foro-grupo/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sat, 28 Sep 2024 15:33:53 +0000</pubDate>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Discuz]]></category>
		<category><![CDATA[actualizar foro]]></category>
		<category><![CDATA[discuz]]></category>
		<guid isPermaLink="false">https://cneris.com/?p=2247</guid>

					<description><![CDATA[<p>Todos los que usan el foro Discuz! saben que si el mecanismo anti-spam no está bien implementado, muchos bots "visitarán" el foro. Aunque podemos bloquear y eliminar todas las publicaciones de dichos usuarios para eliminar este "spam", el contenido de esas "publicaciones de spam" aún permanecerá en la sección de "Última publicación" en la página [...]</p>
<p>The post <a href="https://cneris.com/es/script-de-tarea-programada-para-reconstruir-el-numero-de-publicaciones-del-foro-grupo/">Script de tarea programada para reconstruir el número de publicaciones (del foro/grupo)</a> appeared first on <a href="https://cneris.com/es">CNERIS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Todos los que usan el foro Discuz! saben que si el mecanismo anti-spam no está bien implementado, muchos bots «visitarán» el foro. Aunque podemos bloquear y eliminar todas las publicaciones de dichos usuarios para eliminar este «spam», el contenido de esas «publicaciones de spam» aún permanecerá en la sección de «Última publicación» en la página principal del foro. Esto es especialmente evidente en foros con poco tráfico y pocas publicaciones (los foros con alta frecuencia de publicación experimentan menos este problema), donde durante mucho tiempo la sección de «Última publicación» está llena de contenido «basura». Por lo tanto, necesitamos reconstruir el contenido de «Última publicación».</p>
<p>Inicie sesión en el backend de Discuz!—Herramientas—Actualizar estadísticas del foro—Reconstruir número de publicaciones del foro, y envíelo manualmente.</p>
<p>Sin embargo, esta función necesita ejecutarse manualmente. Ahora, se ha creado el siguiente script de tarea programada: Lógica de ejecución: Anteriormente, necesitaba ser enviado manualmente. Si localizamos el script de envío (admincp_counter.php), podemos modificarlo para que sea un script de tarea programada de Discuz! y, siguiendo el método de configuración de tareas programadas de Discuz!, copiar el siguiente código en cron_update_lastpost.php y colocarlo en la ruta especificada.</p>
<p>&lt;?php<br />
/**<br />
* @cron_update_lastpost.php<br />
* @重建(论坛/群组)帖数 的计划任务脚本<br />
* @2013-03-25 by AndyZhang<br />
*<br />
*/</p>
<p>if(!defined(&#8216;IN_DISCUZ&#8217;)) {<br />
exit(&#8216;Access Denied&#8217;);<br />
}</p>
<p>$pertaskinit = 15; //默认每个循环更新数量<br />
$pertask = isset($_GET[&#8216;pertask&#8217;]) ? intval($_GET[&#8216;pertask&#8217;]) : $pertaskinit;<br />
$current = isset($_GET[&#8216;current&#8217;]) &amp;&amp; $_GET[&#8216;current&#8217;] &gt; 0 ? intval($_GET[&#8216;current&#8217;]) : 0;<br />
$processed = 1;</p>
<p>while ($processed) {<br />
$queryf = C::t(&#8216;forum_forum&#8217;)-&gt;fetch_all_fids(1, », », $current, $pertask);<br />
if($queryf[0][&#8216;fid&#8217;]) {<br />
foreach($queryf as $forum) {<br />
$processed = 1;<br />
$threads = $posts = 0;<br />
$threadtables = array(&#8216;0&#8217;);<br />
$archive = 0;<br />
foreach(C::t(&#8216;forum_forum_threadtable&#8217;)-&gt;fetch_all_by_fid($forum[&#8216;fid&#8217;]) as $data) { //板块存档表<br />
if($data[&#8216;threadtableid&#8217;]) {<br />
$threadtables[] = $data[&#8216;threadtableid&#8217;];<br />
}<br />
}<br />
$threadtables = array_unique($threadtables);<br />
foreach($threadtables as $tableid) {<br />
$data = C::t(&#8216;forum_thread&#8217;)-&gt;count_posts_by_fid($forum[&#8216;fid&#8217;], $tableid);<br />
$threads += $data[&#8216;threads&#8217;];<br />
$posts += $data[&#8216;posts&#8217;];<br />
if($data[&#8216;threads&#8217;] == 0 &amp;&amp; $tableid != 0) {<br />
C::t(&#8216;forum_forum_threadtable&#8217;)-&gt;delete($forum[&#8216;fid&#8217;], $tableid);<br />
}<br />
if($data[&#8216;threads&#8217;] &gt; 0 &amp;&amp; $tableid != 0) {<br />
$archive = 1;<br />
}<br />
}<br />
C::t(&#8216;forum_forum&#8217;)-&gt;update($forum[&#8216;fid&#8217;], array(&#8216;archive&#8217; =&gt; $archive));</p>
<p>$thread = C::t(&#8216;forum_thread&#8217;)-&gt;fetch_by_fid_displayorder($forum[&#8216;fid&#8217;]);<br />
$lastpost = «$thread[tid]\t$thread[subject]\t$thread[lastpost]\t$thread[lastposter]»;</p>
<p>C::t(&#8216;forum_forum&#8217;)-&gt;update($forum[&#8216;fid&#8217;], array(&#8216;threads&#8217; =&gt; $threads, &#8216;posts&#8217; =&gt; $posts, &#8216;lastpost&#8217; =&gt; $lastpost));<br />
}<br />
$current += $pertask;<br />
} else {<br />
C::t(&#8216;forum_forum&#8217;)-&gt;clear_forum_counter_for_group();<br />
$processed = 0;<br />
}<br />
}<br />
?&gt;</p>
<p>The post <a href="https://cneris.com/es/script-de-tarea-programada-para-reconstruir-el-numero-de-publicaciones-del-foro-grupo/">Script de tarea programada para reconstruir el número de publicaciones (del foro/grupo)</a> appeared first on <a href="https://cneris.com/es">CNERIS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cneris.com/es/script-de-tarea-programada-para-reconstruir-el-numero-de-publicaciones-del-foro-grupo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
