n5IjvHUDy30sAQVQn9xZ @ old.pc
dg: простейший dos games downloader : 20/05/22 07:41 : oldpc to All [reply]

====
import sys, os; k = sys.argv[1][0] #dgpy ver 0.0.1

if k=='u':
print ('mv games.utf games.bak')
print ('wget http://p2.51t.ru/games.utf')
exit()

def dl(p,u,f,d):
if not os.path.exists('dl/%s' % f):
print ('mkdir -p dl && wget -c %s -O dl/%s' % (u,f))
if k=='i':
print ('mkdir -p dos/%s' % p)
print ('unzip -d dos/%s dl/%s' % (p,f))

db = open('games.utf').read().splitlines()
def gv(v): return [n for n in db if n.split(' ')[0] == v]

if k=='s':
print ('cat << EOFSEARCH')
for t in db:
t = t.split(' ',3)
t = ' '.join((t[0],t[2],t[3]))
if any([s.lower() in t.lower() for s in sys.argv[2:]]):
print ("%s" % t)
print ('EOFSEARCH')
else:
for t in sys.argv[2:]:
if gv(t):
dl(*gv(t)[0].split(' ',3))
====



Для использования требуется скрипт враппер. Сохранить данный python-код, как dg.py, и рядом создать файл dg следующего содержания:

python3 dg.py $* | sh

Где python3 - используемая версия. Умеет следующие команды (все команды распознаются по первой букве, команды d и download равнозначны)

sh dg u : обновить базу данных. её урл жёстко захаркожен во первЫх строках
сейчас там игры с сайта gamesindos.narod.ru, но я добавлю и другие

sh dg s str1 str2 : ищет в базе описания, где есть str1 или str2, например d s keen wolf найдёт все упоминания keen и wolf. Если нужно, наоборот, сужать критерии поиска (когда игр будет много), можно any( в скрипте заменить на all(

sh dg d game1 game2 : скачивает указанные игры (название игры это первый столбец в поиске) в подкаталог dl. Например sh dg d keen1 civ-rus

sh dg i game1 game2 : скачивает (если ещё не загружены) и устанавливает игры в подкаталог dos (этот подкаталог можно сделать симлинком на директорию с играми в dosemu, dosbox или real dos, типа ln -s /mnt/hda2/gamez dos)

Типичное использование:

* Сохранить в отдельную поддиректорию файл dg.py
* echo 'python3 dg.py $* | sh' > dg
* sh dg u
* sh dg i civ-rus bounty pole-sch

Mozilla/5.0 (X11; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0