A biblioteca Image Extractor é útil para ajudar o usuário a baixar qualquer tipo de imagem em qualquer data e hora pela internet. Essas imagens serão baixadas como um trabalho e informarão ao usuário que as imagens foram baixadas.
Muitas vezes precisamos de um monte de imagens para funcionar. Podemos considerar exemplos como treinar o modelo de aprendizado de máquina sobre imagens de gatos e cachorros ou ter centenas de lindos papéis de parede de desktop/móveis em nosso laptop com apenas um clique. Nesse cenário, precisamos de centenas de imagens imediatamente. Este problema pode ser resolvido usando a Biblioteca do Extrator de Imagens. Os seguintes casos de uso podem ser implementados:
$ pip install ImageExtractor
from flask import Flask
from flask_cors import cross_origin
from ImageExtractor . Extractor import ImageExtractor Class
import datetime
import threading
import time
import os
app = Flask ( __name__ )
class ThreadClass :
def __init__ ( self , req_id , time_to_sleep ,):
self . req_id = str ( req_id )
self . time_to_sleep = time_to_sleep
self . thread = threading . Thread ( target = self . sleep )
self . thread . start ()
def sleep ( self ):
try :
# Sleep for the given time
time . sleep ( self . time_to_sleep )
# Wait until the zip file is not ready
while not os . path . exists ( self . req_id + '_zipfile.zip' ):
print ( 'File not exists' )
time . sleep ( 5 )
print ( 'File exists now' )
time . sleep ( 30 )
# Deleting the file after 10 seconds
ImageExtractor Class . delete_file ( self . req_id )
print ( 'Files are deleted' )
except Exception as e :
print ( e )
# Home page route
@ app . route ( '/' , methods = [ 'GET' ])
@ cross_origin ()
def index ():
try :
# Creating the object of ImageExtractor Class
image_extractor = ImageExtractor Class ()
# Current datetime
current = datetime . datetime . now ()
# The scheduled datetime
date_inserted = current + datetime . timedelta ( minutes = 5 )
date_str = str ( date_inserted . year ) + '-' + str ( date_inserted . month ) + '-' + str ( date_inserted . day )
time_str = str ( date_inserted . hour ) + ':' + str ( date_inserted . minute )
req_id , time_to_sleep = image_extractor . schedule_job ( 'some_sample_query' , date_str , time_str , 54 )
# Time to sleep the thread
time_to_sleep = current + datetime . timedelta ( seconds = time_to_sleep )
total_seconds_sleep = time_to_sleep - datetime . datetime . now ()
# Total seconds to sleep the thread
total_seconds_sleep = int ( total_seconds_sleep . total_seconds ())
ThreadClass ( req_id , total_seconds_sleep )
return '<h1> req id is ' + str ( req_id ) + ' and time_to_sleep is ' + str ( total_seconds_sleep ) + ' seconds</h1>'
except Exception as e :
return "<h1> Error is " + str ( e ) + "</h1>"
if __name__ == '__main__' :
app . debug = True
app . run ()
E você está pronto para ir! Neste ponto, na data e hora indicadas, o download das imagens começará.
Quer contribuir? Ótimo!
Para corrigir um bug ou aprimorar um módulo existente, siga estas etapas:
git checkout -b new-feature
git commit -am " New feature added "
git push origin new-feature
Se você encontrar algum bug ou tiver alguma ideia sobre um novo recurso que pode ser implementado, você pode abrir um problema aqui ou pode nos enviar um e-mail diretamente para [email protected].
Inclua os exemplos de consultas e seus resultados correspondentes.
Cliente:
Servidor:
Se você tiver algum comentário, entre em contato conosco pelo e-mail [email protected]
Res - Não. O usuário pode simplesmente enviar o trabalho e continuar realizando outras tarefas. Assim que a tarefa terminar, o arquivo zip será criado no final do usuário.
Resp - Até 2.000 imagens podem ser baixadas de uma só vez. Se for necessário mais, podemos simplesmente enviar a consulta novamente.
Documentação de projeto de alto nível
Documentação de projeto de baixo nível
Estrutura de arame
Arquitetura
Licença MIT
Direitos autorais (c) [2021] [Shreyas Parab]
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM HIPÓTESE ALGUMA OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.