그래서 저는 Instaloader Python 라이브러리에서 수집한 이미지를 수집하여 제 웹사이트의 갤러리에 넣을 수 있는 코드를 작성하고 있습니다. 아무 문제 없이 이를 수집하고 표시했지만 이제 각 게시물에 대한 헤더를 구현하기 시작했고 문제가 발생했습니다.
라이브러리가 사진을 다운로드하는 방식은 컬렉션에 사진이 두 개 이상 있는 경우 컬렉션 내 이미지 위치를 기준으로 게시물에 _1, _2 등의 접미사를 추가하고 다음과 같이 .txt 파일을 제공하는 것입니다. 제목.
수집용 샘플 폴더 내용:
으아악단일 게시물이 잘 작동합니다 예:
으아악주 코드 블록:
으아악$arrayKey는 일반 단일 게시물에 컬렉션이 있는 경우 false를 반환합니다.
나는 이것이 (date)_(collectionposition).jpg를 읽기 전에 (date).txt를 읽는다고 가정하기 때문에 스크립트가 이러한 파일을 읽는 파일 순서와 관련이 있다고 믿습니다.
배열 항목이 이미 생성된 경우 일반적으로 헤더가 배열 데이터에 추가됩니다. 그렇지 않은 경우(예: _1, _2 등이 있는 경우) 배열은 아무것도 업데이트하지 않으며 오류도 발생하지 않습니다.
편집: 추가 문제 해결에서는 "날짜" 값을 기반으로 배열 키를 업데이트/확인하는 방식이 잘못되었음을 알 수 있습니다. 이러한 작업을 처리하는 올바른 방법을 찾을 수 있기를 바랍니다
이 작업이 예상대로 이루어지도록 수정할 수 있는 부분에 대한 안내를 주시면 감사하겠습니다!
먼저 코드를 공부해 보세요. 당신이 언급한 질문, 즉. 다음 줄:
으아악...Return
false
,因为处理.txt
文件时尚未创建带有日期的$array
条目。 (使用array_push
배열 멤버를 생성하는 논리는 코드 아래에 있습니다. )아직 정의되지 않은
즉,if/else
논리의 관련 부분으로 계속 이동하기 위한 간단한 수정: 으아악이면 기존 배열 멤버에 값을 계속 추가합니다. 그렇지 않으면 배열 멤버를 만듭니다.
또한 이미지를 처리할 때 처음으로 경고가 발생하는 문제가 있습니다.$arrayKey
不是false
으아악
이 작업은정의되지 않은 배열 키 'collection-size' 로 인해 실패합니다. 키가 아직 존재하지 않기 때문입니다. 예를 들어 배열 키에 대해 작업을 시도하기 전에 null 병합 연산자를 사용하여 "기본 0"을 설정하는 문제를 해결하세요. 으아악
만 사용하겠습니다. 예를 들어 날짜를 추출한 후 다음을 사용합니다.collection-size
이 댓글은 버그를 수정하지만 txt 또는 jpg의 첫 번째 인스턴스에서 "항목 생성"을 분리하는 것이 더 나을 것입니다. txt/jpg 특정 논리를 수행하기 전에 예상 키가 있는 빈 배열 멤버를 사용하십시오. 저는으아악
코드는 파일을 읽는 순서에 의존해서는 안 됩니다.$date
本身作为分组,这样您也可以摆脱array_search
그런 다음 일치하도록 나머지 코드를 수정하세요.주문이 보장되지 않습니다. 그렇지 않으면 항상 파일 목록을 먼저 일반 배열로 읽은 다음 정렬하고 특정 논리를 적용할 때 다시 반복할 수 있습니다. 단순화된 코드
실제 필요한 코드 양은 보유한 코드 양보다 훨씬 적습니다. 여기서는 당신을 위해 다듬었습니다. 귀하의 파일이 없으므로 다음은 더미 데이터입니다.
으아악또한
파일을 배열(= 파일 경로 목록)에 넣을 수도 있습니다.으아악
으아악glob
그런 다음 다음과 같이 반복합니다.얼마나 줄어드는지 확인하세요. 무슨 일이에요?
를 사용합니다!-
- 파일 이름의
등 "컬렉션 크기"는 무시합니다. 각 JPG에 +1만 추가하면 됩니다. -
를 사용합니다. -
!) -
결과:
으아악$date
作为数组的分组索引。不再有array_search
날짜별 기본 항목을 초기화합니다. 추가 검사나 조건이 필요하지 않습니다!_3
우리는nglob
和file_get_contents
而不是readdir
和fopen
파일 순서는 상관없습니다. (자유롭게 테스트하고shuffle($files)