Уведомления

Группа в Telegram: @pythonsu

#1 Март 1, 2019 14:12:19

KyleshiK
Зарегистрирован: 2019-02-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

Нагуглил скриптик скачивания, поменял ссылку, качает все кул

import requests, shutil, os
s='http://91.92.66.82/trash/ttv-list/ttv.json'
(dirname, filename) = os.path.split(s)
r = requests.get(s, stream=True)
if r.status_code == 200:
with open(filename, ‘wb’) as f:
r.raw.decode_content = True
shutil.copyfileobj(r.raw, f)

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

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

Отредактировано KyleshiK (Март 1, 2019 14:15:13)

Офлайн

#2 Март 1, 2019 14:19:16

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

KyleshiK если раз в два часа то зачем чтобы скрипт висел в памяти постоянно, планировщик - то что нужно.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 1, 2019 14:19:43)

Офлайн

#3 Март 1, 2019 14:23:28

KyleshiK
Зарегистрирован: 2019-02-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

PEHDOM
KyleshiK если раз в два часа то зачем чтобы скрипт висел в памяти постоянно, планировщик - то что нужно.
понял, спасибо

Офлайн

#4 Март 1, 2019 14:45:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

KyleshiK
только как теперь реализовать, что бы он делал это каждые 120 минут?
Напиши третий скрипт, который каждые 120 минут запускает скачивальщик, переименовывает скачанный файл и запускает парсер.

Можно планировщик винды использовать (или ещё какое-нибудь средство типа PowerShell), но его использование создаёт лишнюю связь программы с операционной системой. Если ты поставишь свою программу на другой компьютер, там надо будет заново настраивать планировщик, иначе работать ничего не будет само. И другое дело, если вся логика работы твоей программы находится в одном изолированном проекте. Он не зависит ни от настроек операционной системы, ни от её версии, ни даже от её вида (Windows, Linux, FreeBSD, Android).



Отредактировано py.user.next (Март 1, 2019 14:46:55)

Офлайн

#5 Март 1, 2019 15:31:53

KyleshiK
Зарегистрирован: 2019-02-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

py.user.next
мм, ща буду гуглить)

Офлайн

#6 Март 4, 2019 07:59:37

KyleshiK
Зарегистрирован: 2019-02-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

py.user.next
Находит заданные каналы из списка каналов в файле в JSON-формате исохраняет их в отдельный файл в JSON-формате.

заметил, что скрипт в новосозданном файле после первого знака “{” делает перенос строки “CRLF”), что мешает серверу подтянуть себе этот файл локально с папки (хз че так даже, если выкладываю этот же файл на сайт, то оттуда сервак берет файл без ошибок), можно както подправить, что б не делало этот перенос?

Отредактировано KyleshiK (Март 4, 2019 08:01:20)

Офлайн

#7 Март 4, 2019 09:27:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

rfc. json. grammar
Нет там никаких проблем с зависимостью от символов конца строки.

KyleshiK
что мешает серверу подтянуть себе этот файл локально с папки
А как сервер загружает себе файл в память?



Отредактировано py.user.next (Март 4, 2019 09:32:31)

Офлайн

#8 Март 4, 2019 09:38:30

KyleshiK
Зарегистрирован: 2019-02-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

py.user.next
rfc. json. grammarНет там никаких проблем с зависимостью от символов конца строки.

насколько я понимаю в этом куске:

def Playlistparser(self):
try:
s = requests.Session()
s.mount('file/', FileAdapter())
with s.get(config.url, headers=self.headers, proxies=config.proxies, stream=False, timeout=30) as playlist:
if playlist.status_code != 304:
if playlist.encoding is None: playlist.encoding = ‘utf-8’
self.headers = gevent.time.strftime('%a, %d %b %Y %H:%M:%S %Z', gevent.time.gmtime(self.playlisttime))
self.playlist = PlaylistGenerator(m3uchanneltemplate=config.m3uchanneltemplate)
self.picons = picons.logomap
self.channels = {}
m = requests.auth.hashlib.md5()
self.logger.info('Playlist %s downloaded' % config.url)
try:
for channel in playlist.json():
channel = name = channel.get('name', '')
channel = url = ‘acestream/%s’ % channel.get('url')
channel = channel.get('cat')
if not ‘logo’ in channel: channel = picons.logomap.get(name)
self.picons = channel

if url.startswith(('acestream/', ‘infohash/’)) \
or (url.startswith(('http/','https/')) and url.endswith(('.acelive', ‘.acestream’, ‘.acemedia’, ‘.torrent’))):
self.channels = url
channel = quote(ensure_str('%s.ts' % name),'')

self.playlist.addItem(channel)
m.update(name.encode('utf-8'))

except Exception as e:
self.logger.error(“Can't parse JSON! %s” % repr(e))
return

Отредактировано KyleshiK (Март 4, 2019 09:38:49)

Прикреплённый файлы:
attachment torrenttelik_plugin.py (6,7 KБ)

Офлайн

#9 Март 4, 2019 11:00:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Парсинг конкретных строк из json

А как файл создаётся на сервере? Какие права у него после создания? Ты проверь на простом скрипте каком-нибудь, читается ли созданный файл вообще.



Отредактировано py.user.next (Март 4, 2019 11:00:30)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version