[#] dg: простейший dos games downloader
oldpc(51t, 2) — All
2022-05-20 15:41:00



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://ii.blcat.ru/s/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

(upd: изменена ссылка на games.utf)

[#] Re: dg: простейший dos games downloader
tuple(ping,54) — oldpc
2024-10-15 07:43:40


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

Зачем нужен враппер? Можно же тот же самый питоновский файлик использовать через python3:
$ python3 dg.py i civ-rus bounty pole-sch

Или ещё проще - добавить шебанг в начало питоновского файла ("#!/usr/bin/env python3") и вызывать вот так:
$ ./dg.py i civ-rus bounty pole-sch

[#] Re: dg: простейший dos games downloader
iiii(ping,48) — tuple
2024-10-15 20:30:27


> Зачем нужен враппер?

потому что для краткости кода скрипт выдаёт shell-команды, и их надо исполнять :)

там же в конце написано | sh