LINUX.ORG.RU
ФорумTalks

(пятница) Нужна помощь с bash-юзерскриптом для лора

 


1

1

Скрипт выдает случайную тему из толксов за все время существования лора

#!/bin/bash

start_year="2000"
end_year=`date +%Y`
random_year="$((start_year + RANDOM % (end_year - start_year)))"
archive_url="http://www.linux.org.ru/forum/talks/$random_year/$(($RANDOM % 12 + 1))/"
echo "$archive_url"
topics=(`curl --silent "$archive_url" | perl -lane 'if(/([0-9]+)\?lastmod/){print $1;}'`)
topic=${topics[$(($RANDOM % ${#topics[@]}))]}
url="http://www.linux.org.ru/forum/talks/$topic";
xdg-open $url;

первый косяк: константа '2000000' и кривое распределение выпадающих чисел в начале времен

второй косяк: выпадают все все темы, видимо надо ловить 302 ответ и парсить редирект, да?

upd. новая версия скрипта вроде без косяков

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Ты бы ТЗ сформулировал...

Вот скрипт, который выводит случайный тред из talks.

#!/bin/sh

TOP=`wget http://www.linux.org.ru/forum/talks/ -o /dev/null -O - | grep '<a href="/forum/talks/' | sed "s/^.*<a href=\"\/forum\/talks\/\([0123456789]*\).*/\1/g" | sort -rn | head -n 1`
echo "Top thread: $TOP"

while true; do
	THREAD=`echo $RANDOM$RANDOM$RANDOM`
	
	let "THREAD%=$TOP"
	
	wget "http://www.linux.org.ru/forum/talks/$THREAD" -o /dev/null -O /dev/null
	
	if [[ "$?" == "0" ]]; then
		echo "http://www.linux.org.ru/forum/talks/$THREAD"
		exit
	fi
	echo "Skipping $THREAD..."
		
done

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

зачем яб использовал рандом если нужно скачать все, ты что скрипт не читал?

конечно нужна случайная из архива, собственно вроде работает новая версия, правда требует perl

Deleted
()
Ответ на: комментарий от Deleted

ты что скрипт не читал?

Если хочешь чтобы помогли, облегчай максимально задачу тому, кто согласился помогать; в данном случае пиши ТЗ человеческим языком а не скриптом.

зачем яб использовал рандом если нужно скачать все,

Что, из любого архива по сслыке www.linux.org.ru/forum/talks/archive/ ? Если да, то мой скрипт делает то, что нужно, так как в списке архивов есть «2014 Январь (590)», что как бы намекает.

Или сформулируй твое определение «архив».

Kroz ★★★★★
()

А ведь с пятницой ты немного опоздал :D

nexfwall ★★★★
()
Ответ на: комментарий от Kroz

ну ты теоретик, блин, в твоем текущем скрипте вылезет любой тред а не только толксы, кроме того у тебя лишний запрос

Deleted
()
Ответ на: комментарий от Deleted

Я практик, так как выдаю рабочий код согласно сформулированной задаче. libastral не работает, это да.

А тебе имеет смысл научиться формулировать ТЗ хотя бы на русском и благодарить за помощь или даже попытку. А еще отмечать темы как «решенная» если вопросов больше нет.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

выдаю рабочий код согласно сформулированной задаче

ты выдал бестолковый ddos посредством wget, видимо на чтение поста ты потратил еще меньше времени

Deleted
()
Ответ на: комментарий от Deleted

ты выдал бестолковый ddos посредством wget

То есть ты даже не пытался... Теоретик.

ddos

*facepalm
Нет, пожалуй у тебя даже с теорией плохо...

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

мусье практикующий индус? решить задачу в минимум два запроса этот опыт не пропьешь, да 8)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.