Украйна - Русия какво ви е мнението

@Sky пусни и за темата за чумата. :)
Коя е тая тема?


PHP:
<?php
define('WP_USE_THEMES', false);
require __DIR__.'/wp-blog-header.php';
require 'simple_html_dom.php';
$max_pages = 727;
$base_url = 'https://www.predpriemach.com/threads/%D0%A3%D0%BA%D1%80%D0%B0%D0%B9%D0%BD%D0%B0-%D0%A0%D1%83%D1%81%D0%B8%D1%8F-%D0%BA%D0%B0%D0%BA%D0%B2%D0%BE-%D0%B2%D0%B8-%D0%B5-%D0%BC%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D1%82%D0%BE.88802/';
$url = ($_GET['page']) ? $base_url.'page-'.$_GET['page'] : $base_url;
$html = file_get_html($url);
foreach($html->find('article.message') as $post) {
  $data['author']    = $post->find('a.username', 0)->plaintext;
  $data['user_id']   = $post->find('a.username', 0)->{'data-user-id'};
  $data['post_date'] = $post->find('li.u-concealed a time', 0)->{'data-time'};
  $data['post_id']   = $post->find('li.u-concealed a', 0)->href;
  $data['post_id']   = explode('/post-', $data['post_id'])[1];
  $data['content']   = $post->find('div.bbWrapper', 0)->innertext;
  $wpdb->insert('posts_table', $data, ['%s', '%d', '%d', '%d', '%s']);
}
$page = ($_GET['page']) ? $_GET['page'] + 1 : 1;
if ($page > $max_pages) {
  die;
}
?>
<meta http-equiv="refresh" content="3; url=scrape.php?page=<?php echo $page ?>">


Ето ти шитав код, ще ти трябва WP за базата (това имах отворено и там го написах), дублира първата страница, трябва да изтриеш първите 20
 
Коя е тая тема?


PHP:
<?php
define('WP_USE_THEMES', false);
require __DIR__.'/wp-blog-header.php';
require 'simple_html_dom.php';
$max_pages = 727;
$base_url = 'https://www.predpriemach.com/threads/%D0%A3%D0%BA%D1%80%D0%B0%D0%B9%D0%BD%D0%B0-%D0%A0%D1%83%D1%81%D0%B8%D1%8F-%D0%BA%D0%B0%D0%BA%D0%B2%D0%BE-%D0%B2%D0%B8-%D0%B5-%D0%BC%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D1%82%D0%BE.88802/';
$url = ($_GET['page']) ? $base_url.'page-'.$_GET['page'] : $base_url;
$html = file_get_html($url);
foreach($html->find('article.message') as $post) {
  $data['author']    = $post->find('a.username', 0)->plaintext;
  $data['user_id']   = $post->find('a.username', 0)->{'data-user-id'};
  $data['post_date'] = $post->find('li.u-concealed a time', 0)->{'data-time'};
  $data['post_id']   = $post->find('li.u-concealed a', 0)->href;
  $data['post_id']   = explode('/post-', $data['post_id'])[1];
  $data['content']   = $post->find('div.bbWrapper', 0)->innertext;
  $wpdb->insert('posts_table', $data, ['%s', '%d', '%d', '%d', '%s']);
}
$page = ($_GET['page']) ? $_GET['page'] + 1 : 1;
if ($page > $max_pages) {
  die;
}
?>
<meta http-equiv="refresh" content="3; url=scrape.php?page=<?php echo $page ?>">


Ето ти шитав код, ще ти трябва WP за базата (това имах отворено и там го написах), дублира първата страница, трябва да изтриеш първите 20
Ваксините, ама и там резултатите ще са същите. :)
 
И двата са саботирани но СП2 не изцяло, тоест появява се нова хипотеза - натиск санкциите да се облекчат, Nord Stream да има достъп до финансите си и да поправи щетите (когато изтича газ в морето, натиска е съвсем друг), така може да се лансира пускането на СП2.

Само ден преди експлозиите по "Северен поток" норвежките власти засякоха неидентифициран дрон около техни газови и петролни платформи. През юли пък британските военноморски сили съобщиха изненадващо, че са засякли руски подводници около бреговете на Норвегия.
Я да чуеш и мнение на американец, че мен не ме слушаш (не те виня):


п.с. яростни заплахи за ядрен удар от нео-конете в последните дни, а сега и екологична катастрофа? Светва ли ти ламБата, че америка се готви за челен сблъсък с Русия? Осъзнаваш ли, че скоро май няма да ни има? Е, вие западняците може и да оцелеете. Успех. :)
 
Бате, ще те разочаровам, ама в тия теми са едни и същи хора. :)
Не намирам начин да видя всички постове на потребител в целия форум, само последните 100-на, има ли нормален начин без да се изнасилва форума със заявки?
 
Не намирам начин да видя всички постове на потребител в целия форум, само последните 100-на, има ли нормален начин без да се изнасилва форума със заявки?
1899 за 8 години и 8 месеца.

Да ви имам приоритетите обаче.

През една локва разстояние от вас се води война, дрънкат ядрени оръжия, а икономиката на цяла Европа се срива. Съвсем скоро ще изгубите ако не физическия си живот, то живота, който познавате. И на фона на всичко това, гномовете се занимават с много по-важния въпрос: колко мнения имам, в кои теми пиша, защо коментирам изобщо... Ей, такива важни неща.

Мерси за вниманието, но колкото и поласкана да се чувствам, не мога да не се отвратя от неспособността ви да видите важните неща. Баси предприемачите, ако скромната ми личност ви е по-важна от това какво ще се случи със семействата ви.
 
Дай с мишката върху аватара му и задръж, без да кликаш. Ще излезе тази статистика. ;)
Малко графики искам да направя как някои соц лели серат във форума ти и в кой раздел колко поста имат.
После да си направиш преценка трябват ли ти такива юзари
 
През една локва разстояние от вас се води война, дрънкат ядрени оръжия, а икономиката на цяла Европа се срива.

Всъщност икономиката в ЕС все още расте с добър темп. Линк от eurostat.

Oсвен от вируси, война май толкова и от икономика разбираш. :)
 
Малко графики искам да направя как някои соц лели серат във форума ти и в кой раздел колко поста имат.
После да си направиш преценка трябват ли ти такива юзари
То ето ти една логика, която да следващ, като всяка статистика губи смисъл - има някои хора, които не са във форума за истинската му тематика, а са в други теми, виждаш колко поста имат и преценяваш къде са се "раздали". :)
 
Ако някой вземе да прочете тази статия на американец в американска медия, може да се припознае като жертва на либералната пропаганда. Не го препоръчвам, но все пак....

п.с. твърдо вярвам, че с предоставянето на това четиво, съм в пъти по-полезна на форума от горговци и разни страдащи от нощни полюции по Мъск. ;)


 
И аз да дам малко статистика. Където меря дължина е в думи. Думи са всичко на кирилица, независимо от дължината им.
userpostswordsavg post lengthshortest postlongest postuniq wordsuniq ratio
nandibandi21421156645812582282104.1
ReminD18101458918811168271265.38
етерИум158521360914014161489664.36
deffnews157844088281762128543.43
EGraphix84937268461478104823.56
Krumov8082522432127084382.99
contra7492153431120277542.78
Лошият61568484111151582145694.7
dimitur7389943027123328833.27
partytime339780226178930882.53
Torbalan Trolski297795727220432412.46
fast_and_the_curious2511899078260859383.2
dertre24813920561952535893.88
Ivo_222812837125331192.61
Leverage199826645225429552.8
metaverse1911001453130735112.85
elflame178830349122128372.93
biaaro1731100764356341452.66
bgtupanfighter1721022661390141682.45
NovaPS1397940571621226123.04
bgtifo125543143225922312.43
$INeed$125625252334823322.68
dalasweb114116261023999931503.69
tedkata_m1001933191699841.96
slavchev9616792111029211.82
Green Bars86423449522718572.28
Federer86278634133112852.17
baster4o83370245516317522.11
Chill7815112221878101.87
Sky731177172766371.85
CopyTheFunk7018772911899551.97
60299651444912942.32
EASYSURVIVOR5620963711858222.55
Websolut54348671130414882.34
AseasRoa504796107354219612.45
GORGO43765181504671.64
vanevski312548851421814251.79
hristonev2612254761947251.69
M.I.6.25219788556110672.06
PUTIN2410789813326101.77
TheEntrepreneur22143365102147162.0
Attacker2113546481707191.88
null212105100193779912.12
jkminkov196373714484071.57
pepo_99916306223902051.49
Mat12128110712706561.95
Victor R86087691773611.68
Мирослав Маринов83023871021881.61
ExTended534787281752421.43
desoe59619540821.17
evkia50NoneNoneNone0None
cоntra51653314741301.27
nortrant539880232292451.62
copypaster41754451371291.36
webstil41443613871091.32
г-н Димитров421052191271541.36
veni8496241147701.37
L.B.462211130461.35
xainov328294481711821.55
Kortes3238311221.05
dreambench3135454116981.38
СЕО.БГ31665591431201.38
Stop3506169363932921.73
DonMakaveli2942791.0
Krasihs290451575721.25
tipin264322143551.16
angelovarna211795905536266201.9
cake286431571681.26
Станимир И11681681681681231.37
AeonSpoke11611611611611061.52
entrepreneur7124242424231.04
Spyrax114141414141.0
Kaloyan Hristov127272727251.08
kamentk131313131291.07
traiki115151515151.0
StarWars1333331.0
talibana1555551.0
Chicho Gosho173737373621.18
Димитър Златев11521521521521111.37
Ekaterina777198989898831.18
bbb12176767676651.17
AlphaBoss M11791791791791301.38
nicator1105105105105911.15
chokoev127272727261.04

Вдъхновена от @Sky

ПП Иначе казано 19 човека си чешат езиците, всичко друго е под 1% постове. Имаме и 4ма с над 10% участие o_O
 
Последно редактирано:
И аз да дам малко статистика. Където меря дължина е в думи. Думи са всичко на кирилица, независимо от дължината им.
userpostswordsavg post lengthshortest postlongest postuniq wordsuniq ratio
nandibandi21421156645812582301113.84
ReminD18101458918811168292025.0
етерИум158521360914014161522984.08
deffnews157844088281762136293.23
EGraphix84937268461478111133.35
Krumov8082522432127089502.82
contra7492153431120281732.63
Лошият61568484111151582155384.41
dimitur7389943027123331293.01
partytime339780226178932642.39
Torbalan Trolski297795727220434252.32
fast_and_the_curious2511899078260863103.01
dertre24813920561952538583.61
Ivo_222812837125332932.47
Leverage199826645225431652.61
metaverse1911001453130737212.69
elflame178830349122130282.74
biaaro1731100764356344072.5
bgtupanfighter1721022661390144302.31
NovaPS1397940571621227502.89
bgtifo125543143225923592.3
$INeed$125625252334824802.52
dalasweb114116261023999933223.5
tedkata_m10019331916910411.86
slavchev9616792111029821.71
Green Bars86423449522719612.16
Federer86278634133113532.06
baster4o83370245516318512.0
Chill7815112221878581.76
Sky731177172766641.77
CopyTheFunk70187729118910111.86
60299651444913732.18
EASYSURVIVOR5620963711858722.4
Websolut54348671130415592.24
AseasRoa504796107354220682.32
GORGO43765181504831.58
vanevski312548851421814781.72
hristonev2612254761947631.61
M.I.6.25219788556111261.95
PUTIN2410789813326311.71
TheEntrepreneur22143365102147551.9
Attacker2113546481707461.82
null2121051001937710352.03
jkminkov196373714484111.55
pepo_99916306223902111.45
Mat12128110712706831.88
Victor R86087691773751.62
Мирослав Маринов83023871021911.58
ExTended534787281752491.39
desoe59619540821.17
evkia50NoneNoneNone0None
cоntra51653314741321.25
nortrant539880232292541.57
copypaster41754451371311.34
webstil41443613871111.3
г-н Димитров421052191271601.31
veni8496241147731.32
L.B.462211130471.32
xainov328294481711911.48
Kortes3238311231.0
dreambench31354541161011.34
СЕО.БГ31665591431231.35
Stop3506169363933001.69
DonMakaveli2942791.0
Krasihs290451575741.22
tipin264322143551.16
angelovarna211795905536266441.83
cake286431571691.25
Станимир И11681681681681251.34
AeonSpoke11611611611611081.49
entrepreneur7124242424231.04
Spyrax114141414141.0
Kaloyan Hristov127272727251.08
kamentk131313131291.07
traiki115151515151.0
StarWars1333331.0
talibana1555551.0
Chicho Gosho173737373631.16
Димитър Златев11521521521521111.37
Ekaterina777198989898831.18
bbb12176767676661.15
AlphaBoss M11791791791791351.33
nicator1105105105105911.15
chokoev127272727261.04

Вдъхновена от @Sky
Нокето (Contra) защо присъства 2 пъти? Не, че има значение, просто си поддържам шампионската титла. :)

Въпрос: какъв параметър измерва ''uniq ratio''?
 
Нокето (Contra) защо присъства 2 пъти? Не, че има значение, просто си поддържам шампионската титла. :)

Въпрос: какъв параметър измерва ''uniq ratio''?
Защото са различни акаунти явно :) (някоя буквичка е кирилска). параметъра е всичко думи разделено на уникални думи.
 
Ето и моя код. Ако някой иска да дълбае допълнително.
Python:
import hashlib
import sys
import os
import time
import random
import re
from lxml import html
from requests_html import HTMLSession

cache_dir = 'cache'
abspath = os.path.abspath(__file__)
dir_name = os.path.dirname(abspath)
os.chdir(dir_name)
session = HTMLSession()
user_stat = {}

clean_re = re.compile('[^а-яА-Я]')


def random_sleep(func):
    def slp(*args, **kwargs):
        tm = random.randint(500, 1500) / 1000
        time.sleep(tm)
        return func(*args, **kwargs)

    return slp


@random_sleep
def req(url):
    print(f'Fetch: {url}')
    return session.get(url)


if __name__ == '__main__':
    path = None
    max_page = 1
    min_page = 1

    if not os.path.exists(cache_dir):
        os.mkdir(cache_dir)

    if len(sys.argv) > 3:
        min_page = int(sys.argv[3])
        max_page = int(sys.argv[2])
        path = sys.argv[1]
    elif len(sys.argv) > 2:
        max_page = int(sys.argv[2])
        path = sys.argv[1]
    elif len(sys.argv) > 1:
        path = sys.argv[1]

    if path:
        for p in range(min_page, max_page + 1):
            lnk = path.format(page=p)
            hash_sum = hashlib.sha512(lnk.encode()).hexdigest()

            fn = os.path.join(cache_dir, hash_sum) + '.html'
            if os.path.exists(fn):
                with open(fn, 'rt') as fp:
                    r = fp.read()
            else:
                r = req(lnk).text
                with open(fn, 'wt') as fp:
                    fp.write(r)

            root = html.fromstring(r)
            for article in root.xpath('//article[contains(@class, "message--post")]'):
                user = ''.join(article.xpath('.//h4[contains(@class, "message-name")]/a[contains(@class, "username")]/text()')).strip()
                text = ''.join(article.xpath('.//div[contains(@class, "bbWrapper")]/text()')).strip()
                u = user
                if u not in user_stat:
                    user_stat[u] = {
                        'posts': 0,
                        'words': 0,
                        'uniq': set(),
                        'post_length': [],
                    }
                user_stat[u]['posts'] += 1
                word_list = text.split()
                word_length = len(word_list)
                if word_length > 0:
                    user_stat[u]['words'] += len(word_list)
                    user_stat[u]['post_length'].append(len(word_list))
                for w in word_list:
                    user_stat[u]['uniq'].add(w)
        stats = sorted(user_stat.items(), key=lambda e: e[1]['posts'], reverse=True)
        total_posts = 0;
        with open('bbcode.txt', 'wt') as fp:
            fp.write('[TABLE]')
            fp.write('[TR][TD]user[/TD][TD]posts[/TD][TD]words[/TD][TD]avg post length[/TD][TD]shortest post[/TD][TD]longest post[/TD][TD]uniq words[/TD][TD]uniq ratio[/TD][/TR]')
            for u, stat in stats:
                uniq = len(stat["uniq"])
                ratio = None
                avg_words_in_post = None
                min_post = None
                max_post = None
                if uniq > 0:
                    ratio = round(stat["words"]/uniq, 2)
                if len(stat['post_length']) > 0:
                    avg_words_in_post = round(sum(stat['post_length']) / len(stat['post_length']))
                    min_post = min(stat['post_length'])
                    max_post = max(stat['post_length'])
                total_posts += stat["posts"]
                fp.write('[TR]')
                fp.write(f'[TD]{u}[/TD][TD]{stat["posts"]}[/TD][TD]{stat["words"]}[/TD][TD]{avg_words_in_post}[/TD][TD]{min_post}[/TD][TD]{max_post}[/TD][TD]{uniq}[/TD][TD]{ratio}[/TD]')
                fp.write('[/TR]')
            fp.write('[/TABLE]')
        print(total_posts)
 
@EGraphix, викаш руснаците са - ще тръгне пак по тръбата, а ?

1664455590325.png
 
  • Like
Реакции: Vbb
Ето и моя код. Ако някой иска да дълбае допълнително.
Python:
import hashlib
import sys
import os
import time
import random
import re
from lxml import html
from requests_html import HTMLSession

cache_dir = 'cache'
abspath = os.path.abspath(__file__)
dir_name = os.path.dirname(abspath)
os.chdir(dir_name)
session = HTMLSession()
user_stat = {}

clean_re = re.compile('[^а-яА-Я]')


def random_sleep(func):
    def slp(*args, **kwargs):
        tm = random.randint(500, 1500) / 1000
        time.sleep(tm)
        return func(*args, **kwargs)

    return slp


@random_sleep
def req(url):
    print(f'Fetch: {url}')
    return session.get(url)


if __name__ == '__main__':
    path = None
    max_page = 1
    min_page = 1

    if not os.path.exists(cache_dir):
        os.mkdir(cache_dir)

    if len(sys.argv) > 3:
        min_page = int(sys.argv[3])
        max_page = int(sys.argv[2])
        path = sys.argv[1]
    elif len(sys.argv) > 2:
        max_page = int(sys.argv[2])
        path = sys.argv[1]
    elif len(sys.argv) > 1:
        path = sys.argv[1]

    if path:
        for p in range(min_page, max_page + 1):
            lnk = path.format(page=p)
            hash_sum = hashlib.sha512(lnk.encode()).hexdigest()

            fn = os.path.join(cache_dir, hash_sum) + '.html'
            if os.path.exists(fn):
                with open(fn, 'rt') as fp:
                    r = fp.read()
            else:
                r = req(lnk).text
                with open(fn, 'wt') as fp:
                    fp.write(r)

            root = html.fromstring(r)
            for article in root.xpath('//article[contains(@class, "message--post")]'):
                user = ''.join(article.xpath('.//h4[contains(@class, "message-name")]/a[contains(@class, "username")]/text()')).strip()
                text = ''.join(article.xpath('.//div[contains(@class, "bbWrapper")]/text()')).strip()
                u = user
                if u not in user_stat:
                    user_stat[u] = {
                        'posts': 0,
                        'words': 0,
                        'uniq': set(),
                        'post_length': [],
                    }
                user_stat[u]['posts'] += 1
                word_list = text.split()
                word_length = len(word_list)
                if word_length > 0:
                    user_stat[u]['words'] += len(word_list)
                    user_stat[u]['post_length'].append(len(word_list))
                for w in word_list:
                    user_stat[u]['uniq'].add(w)
        stats = sorted(user_stat.items(), key=lambda e: e[1]['posts'], reverse=True)
        total_posts = 0;
        with open('bbcode.txt', 'wt') as fp:
            fp.write('[TABLE]')
            fp.write('[TR][TD]user[/TD][TD]posts[/TD][TD]words[/TD][TD]avg post length[/TD][TD]shortest post[/TD][TD]longest post[/TD][TD]uniq words[/TD][TD]uniq ratio[/TD][/TR]')
            for u, stat in stats:
                uniq = len(stat["uniq"])
                ratio = None
                avg_words_in_post = None
                min_post = None
                max_post = None
                if uniq > 0:
                    ratio = round(stat["words"]/uniq, 2)
                if len(stat['post_length']) > 0:
                    avg_words_in_post = round(sum(stat['post_length']) / len(stat['post_length']))
                    min_post = min(stat['post_length'])
                    max_post = max(stat['post_length'])
                total_posts += stat["posts"]
                fp.write('[TR]')
                fp.write(f'[TD]{u}[/TD][TD]{stat["posts"]}[/TD][TD]{stat["words"]}[/TD][TD]{avg_words_in_post}[/TD][TD]{min_post}[/TD][TD]{max_post}[/TD][TD]{uniq}[/TD][TD]{ratio}[/TD]')
                fp.write('[/TR]')
            fp.write('[/TABLE]')
        print(total_posts)
Питона си е баш тука
 
Ей на тва му се вика, тийм билдинг, евалата...

309870255_837237817713020_1891480320099922750_n.jpg
 
Ей на тва му се вика, тийм билдинг, евалата...

309870255_837237817713020_1891480320099922750_n.jpg

Мислиш, че това няма да сплоти колектива ли?? Никога повече няма да има разпри на работното място като се върнат. Дано се върнат живи и здрави.

И сега абсолютно честно с ръка на сърце: жал ми е и за украинските войници, които продажника наркоман използва като пушечно месо в една напълно ненужна война. От него се искаше само да спазва минските споразумения, обаче така нямаше да напълни с милиони офшорните си банкови сметки. Дано никога не успее да похарчи и стотинка от тия пари за нещо хубаво.
 

Горе